From 339ccedc4008edcf1d0b4c62ee6578168f4f4eec Mon Sep 17 00:00:00 2001 From: jesusalvino <96534278+jesusalvino@users.noreply.github.com> Date: Mon, 19 Sep 2022 09:50:29 -0500 Subject: [PATCH 1/7] Fixing horizontal center (#13312) --- src/DynamoCoreWpf/Views/FileTrust/FileTrustWarning.xaml.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/DynamoCoreWpf/Views/FileTrust/FileTrustWarning.xaml.cs b/src/DynamoCoreWpf/Views/FileTrust/FileTrustWarning.xaml.cs index ee639665648..cb41ff75d12 100644 --- a/src/DynamoCoreWpf/Views/FileTrust/FileTrustWarning.xaml.cs +++ b/src/DynamoCoreWpf/Views/FileTrust/FileTrustWarning.xaml.cs @@ -96,6 +96,8 @@ private void FindPopupPlacementTarget() if (runSettingsViewModel.SelectedRunTypeItem.RunType == RunType.Manual) { popupPlacementTarget = runSettingsControl.RunButton; + double marginRight = 13; + HorizontalOffset = -((runSettingsControl.RunButton.Width / 2) - marginRight); } else { From 6bc26de5062606dd33664fd8e8a6782950f20bad Mon Sep 17 00:00:00 2001 From: jesusalvino <96534278+jesusalvino@users.noreply.github.com> Date: Mon, 3 Oct 2022 10:22:01 -0500 Subject: [PATCH 2/7] Fix Trusted Message behavior (#13355) * Fix Trusted Message behavior * Extract Business Logic as a function * Moving API to Preferences * Adding unit test --- .../Configuration/PreferenceSettings.cs | 50 ++++++++++++++++++- .../ViewModels/Core/DynamoViewModel.cs | 18 +++++++ .../ViewModels/Menu/TrustedPathViewModel.cs | 25 +++++++++- .../Views/FileTrust/FileTrustWarning.xaml.cs | 4 +- .../Views/Menu/PreferencesView.xaml.cs | 24 ++++++++- .../Configuration/PreferenceSettingsTests.cs | 25 +++++++++- 6 files changed, 136 insertions(+), 10 deletions(-) diff --git a/src/DynamoCore/Configuration/PreferenceSettings.cs b/src/DynamoCore/Configuration/PreferenceSettings.cs index ae1aad2bf56..9a8bcfe85a6 100644 --- a/src/DynamoCore/Configuration/PreferenceSettings.cs +++ b/src/DynamoCore/Configuration/PreferenceSettings.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -900,6 +900,52 @@ public bool IsTrustedLocation(string location) } } + + /// + /// Different ways to ask the user about display the Trusted location + /// + public enum AskForTrustedLocationResult + { + /// + /// Ask for the Trusted location + /// + Ask, + /// + /// Don't ask about the Trusted location + /// + DontAsk, + /// + /// Unable to ask about the Trusted location + /// + UnableToAsk + } + + /// + /// AskForTrustedLocation function + /// + /// + /// + /// + /// + /// + /// + public static AskForTrustedLocationResult AskForTrustedLocation(bool isOpenedFile, bool isFileInTrustedLocation, bool isHomeSpace, bool isShowStartPage, bool isDisableTrustWarnings) + { + AskForTrustedLocationResult result = AskForTrustedLocationResult.UnableToAsk; + if (isOpenedFile) + { + if (isHomeSpace && !isShowStartPage && !isDisableTrustWarnings && !isFileInTrustedLocation) + { + result = AskForTrustedLocationResult.Ask; + } + else + { + result = AskForTrustedLocationResult.DontAsk; + } + } + return result; + } + #endregion #region ILogSource @@ -915,4 +961,4 @@ internal void OnMessageLogged(ILogMessage msg) } #endregion } -} \ No newline at end of file +} diff --git a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs index 1404e4332c1..360814b82e8 100644 --- a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs @@ -3097,6 +3097,24 @@ private bool AskUserToSaveWorkspacesOrCancel(bool allowCancel = true) return true; } + /// + /// Check if the current file is located in a Trusted Location in order to display to the User the proper message + /// + public void CheckCurrentFileInTrustedLocation() + { + PreferenceSettings.AskForTrustedLocationResult askToTheUser = + PreferenceSettings.AskForTrustedLocation(CurrentSpaceViewModel.FileName.Length > 0, + CurrentSpaceViewModel.FileName.Length > 0 ? PreferenceSettings.IsTrustedLocation(Path.GetDirectoryName(CurrentSpaceViewModel.FileName)) : false, + (currentWorkspaceViewModel?.IsHomeSpace ?? false), + ShowStartPage, + model.PreferenceSettings.DisableTrustWarnings); + + if (askToTheUser == PreferenceSettings.AskForTrustedLocationResult.Ask) { + + FileTrustViewModel.AllowOneTimeTrust = false; + } + } + #endregion } } diff --git a/src/DynamoCoreWpf/ViewModels/Menu/TrustedPathViewModel.cs b/src/DynamoCoreWpf/ViewModels/Menu/TrustedPathViewModel.cs index 4c2e6aecf72..00d39315572 100644 --- a/src/DynamoCoreWpf/ViewModels/Menu/TrustedPathViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Menu/TrustedPathViewModel.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Windows; @@ -119,9 +119,10 @@ private void InsertPath() return; } - TrustedLocations.Insert(TrustedLocations.Count, args.Path); + TrustedLocations.Insert(TrustedLocations.Count, args.Path); CommitChanges(null); RaiseCanExecuteChanged(); + RaisePropertyChanged(nameof(TrustedPathViewModel.Action.Insert)); } private void ShowFileDialog(TrustedPathEventArgs e) @@ -154,6 +155,7 @@ private void UpdatePathAt(int index) TrustedLocations[index] = args.Path; CommitChanges(null); + RaisePropertyChanged(nameof(TrustedPathViewModel.Action.Update)); } private void RemovePathAt(int index) @@ -161,6 +163,7 @@ private void RemovePathAt(int index) TrustedLocations.RemoveAt(index); CommitChanges(null); RaiseCanExecuteChanged(); + RaisePropertyChanged(nameof(TrustedPathViewModel.Action.Remove)); } private void CommitChanges(object param) @@ -172,5 +175,23 @@ internal void InitializeTrustedLocations() { TrustedLocations = new ObservableCollection(settings?.TrustedLocations ?? new List()); } + /// + /// Actions the user can do to the model since it's a List + /// + public struct Action + { + /// + /// Insert a new item + /// + public string Insert; + /// + /// Update an existing Item + /// + public string Update; + /// + /// Remove an Item + /// + public string Remove; + } } } diff --git a/src/DynamoCoreWpf/Views/FileTrust/FileTrustWarning.xaml.cs b/src/DynamoCoreWpf/Views/FileTrust/FileTrustWarning.xaml.cs index cb41ff75d12..cf936893df1 100644 --- a/src/DynamoCoreWpf/Views/FileTrust/FileTrustWarning.xaml.cs +++ b/src/DynamoCoreWpf/Views/FileTrust/FileTrustWarning.xaml.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Windows; using System.Windows.Controls.Primitives; using System.Windows.Threading; @@ -162,8 +162,6 @@ private void YesButton_Click(object sender, RoutedEventArgs e) (dynViewModel.HomeSpaceViewModel as HomeWorkspaceViewModel).CurrentNotificationMessage = Properties.Resources.RunReady; (dynViewModel.HomeSpaceViewModel as HomeWorkspaceViewModel).CurrentNotificationLevel = NotificationLevel.Mild; } - - fileTrustWarningViewModel.DynFileDirectoryName = string.Empty; } /// diff --git a/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml.cs b/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml.cs index 39431cc3a56..215b295c1a5 100644 --- a/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml.cs +++ b/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml.cs @@ -1,4 +1,5 @@ -using System; +using System; +using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; @@ -76,6 +77,23 @@ private void SetupPreferencesViewModel(DynamoViewModel dynamoViewModel) // Init all package filters dynamoViewModel.PreferencesViewModel.InitPackageListFilters(); + + dynamoViewModel.PreferencesViewModel.TrustedPathsViewModel.PropertyChanged += TrustedPathsViewModel_PropertyChanged; + } + + /// + /// Evaluates if the user interacts over the Trusted Locations + /// + /// + /// + private void TrustedPathsViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) + { + List actions = typeof(TrustedPathViewModel.Action).GetFields().Select(a => a.Name).ToList(); + + if (actions.Contains(e.PropertyName)) + { + dynViewModel.CheckCurrentFileInTrustedLocation(); + } } /// @@ -112,6 +130,8 @@ private void CloseButton_Click(object sender, RoutedEventArgs e) RunGraphWhenScaleFactorUpdated(); + dynViewModel.PreferencesViewModel.TrustedPathsViewModel.PropertyChanged -= TrustedPathsViewModel_PropertyChanged; + Close(); } @@ -370,4 +390,4 @@ private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e e.Handled = true; } } -} \ No newline at end of file +} diff --git a/test/DynamoCoreTests/Configuration/PreferenceSettingsTests.cs b/test/DynamoCoreTests/Configuration/PreferenceSettingsTests.cs index 1db0f8544df..19e88e2bad4 100644 --- a/test/DynamoCoreTests/Configuration/PreferenceSettingsTests.cs +++ b/test/DynamoCoreTests/Configuration/PreferenceSettingsTests.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using Dynamo.Configuration; using Dynamo.Models; @@ -199,5 +199,28 @@ public void TestSerializationTrustedLocations() Assert.IsTrue(settingsLoaded.IsTrustedLocation(Path.GetTempPath())); } + + [Test] + [Category("UnitTests")] + public void TestAskForTrustedLocation() + { + //Settings + bool isOpenedFile = true; + bool isHomeSpace = true; + bool isShowStartPage = false; + bool isFileInTrustedLocation = false; + bool isDisableTrustWarnings = false; + + // getting result + PreferenceSettings.AskForTrustedLocationResult result = PreferenceSettings.AskForTrustedLocation( + isOpenedFile, + isFileInTrustedLocation, + isHomeSpace, + isShowStartPage, + isDisableTrustWarnings); + + // checking the result + Assert.IsTrue(result == PreferenceSettings.AskForTrustedLocationResult.Ask, $"Conditions info: is opened file : {isOpenedFile} | is file in trusted location : {isFileInTrustedLocation} | is home space : {isHomeSpace} | is show Start page : {isShowStartPage} | is disable trust warnings : {isDisableTrustWarnings}"); + } } } From b3fbda8469ca1263669c142021d609680e286b49 Mon Sep 17 00:00:00 2001 From: Craig Long Date: Tue, 15 Nov 2022 14:46:49 -0700 Subject: [PATCH 3/7] Leave RenderPackage data intact when passed to AggregateRenderPackages (#13437) * Leave RP data intact * Fix tests * Remove unnessary code * Spelling typos and clean up * clean up * clean up * Add regression test for render package mutation. * Unsubscribe from event. * Add image comparison test for render bug. * Fix test image size. Co-authored-by: Craig Long Co-authored-by: Trygve Wastvedt --- .../Rendering/HelixRenderPackage.cs | 2 +- .../Watch3D/HelixWatch3DViewModel.cs | 233 ++- .../HelixImageComparisonTests.cs | 13 +- .../HelixWatch3DViewModelTests.cs | 40 +- .../visualization/MultipleTextureMaps.dyn | 1274 +++++++++++++++++ .../RenderInstancingWithEdges.png | Bin 0 -> 294511 bytes 6 files changed, 1497 insertions(+), 65 deletions(-) create mode 100644 test/core/visualization/MultipleTextureMaps.dyn create mode 100644 test/core/visualization/imageComparison/referenceImages/RenderInstancingWithEdges.png diff --git a/src/DynamoCoreWpf/Rendering/HelixRenderPackage.cs b/src/DynamoCoreWpf/Rendering/HelixRenderPackage.cs index 79a3ad9d032..5df6dd5287e 100644 --- a/src/DynamoCoreWpf/Rendering/HelixRenderPackage.cs +++ b/src/DynamoCoreWpf/Rendering/HelixRenderPackage.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using Autodesk.DesignScript.Interfaces; diff --git a/src/DynamoCoreWpf/ViewModels/Watch3D/HelixWatch3DViewModel.cs b/src/DynamoCoreWpf/ViewModels/Watch3D/HelixWatch3DViewModel.cs index 4c781b2fe0e..fc0698ee4d3 100644 --- a/src/DynamoCoreWpf/ViewModels/Watch3D/HelixWatch3DViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Watch3D/HelixWatch3DViewModel.cs @@ -1761,6 +1761,9 @@ internal virtual void AggregateRenderPackages(IEnumerable pa var l = rp.Lines; if (l.Positions.Any()) { + var processedLineVertexCount = 0; + var lineVertexRangesToRemove = new List<(int start, int end)>(); + id = baseId + LinesKey; //If we are using IInstancingRenderPackage data then we need to create a unique Geometry3D object @@ -1771,45 +1774,56 @@ internal virtual void AggregateRenderPackages(IEnumerable pa && DynamoModel.FeatureFlags?.CheckFeatureFlag("graphics-primitive-instancing", false) == true) { //For each range of line vertices add the line data and instances to the scene - var lineVertexCountTotal = 0; var j = 0; foreach (var item in rp.LineVertexRangesAssociatedWithInstancing) { var range = item.Value; var startIndex = range.Item1; //Start line vertex index var count = range.Item2 - range.Item1 + 1; //Count of line vertices - var uniqueId = baseId + ":" + j + LinesKey; + var uniqueId = baseId + ":" + j + LinesKey + "_instance"; List instances; if (rp.instanceTransforms.TryGetValue(item.Key, out instances)) { - AddLineData(uniqueId, rp, startIndex, count, drawDead, baseId, instances); + AddLineData(uniqueId, l, startIndex, count, drawDead, baseId, rp.Transform, rp.IsSelected, rp.Mesh.Positions.Any(), instances); } //Track cumulative total of line vertices added. - lineVertexCountTotal += count; + processedLineVertexCount += count; j++; } - //If all the line regions had instancing data then we are done with the line data. - if (lineVertexCountTotal == l.Positions.Count && !rp.Mesh.Positions.Any()) - { - continue; - } + //Add ranges of line geometry to exclude for regions already generated related to instancing. + lineVertexRangesToRemove.AddRange(rp.LineVertexRangesAssociatedWithInstancing.Values.ToList()); + } - //Otherwise, clean up the remaining line geometry data in the render package to exclude the regions already generated. - var vertexRanges = - new List<(int start, int end)>(rp.LineVertexRangesAssociatedWithInstancing.Values.ToList()); + //If all the line vertex data has been processed we move on to mesh data. + if (processedLineVertexCount != l.Positions.Count) + { + //If line vertex ranges have been utilized previously for instantiating instanced geometry or multiple texture maps only process the remaining line data + //We clone the line object so that we do not modify the render package data. + if (lineVertexRangesToRemove.Any()) + { + var lCopy = CloneLineGeometry(l); + + RemoveLineGeometryByRange(lineVertexRangesToRemove, lCopy); - RemoveLineGeometryByRange(vertexRanges, l); + AddLineData(id, lCopy, 0, lCopy.Positions.Count, drawDead, baseId, rp.Transform, rp.IsSelected, rp.Mesh.Positions.Any()); + } + else + { + AddLineData(id, l, 0, l.Positions.Count, drawDead, baseId, rp.Transform, rp.IsSelected, rp.Mesh.Positions.Any()); + } } - - AddLineData(id, rp, 0, l.Positions.Count, drawDead, baseId); } var m = rp.Mesh; + if (!m.Positions.Any()) continue; + var processedMeshVertexCount = 0; + var meshVertexRangesToRemove = new List<(int start, int end)>(); + //If we are using the legacy colors array for texture map we need to create a new Geometry3d object with a unique key. id = (rp.Colors != null ? rp.Description : baseId) + MeshKey; @@ -1820,29 +1834,29 @@ internal virtual void AggregateRenderPackages(IEnumerable pa if (rp.MeshVerticesRangesAssociatedWithTextureMaps.Any()) { //For each range of mesh vertices add the mesh data and texture map to the scene - var meshVertexCountTotal = 0; for (var j = 0; j < rp.MeshVerticesRangesAssociatedWithTextureMaps.Count; j++) { var range = rp.MeshVerticesRangesAssociatedWithTextureMaps[j]; var startIndex = range.Item1; //Start mesh vertex index var count = range.Item2 - range.Item1 + 1; //Count of mesh vertices - var uniqueId = baseId + ":" + j + MeshKey; + var uniqueId = baseId + ":" + j + MeshKey + "_texture"; - AddMeshData(uniqueId, rp,startIndex,count, drawDead, baseId, rp.TextureMapsList[j], rp.TextureMapsStrideList[j]); + AddMeshData(uniqueId, m,startIndex,count, drawDead, baseId, rp.TextureMapsList[j], rp.TextureMapsStrideList[j], + rp.Transform, rp.RequiresPerVertexColoration); //Track cumulative total of mesh vertices added. - meshVertexCountTotal+= count; + processedMeshVertexCount+= count; } - //If all the mesh regions had texture map data then we are done with mesh data. - if (meshVertexCountTotal == m.Positions.Count) - { continue;} + //If all the mesh regions had texture map data then we are done with mesh data and this Renderpackage. + if (processedMeshVertexCount == m.Positions.Count) + { + continue; + } - //Otherwise, clean up the remaining mesh geometry data in the render package to exclude the regions already generated. - var vertexRanges = - rp.MeshVerticesRangesAssociatedWithTextureMaps.Select(x=>(x.Item1,x.Item2)).ToList(); - - RemoveMeshGeometryByRange(vertexRanges, m); + //Otherwise, add ranges of mesh geometry to exclude for regions already generated related to texture maps. + meshVertexRangesToRemove.AddRange( + rp.MeshVerticesRangesAssociatedWithTextureMaps.Select(x=>(x.Item1,x.Item2)).ToList()); } //If we are using IInstancingRenderPackage data then we need to create a unique Geometry3D object @@ -1853,45 +1867,97 @@ internal virtual void AggregateRenderPackages(IEnumerable pa && DynamoModel.FeatureFlags?.CheckFeatureFlag("graphics-primitive-instancing", false) == true) { //For each range of mesh vertices add the mesh data and instances to the scene - var meshVertexCountTotal = 0; var j = 0; foreach (var item in rp.MeshVertexRangesAssociatedWithInstancing) { var range = item.Value; var startIndex = range.start; //Start mesh vertex index var count = range.end - range.start + 1; //Count of mesh vertices - var uniqueId = baseId + ":" + j + MeshKey; + var uniqueId = baseId + ":" + j + MeshKey + "_instance"; List instances; if (rp.instanceTransforms.TryGetValue(item.Key, out instances)) { - AddMeshData(uniqueId, rp, startIndex, count, drawDead, baseId, rp.Colors, - rp.ColorsStride, instances); + AddMeshData(uniqueId, m, startIndex, count, drawDead, baseId, rp.Colors, + rp.ColorsStride, rp.Transform, rp.RequiresPerVertexColoration, instances); } //Track cumulative total of mesh vertices added. - meshVertexCountTotal += count; + processedMeshVertexCount += count; j++; } - //If all the mesh regions had instance data then we are done with mesh data. - if (meshVertexCountTotal == m.Positions.Count) + //If all the mesh regions had instance data then we are done with mesh data and this Renderpackage. + if (processedMeshVertexCount == m.Positions.Count) { continue; } - //Otherwise, clean up the remaining mesh geometry data in the render package to exclude the regions already generated. - var vertexRanges = - new List<(int start, int end)>(rp.MeshVertexRangesAssociatedWithInstancing.Values.ToList()); - - RemoveMeshGeometryByRange(vertexRanges, m); + //Otherwise, add ranges of mesh geometry to exclude for regions already generated related to instancing. + meshVertexRangesToRemove.AddRange(rp.MeshVertexRangesAssociatedWithInstancing.Values.ToList()); } - AddMeshData(id, rp, 0, m.Positions.Count, drawDead, baseId, rp.Colors, rp.ColorsStride); + //If mesh vertex ranges have been utilized previously for instantiating instanced geometry or multiple texture maps we only process the remaining mesh data + //We clone the mesh object so that we do not modify the render package data. + if (meshVertexRangesToRemove.Any()) + { + var mCopy = CloneMeshGeometry(m); + + RemoveMeshGeometryByRange(meshVertexRangesToRemove, mCopy); + + AddMeshData(id, mCopy, 0, mCopy.Positions.Count, drawDead, baseId, rp.Colors, rp.ColorsStride, + rp.Transform, rp.RequiresPerVertexColoration); + } + else + { + AddMeshData(id, m, 0, m.Positions.Count, drawDead, baseId, rp.Colors, rp.ColorsStride, + rp.Transform, rp.RequiresPerVertexColoration); + } } } } + /// + /// Duplicate the mesh object + /// + /// + /// + private static MeshGeometry3D CloneMeshGeometry(MeshGeometry3D m) + { + var copy = new MeshGeometry3D() + { + Positions = new Vector3Collection(m.Positions), + Indices = new IntCollection(m.Indices), + Colors = new Color4Collection(m.Colors), + Normals = new Vector3Collection(m.Normals), + TextureCoordinates = new Vector2Collection(m.TextureCoordinates) + }; + + return copy; + } + + /// + /// Duplicate the point object + /// + /// + /// + private static LineGeometry3D CloneLineGeometry(LineGeometry3D l) + { + var copy = new LineGeometry3D() + { + Positions = new Vector3Collection(l.Positions), + Indices = new IntCollection(l.Indices), + Colors = new Color4Collection(l.Colors) + }; + + return copy; + } + + /// + /// Remove mesh vertex data from a MeshGeometry object by a set of vertices ranges + /// + /// List of vertices ranges to remove + /// mesh object private static void RemoveMeshGeometryByRange(List<(int start, int end)> vertexRanges, MeshGeometry3D m) { //First sort the range data @@ -1916,6 +1982,11 @@ private static void RemoveMeshGeometryByRange(List<(int start, int end)> vertexR m.Indices = newIndices; } + /// + /// Remove line vertex data from a LineGeometry object by a set of vertices ranges + /// + /// List of vertices ranges to remove + /// line object private static void RemoveLineGeometryByRange(List<(int start, int end)> verticesRange, LineGeometry3D l) { //First sort the range data @@ -1945,8 +2016,22 @@ private static void RemoveLineGeometryByRange(List<(int start, int end)> vertice } } - private void AddMeshData(string id, HelixRenderPackage rp, - int index, int count, bool drawDead, string baseId, IEnumerable colors, int stride, List instances = null) + /// + /// Add or update specific mesh geometry to the Element3DDictionary for the scene + /// + /// Unique id of the mesh geometry in the scene + /// Mesh data + /// Start index of the mesh vertices to process + /// Count of mesh vertices to add + /// Bool overriding the transparency of the added mesh to 20% visible. + /// Name of the mesh object in the scene. Can be used to differentiate geometry like the grid or axis + /// A collection containing all mesh vertex colors as r1,g1,b1,a1,r2,g2,b2,a2... + /// The size of one dimension of the Colors collection + /// A 4x4 matrix that is used to transform all mesh geometry + /// Whether the individual vertices should be colored using the data in the corresponding arrays + /// A Collection of 4x4 matrix that is used to define all instances of the mesh geometry + private void AddMeshData(string id, MeshGeometry3D m, + int index, int count, bool drawDead, string name, IEnumerable colors, int stride, double[] transform, bool requiresPerVertexColoration, List instances = null) { FastList mPositions; FastList mColors; @@ -1954,8 +2039,7 @@ private void AddMeshData(string id, HelixRenderPackage rp, FastList mTextureCoordinates; FastList mIndices; - var m = rp.Mesh; - if (index == 0 && count == rp.Mesh.Positions.Count) + if (index == 0 && count == m.Positions.Count) { mPositions = m.Positions; mColors = m.Colors; @@ -1980,7 +2064,7 @@ private void AddMeshData(string id, HelixRenderPackage rp, } else { - meshGeometry3D = CreateDynamoGeometryModel3D(rp, true, colors, stride); + meshGeometry3D = CreateDynamoGeometryModel3D(transform, requiresPerVertexColoration, true, colors, stride); Element3DDictionary.Add(id, meshGeometry3D); } @@ -2018,7 +2102,7 @@ private void AddMeshData(string id, HelixRenderPackage rp, } meshGeometry3D.Geometry = mesh; - meshGeometry3D.Name = baseId; + meshGeometry3D.Name = name; meshGeometry3D.Tag = id; if (instances != null) @@ -2027,14 +2111,26 @@ private void AddMeshData(string id, HelixRenderPackage rp, } } - private void AddLineData(string id, HelixRenderPackage rp, int index, int count, bool drawDead, string baseId, List instances = null) + /// + /// Add or update specific line geometry to the Element3DDictionary for the scene + /// + /// Unique id of the mesh geometry in the scene + /// Line data + /// Start index of the line vertices to process + /// Count of line vertices to add + /// Bool overriding the transparency of the added mesh to 20% visible. + /// Name of the mesh object in the scene. Can be used to differentiate geometry like the grid or axis + /// A 4x4 matrix that is used to transform all mesh geometry + /// Bool defining the selected state + /// Bool defining if this line geometry is rendered as independent vs edge lines + /// A Collection of 4x4 matrix that is used to define all instances of the mesh geometry + private void AddLineData(string id, LineGeometry3D l, int index, int count, bool drawDead, string name, double[] transform, bool isSelected, bool edgeGeometry, List instances = null) { FastList lPositions; FastList lColors; FastList lIndices; - var l = rp.Lines; - if (index == 0 && count == rp.Lines.Positions.Count) + if (index == 0 && count == l.Positions.Count) { lPositions = l.Positions; lColors = l.Colors; @@ -2059,7 +2155,7 @@ private void AddLineData(string id, HelixRenderPackage rp, int index, int count, { // If the package contains mesh vertices, then the lines represent the // edges of meshes. Draw them with a different thickness. - lineGeometry3D = CreateLineGeometryModel3D(rp, rp.MeshVertices.Any() ? 0.5 : 1.0); + lineGeometry3D = CreateLineGeometryModel3D(transform, isSelected, edgeGeometry ? 0.5 : 1.0); Element3DDictionary.Add(id, lineGeometry3D); } @@ -2086,7 +2182,7 @@ private void AddLineData(string id, HelixRenderPackage rp, int index, int count, lineSet.Indices.AddRange(lIndices.Select(i => i + adjustment)); lineGeometry3D.Geometry = lineSet; - lineGeometry3D.Name = baseId; + lineGeometry3D.Name = name; if (instances != null) { @@ -2174,7 +2270,7 @@ private bool UpdateGeometryModelForSpecialRenderPackage(HelixRenderPackage rp, s var manipulator = model as DynamoGeometryModel3D; if (null == manipulator) { - manipulator = CreateDynamoGeometryModel3D(rp, false); + manipulator = CreateDynamoGeometryModel3D(rp.Transform, rp.RequiresPerVertexColoration, false); AttachedProperties.SetIsSpecialRenderPackage(manipulator, true); } @@ -2195,7 +2291,7 @@ private bool UpdateGeometryModelForSpecialRenderPackage(HelixRenderPackage rp, s var centerline = model as DynamoLineGeometryModel3D; if (null == centerline) { - centerline = CreateLineGeometryModel3D(rp, 0.3, false); + centerline = CreateLineGeometryModel3D(rp.Transform, rp.IsSelected, 0.3, false); AttachedProperties.SetIsSpecialRenderPackage(centerline, true); } centerline.Geometry = rp.Lines; @@ -2205,7 +2301,7 @@ private bool UpdateGeometryModelForSpecialRenderPackage(HelixRenderPackage rp, s var plane = model as DynamoLineGeometryModel3D; if (null == plane) { - plane = CreateLineGeometryModel3D(rp, 0.7, false); + plane = CreateLineGeometryModel3D(rp.Transform, rp.IsSelected, 0.7, false); AttachedProperties.SetIsSpecialRenderPackage(plane, true); } plane.Geometry = rp.Lines; @@ -2323,15 +2419,24 @@ private void CreateOrUpdateDisplayLabels(string nodeId) } } - private DynamoGeometryModel3D CreateDynamoGeometryModel3D(HelixRenderPackage rp, bool isHitTestVisible = true, IEnumerable colors = null, int colorStride = 0) + /// + /// Create the Mesh Geometry Model object for the scene + /// + /// A 4x4 matrix that is used to transform all mesh geometry + /// Whether or not the individual vertices should be colored using the data in the corresponding arrays + /// Boolean determine if the geometry is hit test visible in the scene + /// A collection containing all mesh vertex colors as r1,g1,b1,a1,r2,g2,b2,a2... + /// The size of one dimension of the Colors collection + /// + private DynamoGeometryModel3D CreateDynamoGeometryModel3D(double[] transform, bool requiresPerVertexColoration, bool isHitTestVisible = true, IEnumerable colors = null, int colorStride = 0) { var meshGeometry3D = new DynamoGeometryModel3D() { - Transform = new MatrixTransform3D(rp.Transform.ToMatrix3D()), + Transform = new MatrixTransform3D(transform.ToMatrix3D()), Material = WhiteMaterial, IsHitTestVisible = isHitTestVisible, - RequiresPerVertexColoration = rp.RequiresPerVertexColoration, + RequiresPerVertexColoration = requiresPerVertexColoration, DepthBias = DepthBiasMesh }; @@ -2365,17 +2470,25 @@ private DynamoGeometryModel3D CreateDynamoGeometryModel3D(HelixRenderPackage rp, return meshGeometry3D; } - private DynamoLineGeometryModel3D CreateLineGeometryModel3D(HelixRenderPackage rp, double thickness = 1.0, + /// + /// Create the Line Geometry Model object for the scene + /// + /// A 4x4 matrix that is used to transform all mesh geometry + /// Bool defining the selected state + /// Thickness of the line geometry + /// Boolean determine if the geometry is hit test visible in the scene + /// + private DynamoLineGeometryModel3D CreateLineGeometryModel3D(double[] transform, bool isSelected, double thickness = 1.0, bool isHitTestVisible = true) { var lineGeometry3D = new DynamoLineGeometryModel3D() { //Do not set Geometry here - Transform = new MatrixTransform3D(rp.Transform.ToMatrix3D()), + Transform = new MatrixTransform3D(transform.ToMatrix3D()), Color = Colors.White, Thickness = thickness, IsHitTestVisible = isHitTestVisible, - IsSelected = rp.IsSelected, + IsSelected = isSelected, DepthBias=DepthBiasLine, }; return lineGeometry3D; diff --git a/src/VisualizationTests/HelixImageComparisonTests.cs b/src/VisualizationTests/HelixImageComparisonTests.cs index afcf0303f11..58acf9ef075 100644 --- a/src/VisualizationTests/HelixImageComparisonTests.cs +++ b/src/VisualizationTests/HelixImageComparisonTests.cs @@ -1,4 +1,4 @@ - + //UNCOMMENT THIS DEFINE TO UPDATE THE REFERENCE IMAGES. //#define UPDATEIMAGEDATA //UNCOMMENT TO SAVE DEBUG IMAGES. @@ -334,6 +334,17 @@ public void RenderMeshInstances_noInstanceData() RunCurrentModel(); RenderCurrentViewAndCompare(MethodBase.GetCurrentMethod().Name); } + [Test] + public void RenderInstancingWithEdges() + { + // Regression test for DYN-5329: + // Rendering instances and multiple texture maps fails when edges are on. + + OpenVisualizationTest("MultipleTextureMaps.dyn"); + ViewModel.RenderPackageFactoryViewModel.ShowEdges = true; + RunCurrentModel(); + RenderCurrentViewAndCompare(MethodBase.GetCurrentMethod().Name); + } #endregion diff --git a/src/VisualizationTests/HelixWatch3DViewModelTests.cs b/src/VisualizationTests/HelixWatch3DViewModelTests.cs index 3a5eae27125..0bb0267706b 100644 --- a/src/VisualizationTests/HelixWatch3DViewModelTests.cs +++ b/src/VisualizationTests/HelixWatch3DViewModelTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Drawing; using System.IO; @@ -9,11 +9,13 @@ using System.Windows.Input; using System.Windows.Media.Media3D; using System.Xml; +using CoreNodeModels; using CoreNodeModels.Input; using Dynamo; using Dynamo.Controls; using Dynamo.Graph; using Dynamo.Graph.Nodes; +using Dynamo.Graph.Notes; using Dynamo.Graph.Workspaces; using Dynamo.Models; using Dynamo.Scheduler; @@ -22,6 +24,8 @@ using Dynamo.Utilities; using Dynamo.ViewModels; using Dynamo.Views; +using Dynamo.Visualization; +using Dynamo.Wpf.Rendering; using Dynamo.Wpf.ViewModels.Watch3D; using DynamoCoreWpfTests.Utility; using DynamoShapeManager; @@ -1164,7 +1168,37 @@ public void CanTagGeometryWhenClickingArrayItemInWatchNode() tagGeometryWhenClickingItem(new[] { 0 }, 11, "Watch", n => n.ViewModel.NodeModel.InPorts[0].Connectors[0].Start.Owner); } - + + [Test] + [Category("RegressionTests")] + public void AggregateRenderPackagesDoesntMutateRenderPackage() + { + // Regression test for DYN-5329: + // HelixWatch3DViewModel.AggregateRenderPackages event handler shouldn't mutate render packages. + + OpenVisualizationTest("MultipleTextureMaps.dyn"); + + var output = ViewModel.CurrentSpace.NodeFromWorkspace(Guid.Parse("04fcc9b7f80b43c99923b0dac8930e77")); + + output.RenderPackagesUpdated += TestRenderPackageUpdate; + + output.RequestVisualUpdateAsync(ViewModel.Model.Scheduler, ViewModel.Model.EngineController, new HelixRenderPackageFactory(), true); + } + + private void TestRenderPackageUpdate(NodeModel nodeModel, RenderPackageCache renderPackages) { + nodeModel.RenderPackagesUpdated -= TestRenderPackageUpdate; + + if (renderPackages.Packages.FirstOrDefault() is HelixRenderPackage package) + { + // The graph output contains 168 mesh vertices. + // Before DYN-5329 we removed the parts of the mesh containing multiple texture maps after adding them to the scene. + Assert.AreEqual(168, package.Mesh.Positions.Count); + } else + { + throw new Exception("Could not find HelixRenderPackage?"); + } + } + private async void tagGeometryWhenClickingItem(int[] indexes, int expectedNumberOfLabels, string nodeName, Func getGeometryOwnerNode, bool expandPreviewBubble = false) { @@ -1289,7 +1323,7 @@ public void InstancedMeshesAndLinesAreAddedToBackGroundPreviewForEachMatrixWhenS Assert.AreEqual(0, BackgroundPreviewGeometry.NumberOfVisibleCurves()); ViewModel.RenderPackageFactoryViewModel.ShowEdges = true; //this graph displays a grid, cones, cone edges, cube instances, cube edge instances. - Assert.AreEqual(3, BackgroundPreviewGeometry.NumberOfVisibleCurves()); + Assert.AreEqual(2, BackgroundPreviewGeometry.NumberOfVisibleCurves()); //cone and mesh Assert.AreEqual(2, BackgroundPreviewGeometry.NumberOfVisibleMeshes()); diff --git a/test/core/visualization/MultipleTextureMaps.dyn b/test/core/visualization/MultipleTextureMaps.dyn new file mode 100644 index 00000000000..3e8831c712a --- /dev/null +++ b/test/core/visualization/MultipleTextureMaps.dyn @@ -0,0 +1,1274 @@ +{ + "Uuid": "968ea36c-4a68-475c-a639-f2f65de810d7", + "IsCustomNode": false, + "Description": null, + "Name": "MultipleTextureMaps", + "ElementResolver": { + "ResolutionMap": { + "Point": { + "Key": "Autodesk.DesignScript.Geometry.Point", + "Value": "ProtoGeometry.dll" + } + } + }, + "Inputs": [], + "Outputs": [], + "Nodes": [ + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Modifiers.GeometryColor.BySurfaceColors@Autodesk.DesignScript.Geometry.Surface,DSCore.Color[][]", + "Id": "7a30cde97aeb4653baa1e391943536af", + "Inputs": [ + { + "Id": "205c9062e2d94da38064f3a507afb75c", + "Name": "surface", + "Description": "The surface on which to apply the colors.\n\nSurface", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "eb61c7347db044868c02b1d2ed034535", + "Name": "colors", + "Description": "A two dimensional list of Colors. The list of colors must be square. Attempting to pass a jagged array will result in an exception.\n\nColor[][]\nDefault value : [[DSCore.Color.ByARGB(255, 255, 0, 0), DSCore.Color.ByARGB(255, 255, 255, 0)], [DSCore.Color.ByARGB(255, 0, 255, 255), DSCore.Color.ByARGB(255, 0, 0, 255)]]", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "19cbd8c4801148478b76e78fec7e81d7", + "Name": "GeometryColor", + "Description": "A Display object.", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Display color values on a surface. The colors provided are converted internally to an image texture which is mapped to the surface.\n\nGeometryColor.BySurfaceColors (surface: Surface, colors: Color[][] = [[DSCore.Color.ByARGB(255, 255, 0, 0), DSCore.Color.ByARGB(255, 255, 255, 0)], [DSCore.Color.ByARGB(255, 0, 255, 255), DSCore.Color.ByARGB(255, 0, 0, 255)]]): GeometryColor" + }, + { + "ConcreteType": "CoreNodeModels.CreateList, CoreNodeModels", + "VariableInputPorts": true, + "NodeType": "ExtensionNode", + "Id": "04fcc9b7f80b43c99923b0dac8930e77", + "Inputs": [ + { + "Id": "8e449f4f7f374ec29a119d8efb08e02a", + "Name": "item0", + "Description": "Item Index #0", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "44b7037048114a1ab8268abe1aa8cb1b", + "Name": "item1", + "Description": "Item Index #1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "81c7a9b08e55434e8b5635da7d156f8a", + "Name": "item2", + "Description": "Item Index #2", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "1bf1f86df3b844448baca68fe3dedce4", + "Name": "item3", + "Description": "Item Index #3", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "ccf5f4a2deb64ba9b4505a6410ba197a", + "Name": "list", + "Description": "A list (type: var[]..[])", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Makes a new list out of the given inputs" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Circle.ByCenterPointRadius@Autodesk.DesignScript.Geometry.Point,double", + "Id": "845b4ac8feb34d08aca14dc0f7aefccd", + "Inputs": [ + { + "Id": "aa77dc78ed89428fb2b49f7308b56246", + "Name": "centerPoint", + "Description": "Center point of circle\n\nPoint\nDefault value : Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "9a9e0c2e70b9407bb6704c23ca3b8db3", + "Name": "radius", + "Description": "Radius\n\ndouble\nDefault value : 1", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "e9bfb31cadfa406ca9a002851556bb05", + "Name": "Circle", + "Description": "Circle created with center point and radius", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Creates a Circle with input center Point and radius in the world XY plane, with world Z as normal.\n\nCircle.ByCenterPointRadius (centerPoint: Point = Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0), radius: double = 1): Circle" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Surface.ByPatch@Autodesk.DesignScript.Geometry.Curve", + "Id": "d04dfad9177e4f2da59a14caf5de096d", + "Inputs": [ + { + "Id": "a9c47c8b2fa34529a50d76e72fb6e01d", + "Name": "closedCurve", + "Description": "Closed curve used as surface boundary\n\nCurve", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "3f31de414b004a399eb9bd9c0e5c1a6c", + "Name": "Surface", + "Description": "Surface created by patch", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Create a Surface by filling in the interior of a closed boundary defined by input Curves.\n\nSurface.ByPatch (closedCurve: Curve): Surface" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Modifiers.GeometryColor.ByGeometryColor@Autodesk.DesignScript.Geometry.Geometry,DSCore.Color", + "Id": "c598c8fe92224debab0f80c8f76a5110", + "Inputs": [ + { + "Id": "0e241d3e923d4c8fa5abb5fc6bec7af2", + "Name": "geometry", + "Description": "The geometry to which you would like to apply color.\n\nGeometry", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "ad50eb95219d4c3faa7f71e32443a4f1", + "Name": "color", + "Description": "The color.\n\nColor", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "006059aa5bf540b78306ec88b6f20fa3", + "Name": "GeometryColor", + "Description": "A Display object.", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Display geometry using a color.\n\nGeometryColor.ByGeometryColor (geometry: Geometry, color: Color): GeometryColor" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "DSCore.Color.ByARGB@int,int,int,int", + "Id": "d9893fbaaf944571b48f46237ac3037e", + "Inputs": [ + { + "Id": "601ac80b44dc4532b76a9dd7bce09607", + "Name": "alpha", + "Description": "Alpha value (between 0 and 255 inclusive)\n\nint\nDefault value : 255", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "da0473d502794621a8b54223ac7055dd", + "Name": "red", + "Description": "Red value for RGB color model (between 0 and 255 inclusive)\n\nint\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 1, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "7dffd57cb881448e8a3462a4e0230c7a", + "Name": "green", + "Description": "Green value for RGB color model (between 0 and 255 inclusive)\n\nint\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 1, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "b3fb915969b0479f9bbdeffa7b3a6692", + "Name": "blue", + "Description": "Blue value for RGB color model (between 0 and 255 inclusive)\n\nint\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 1, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "13ea417302e6430196f0081fb1f3ee8d", + "Name": "color", + "Description": "Color created from ARGB", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "CrossProduct", + "Description": "Construct a color by alpha, red, green, and blue components.\n\nColor.ByARGB (alpha: int = 255, red: int = 0, green: int = 0, blue: int = 0): Color" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", + "NodeType": "CodeBlockNode", + "Code": "255;\n0..200..50;\n200;", + "Id": "df2a44e0227442baa5cd87531e24368c", + "Inputs": [], + "Outputs": [ + { + "Id": "a7966bb8475e4a00b5048e44632d68fe", + "Name": "", + "Description": "Value of expression at line 1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "0333feea38e1469596840c32bdf1d35a", + "Name": "", + "Description": "Value of expression at line 2", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "10fcfd325c7f4d3c8898f6c698e830f9", + "Name": "", + "Description": "Value of expression at line 3", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Allows for DesignScript code to be authored directly" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", + "NodeType": "CodeBlockNode", + "Code": "255;\n0..200..25;\n150;", + "Id": "b7b623f9b4ae469ebc1b48d8a594bcac", + "Inputs": [], + "Outputs": [ + { + "Id": "bb239f39e3d34c46b5fa89787d23a9ab", + "Name": "", + "Description": "Value of expression at line 1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "f537c9394b714c9b9dca8ea9bfc9b6f5", + "Name": "", + "Description": "Value of expression at line 2", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "24022c7e0057425d81729f6faa501212", + "Name": "", + "Description": "Value of expression at line 3", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Allows for DesignScript code to be authored directly" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "DSCore.Color.ByARGB@int,int,int,int", + "Id": "45c60d22c8b54f74af79e45ffcf8f048", + "Inputs": [ + { + "Id": "37d585b326994b91918ec704fb95b751", + "Name": "alpha", + "Description": "Alpha value (between 0 and 255 inclusive)\n\nint\nDefault value : 255", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "c8b40948d942417283617c4bb9f0673b", + "Name": "red", + "Description": "Red value for RGB color model (between 0 and 255 inclusive)\n\nint\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "43d75122b0324afd9c404551f42beac7", + "Name": "green", + "Description": "Green value for RGB color model (between 0 and 255 inclusive)\n\nint\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "250b3fcbec4c4a6ca5802195b9a52797", + "Name": "blue", + "Description": "Blue value for RGB color model (between 0 and 255 inclusive)\n\nint\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "449fa21958014f239fccd7058dd13d49", + "Name": "color", + "Description": "Color created from ARGB", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "CrossProduct", + "Description": "Construct a color by alpha, red, green, and blue components.\n\nColor.ByARGB (alpha: int = 255, red: int = 0, green: int = 0, blue: int = 0): Color" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "DSCore.Color.ByARGB@int,int,int,int", + "Id": "d32816f1aace42a1a741132b5f5e5d1b", + "Inputs": [ + { + "Id": "3fae699cf4fe4b93838705cc67bac685", + "Name": "alpha", + "Description": "Alpha value (between 0 and 255 inclusive)\n\nint\nDefault value : 255", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "c2a9f981eb3f443f86e667effd5598a6", + "Name": "red", + "Description": "Red value for RGB color model (between 0 and 255 inclusive)\n\nint\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "71fe149c4c9f4e7a9b5499e56157f1f9", + "Name": "green", + "Description": "Green value for RGB color model (between 0 and 255 inclusive)\n\nint\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "7bb251d510514a269304bca1630e3c16", + "Name": "blue", + "Description": "Blue value for RGB color model (between 0 and 255 inclusive)\n\nint\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "54e76c9e478743a79cb3e5ff42a2c610", + "Name": "color", + "Description": "Color created from ARGB", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Construct a color by alpha, red, green, and blue components.\n\nColor.ByARGB (alpha: int = 255, red: int = 0, green: int = 0, blue: int = 0): Color" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", + "NodeType": "CodeBlockNode", + "Code": "255;\n99;\n71;", + "Id": "19691dca27b84e3087517cbbcea1810f", + "Inputs": [], + "Outputs": [ + { + "Id": "5be18a6c76744d99bf114f4f2b583080", + "Name": "", + "Description": "Value of expression at line 1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "feb1e402215549a9972ea6fd4ff3bc7a", + "Name": "", + "Description": "Value of expression at line 2", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "35b56e94173f4b859e2790380908ddac", + "Name": "", + "Description": "Value of expression at line 3", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Allows for DesignScript code to be authored directly" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Geometry.Translate@double,double,double", + "Id": "a57fa5d80a244ec8b2d87543b81a11a7", + "Inputs": [ + { + "Id": "2ab31fb4931246dbab2edce11305d3dc", + "Name": "geometry", + "Description": "Autodesk.DesignScript.Geometry.Geometry", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "61765dd342034feb9f4036bd8eb0fef6", + "Name": "xTranslation", + "Description": "Displacement along X-axis.\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "5e8394676e0947ffacda750063ef25cc", + "Name": "yTranslation", + "Description": "Displacement along Y-axis.\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "da91a057ac494cc7bbd84cd5bac37b63", + "Name": "zTranslation", + "Description": "Displacement along Z-axis.\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "0e0606a8e2224ee2b5b81f4f0704e475", + "Name": "Geometry", + "Description": "Transformed Geometry.", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Translates any given geometry by the given displacements in the x, y, and z directions defined in WCS respectively.\n\nGeometry.Translate (xTranslation: double = 0, yTranslation: double = 0, zTranslation: double = 0): Geometry" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", + "NodeType": "CodeBlockNode", + "Code": "10;", + "Id": "952d24e6ccff43e8beb542789ab5d788", + "Inputs": [], + "Outputs": [ + { + "Id": "0ad1c135c4314df6893ffec601380bd4", + "Name": "", + "Description": "Value of expression at line 1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Allows for DesignScript code to be authored directly" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Rectangle.ByWidthLength@Autodesk.DesignScript.Geometry.Plane,double,double", + "Id": "835776c70ee743089589bfa68fc66fb1", + "Inputs": [ + { + "Id": "6d485086bcd74d5391da1c5af0cfa920", + "Name": "plane", + "Description": "Plane used to center rectangle\n\nPlane", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "f64c5026e5de452abc9a8c8fd5820866", + "Name": "width", + "Description": "Width of rectangle\n\ndouble\nDefault value : 1", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "93691c40149d4f19a15b9a0911e9352a", + "Name": "length", + "Description": "Length of rectangle\n\ndouble\nDefault value : 1", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "b8694e552f4f492d97da0c69db23daa2", + "Name": "Rectangle", + "Description": "Rectangle created by width and length", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Create a Rectangle centered at input Plane root, with input width (Plane X axis length), and length (Plane Y axis length).\n\nRectangle.ByWidthLength (plane: Plane, width: double = 1, length: double = 1): Rectangle" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Plane.XY", + "Id": "bfd22773cdb641b0b58dfbead70dab26", + "Inputs": [], + "Outputs": [ + { + "Id": "a8338e7aa44a46bc86bb25a6db3af34a", + "Name": "Plane", + "Description": "Plane at XY plane of world", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Creates a plane in the world XY\n\nPlane.XY ( ): Plane" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Surface.ByPatch@Autodesk.DesignScript.Geometry.Curve", + "Id": "c5d0adac6ab2484db626881e5eef8d6d", + "Inputs": [ + { + "Id": "69d9256a87ce44ccb5a9b713d5e32ba4", + "Name": "closedCurve", + "Description": "Closed curve used as surface boundary\n\nCurve", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "52a01e05a3a441ff8c0328fa633c9371", + "Name": "Surface", + "Description": "Surface created by patch", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Create a Surface by filling in the interior of a closed boundary defined by input Curves.\n\nSurface.ByPatch (closedCurve: Curve): Surface" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Modifiers.GeometryColor.BySurfaceColors@Autodesk.DesignScript.Geometry.Surface,DSCore.Color[][]", + "Id": "93b54465d2c44ad9a35223c4b84e97a6", + "Inputs": [ + { + "Id": "0392f80c9435405f9de7b3ae20f0c2e0", + "Name": "surface", + "Description": "The surface on which to apply the colors.\n\nSurface", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "b12873e8b4c74ef78631ad1c579e31fe", + "Name": "colors", + "Description": "A two dimensional list of Colors. The list of colors must be square. Attempting to pass a jagged array will result in an exception.\n\nColor[][]\nDefault value : [[DSCore.Color.ByARGB(255, 255, 0, 0), DSCore.Color.ByARGB(255, 255, 255, 0)], [DSCore.Color.ByARGB(255, 0, 255, 255), DSCore.Color.ByARGB(255, 0, 0, 255)]]", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "2579098dd71a413bb78e8647f2b9093d", + "Name": "GeometryColor", + "Description": "A Display object.", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Display color values on a surface. The colors provided are converted internally to an image texture which is mapped to the surface.\n\nGeometryColor.BySurfaceColors (surface: Surface, colors: Color[][] = [[DSCore.Color.ByARGB(255, 255, 0, 0), DSCore.Color.ByARGB(255, 255, 255, 0)], [DSCore.Color.ByARGB(255, 0, 255, 255), DSCore.Color.ByARGB(255, 0, 0, 255)]]): GeometryColor" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", + "NodeType": "CodeBlockNode", + "Code": "4..12..3;", + "Id": "98cbb5aae54e47ec908684bef1a7e5af", + "Inputs": [], + "Outputs": [ + { + "Id": "e68e2e23871b4272895822949f900adb", + "Name": "", + "Description": "Value of expression at line 1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Allows for DesignScript code to be authored directly" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Point.ByCoordinates@double,double", + "Id": "eebc48deafc7458db307ee66fb7d834c", + "Inputs": [ + { + "Id": "4a8d5e674c7846baabfe009bd0a56b6b", + "Name": "x", + "Description": "X coordinate\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "b0ff27f457c748b4ae1b60b12cd3f4c6", + "Name": "y", + "Description": "Y coordinate\n\ndouble\nDefault value : 0", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "2d300d75538a4d3185a2f97831dc9d9d", + "Name": "Point", + "Description": "Point created by coordinates", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Form a Point in the XY plane given two 2 cartesian coordinates. The Z component is 0.\n\nPoint.ByCoordinates (x: double = 0, y: double = 0): Point" + }, + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "Autodesk.DesignScript.Geometry.Cuboid.ByLengths@Autodesk.DesignScript.Geometry.Point,double,double,double", + "Id": "9836542372d74c31970967de6ef28c6d", + "Inputs": [ + { + "Id": "4feaec60723a48bb95d601c0e3612186", + "Name": "origin", + "Description": "Origin point\n\nPoint\nDefault value : Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "c56d164fe4574b8b9e00fb51aadbea59", + "Name": "width", + "Description": "Width of cuboid\n\ndouble\nDefault value : 1", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "a39ac00d11e841c0aba8bd779c993375", + "Name": "length", + "Description": "Length of cuboid\n\ndouble\nDefault value : 1", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "d59f9017386c4a9090112b87ee9eed70", + "Name": "height", + "Description": "Height of cuboid\n\ndouble\nDefault value : 1", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "c2b066c7db0b4a329527c3a6bd422ceb", + "Name": "Cuboid", + "Description": "Cuboid created by lengths", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Create a Cuboid centered at input Point, with specified width, length, and height.\n\nCuboid.ByLengths (origin: Point = Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0), width: double = 1, length: double = 1, height: double = 1): Cuboid" + } + ], + "Connectors": [ + { + "Start": "19cbd8c4801148478b76e78fec7e81d7", + "End": "8e449f4f7f374ec29a119d8efb08e02a", + "Id": "16f43c76ba57467080d334910a5465d5", + "IsHidden": "False" + }, + { + "Start": "e9bfb31cadfa406ca9a002851556bb05", + "End": "a9c47c8b2fa34529a50d76e72fb6e01d", + "Id": "f1a8352db8d647809c48624bfcb59672", + "IsHidden": "False" + }, + { + "Start": "3f31de414b004a399eb9bd9c0e5c1a6c", + "End": "0e241d3e923d4c8fa5abb5fc6bec7af2", + "Id": "d8b60552862147fb88706db92357562d", + "IsHidden": "False" + }, + { + "Start": "006059aa5bf540b78306ec88b6f20fa3", + "End": "44b7037048114a1ab8268abe1aa8cb1b", + "Id": "37f5f94a2a5f4598bfbe720e3dfda067", + "IsHidden": "False" + }, + { + "Start": "13ea417302e6430196f0081fb1f3ee8d", + "End": "eb61c7347db044868c02b1d2ed034535", + "Id": "dd643da29bbc4dcab3507d4d3f6fce1c", + "IsHidden": "False" + }, + { + "Start": "0333feea38e1469596840c32bdf1d35a", + "End": "da0473d502794621a8b54223ac7055dd", + "Id": "cf138231b53641b19d035921d83ca2c3", + "IsHidden": "False" + }, + { + "Start": "0333feea38e1469596840c32bdf1d35a", + "End": "7dffd57cb881448e8a3462a4e0230c7a", + "Id": "4cf1bc75ff0a415e8f0b7fede43f3623", + "IsHidden": "False" + }, + { + "Start": "10fcfd325c7f4d3c8898f6c698e830f9", + "End": "b3fb915969b0479f9bbdeffa7b3a6692", + "Id": "3cc25f66d3d3454188dd7f8ae52afff3", + "IsHidden": "False" + }, + { + "Start": "bb239f39e3d34c46b5fa89787d23a9ab", + "End": "37d585b326994b91918ec704fb95b751", + "Id": "bc3b729f9cae49bb831cfdea43a030f2", + "IsHidden": "False" + }, + { + "Start": "f537c9394b714c9b9dca8ea9bfc9b6f5", + "End": "c8b40948d942417283617c4bb9f0673b", + "Id": "23154b570c854c8791e5af918097032d", + "IsHidden": "False" + }, + { + "Start": "f537c9394b714c9b9dca8ea9bfc9b6f5", + "End": "250b3fcbec4c4a6ca5802195b9a52797", + "Id": "712125ae0d5b45bb85072dc6f2036800", + "IsHidden": "False" + }, + { + "Start": "24022c7e0057425d81729f6faa501212", + "End": "43d75122b0324afd9c404551f42beac7", + "Id": "475274e0f05944a5ad102db086479a00", + "IsHidden": "False" + }, + { + "Start": "449fa21958014f239fccd7058dd13d49", + "End": "b12873e8b4c74ef78631ad1c579e31fe", + "Id": "a689d2e371554bf88f524900ef11521e", + "IsHidden": "False" + }, + { + "Start": "54e76c9e478743a79cb3e5ff42a2c610", + "End": "ad50eb95219d4c3faa7f71e32443a4f1", + "Id": "4fbd189c8eb14b8e800ad1eb56a778c5", + "IsHidden": "False" + }, + { + "Start": "5be18a6c76744d99bf114f4f2b583080", + "End": "3fae699cf4fe4b93838705cc67bac685", + "Id": "437bd3574fa1406689794d44c858e86a", + "IsHidden": "False" + }, + { + "Start": "5be18a6c76744d99bf114f4f2b583080", + "End": "c2a9f981eb3f443f86e667effd5598a6", + "Id": "fbd4bca969834335924ba8f845b3dc64", + "IsHidden": "False" + }, + { + "Start": "feb1e402215549a9972ea6fd4ff3bc7a", + "End": "71fe149c4c9f4e7a9b5499e56157f1f9", + "Id": "d1a251f10abc4dac8ccabc19b2404d11", + "IsHidden": "False" + }, + { + "Start": "35b56e94173f4b859e2790380908ddac", + "End": "7bb251d510514a269304bca1630e3c16", + "Id": "40999df2df5a4606bd3048f867d7af36", + "IsHidden": "False" + }, + { + "Start": "0e0606a8e2224ee2b5b81f4f0704e475", + "End": "0392f80c9435405f9de7b3ae20f0c2e0", + "Id": "7c4adedcd41e4a8eb7dc7386e5e4e70c", + "IsHidden": "False" + }, + { + "Start": "0ad1c135c4314df6893ffec601380bd4", + "End": "61765dd342034feb9f4036bd8eb0fef6", + "Id": "2bd57a6f552a4d0ca787ea7cd7e30612", + "IsHidden": "False" + }, + { + "Start": "0ad1c135c4314df6893ffec601380bd4", + "End": "f64c5026e5de452abc9a8c8fd5820866", + "Id": "968cfede67aa4ba1abc5c3b9c71efdae", + "IsHidden": "False" + }, + { + "Start": "0ad1c135c4314df6893ffec601380bd4", + "End": "93691c40149d4f19a15b9a0911e9352a", + "Id": "36fb108d339a47cab006acad912c248e", + "IsHidden": "False" + }, + { + "Start": "b8694e552f4f492d97da0c69db23daa2", + "End": "69d9256a87ce44ccb5a9b713d5e32ba4", + "Id": "309a3a095d8f4c56b37ac26ef8364da9", + "IsHidden": "False" + }, + { + "Start": "a8338e7aa44a46bc86bb25a6db3af34a", + "End": "6d485086bcd74d5391da1c5af0cfa920", + "Id": "6eeac4704d5040969922b88c4f9a8d95", + "IsHidden": "False" + }, + { + "Start": "52a01e05a3a441ff8c0328fa633c9371", + "End": "2ab31fb4931246dbab2edce11305d3dc", + "Id": "4fb0667735d64378b149824fb29ab111", + "IsHidden": "False" + }, + { + "Start": "52a01e05a3a441ff8c0328fa633c9371", + "End": "205c9062e2d94da38064f3a507afb75c", + "Id": "3158420e0d20485d8ddac92ca5a76b63", + "IsHidden": "False" + }, + { + "Start": "2579098dd71a413bb78e8647f2b9093d", + "End": "81c7a9b08e55434e8b5635da7d156f8a", + "Id": "f2de7e0c20d34661ab9797204103aff5", + "IsHidden": "False" + }, + { + "Start": "e68e2e23871b4272895822949f900adb", + "End": "4a8d5e674c7846baabfe009bd0a56b6b", + "Id": "35453b7973f84babbe8cb30230cd7139", + "IsHidden": "False" + }, + { + "Start": "2d300d75538a4d3185a2f97831dc9d9d", + "End": "4feaec60723a48bb95d601c0e3612186", + "Id": "b3deae88e8444981a0e723a9216f6314", + "IsHidden": "False" + }, + { + "Start": "c2b066c7db0b4a329527c3a6bd422ceb", + "End": "1bf1f86df3b844448baca68fe3dedce4", + "Id": "16df34b354f4482ba5f88e3e0a26e612", + "IsHidden": "False" + } + ], + "Dependencies": [], + "NodeLibraryDependencies": [], + "Thumbnail": "", + "GraphDocumentationURL": null, + "ExtensionWorkspaceData": [ + { + "ExtensionGuid": "28992e1d-abb9-417f-8b1b-05e053bee670", + "Name": "Properties", + "Version": "2.17", + "Data": {} + }, + { + "ExtensionGuid": "DFBD9CC0-DB40-457A-939E-8C8555555A9D", + "Name": "Generative Design", + "Version": "1.2", + "Data": {} + } + ], + "Author": "None provided", + "Linting": { + "activeLinter": "None", + "activeLinterId": "7b75fb44-43fd-4631-a878-29f4d5d8399a", + "warningCount": 0, + "errorCount": 0 + }, + "Bindings": [], + "View": { + "Dynamo": { + "ScaleFactor": 1.0, + "HasRunWithoutCrash": true, + "IsVisibleInDynamoLibrary": true, + "Version": "2.17.0.3117", + "RunType": "Automatic", + "RunPeriod": "1000" + }, + "Camera": { + "Name": "_Background Preview", + "EyeX": 12.744890213012695, + "EyeY": 17.05145263671875, + "EyeZ": -15.211426734924316, + "LookX": -4.7527933120727539, + "LookY": -15.304874420166016, + "LookZ": 10.220564842224121, + "UpX": -0.27801913022994995, + "UpY": 0.75183987617492676, + "UpZ": 0.59786462783813477 + }, + "ConnectorPins": [], + "NodeViews": [ + { + "Name": "GeometryColor.BySurfaceColors", + "ShowGeometry": false, + "Id": "7a30cde97aeb4653baa1e391943536af", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 2029.04905754361, + "Y": 848.13578050595 + }, + { + "Name": "List Create", + "ShowGeometry": true, + "Id": "04fcc9b7f80b43c99923b0dac8930e77", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 2831.0419837791987, + "Y": 1317.5765811946774 + }, + { + "Name": "Circle.ByCenterPointRadius", + "ShowGeometry": false, + "Id": "845b4ac8feb34d08aca14dc0f7aefccd", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 1347.4034937491342, + "Y": 1699.1817202791274 + }, + { + "Name": "Surface.ByPatch", + "ShowGeometry": false, + "Id": "d04dfad9177e4f2da59a14caf5de096d", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 1669.9297555825442, + "Y": 1697.3256174672674 + }, + { + "Name": "GeometryColor.ByGeometryColor", + "ShowGeometry": false, + "Id": "c598c8fe92224debab0f80c8f76a5110", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 1989.5893061226689, + "Y": 1805.6716056913467 + }, + { + "Name": "Color.ByARGB", + "ShowGeometry": true, + "Id": "d9893fbaaf944571b48f46237ac3037e", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 1055.6010219987354, + "Y": 1176.55072568362 + }, + { + "Name": "Code Block", + "ShowGeometry": true, + "Id": "df2a44e0227442baa5cd87531e24368c", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 842.45062296461936, + "Y": 1192.44040291526 + }, + { + "Name": "Code Block", + "ShowGeometry": true, + "Id": "b7b623f9b4ae469ebc1b48d8a594bcac", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 839.88934825475633, + "Y": 1420.12665261498 + }, + { + "Name": "Color.ByARGB", + "ShowGeometry": true, + "Id": "45c60d22c8b54f74af79e45ffcf8f048", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 1055.4263172809954, + "Y": 1389.9175554306 + }, + { + "Name": "Color.ByARGB", + "ShowGeometry": true, + "Id": "d32816f1aace42a1a741132b5f5e5d1b", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 1049.6426161642144, + "Y": 1842.3040979992975 + }, + { + "Name": "Code Block", + "ShowGeometry": true, + "Id": "19691dca27b84e3087517cbbcea1810f", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 842.63849714110029, + "Y": 1867.5788557474075 + }, + { + "Name": "Geometry.Translate", + "ShowGeometry": false, + "Id": "a57fa5d80a244ec8b2d87543b81a11a7", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 1392.04280919758, + "Y": 934.878891999845 + }, + { + "Name": "Code Block", + "ShowGeometry": true, + "Id": "952d24e6ccff43e8beb542789ab5d788", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 546.631391174586, + "Y": 973.027215854382 + }, + { + "Name": "Rectangle.ByWidthLength", + "ShowGeometry": false, + "Id": "835776c70ee743089589bfa68fc66fb1", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 807.355661233478, + "Y": 838.210616869781 + }, + { + "Name": "Plane.XY", + "ShowGeometry": false, + "Id": "bfd22773cdb641b0b58dfbead70dab26", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 558.66872763275, + "Y": 835.092285413972 + }, + { + "Name": "Surface.ByPatch", + "ShowGeometry": false, + "Id": "c5d0adac6ab2484db626881e5eef8d6d", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 1112.17256103876, + "Y": 838.210616869781 + }, + { + "Name": "GeometryColor.BySurfaceColors", + "ShowGeometry": false, + "Id": "93b54465d2c44ad9a35223c4b84e97a6", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 2013.02132246912, + "Y": 1039.56201753821 + }, + { + "Name": "Code Block", + "ShowGeometry": true, + "Id": "98cbb5aae54e47ec908684bef1a7e5af", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 1563.4578154481073, + "Y": 2183.3968556165664 + }, + { + "Name": "Point.ByCoordinates", + "ShowGeometry": true, + "Id": "eebc48deafc7458db307ee66fb7d834c", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 1787.3433722066427, + "Y": 2185.6129005079133 + }, + { + "Name": "Cuboid.ByLengths", + "ShowGeometry": false, + "Id": "9836542372d74c31970967de6ef28c6d", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 2085.4890795044203, + "Y": 2185.9413404758884 + } + ], + "Annotations": [], + "X": -193.21820925773693, + "Y": -278.35641941981169, + "Zoom": 0.43681698870973656 + } +} \ No newline at end of file diff --git a/test/core/visualization/imageComparison/referenceImages/RenderInstancingWithEdges.png b/test/core/visualization/imageComparison/referenceImages/RenderInstancingWithEdges.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd2d7984c8a0029c4e78de7bd2cfadbf304f9f6 GIT binary patch literal 294511 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%0D7-S)&!QHR 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 )x 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%0D)nlHy%ZqxdcBRB$qfoeCQjP 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 /// - public ShortcutToolbar(IUpdateManager updateManager) + public ShortcutToolbar(DynamoViewModel dynamoViewModel) { shortcutBarItems = new ObservableCollection(); shortcutBarRightSideItems = new ObservableCollection(); InitializeComponent(); - UpdateControl.DataContext = updateManager; + UpdateControl.DataContext = dynamoViewModel.Model.UpdateManager; - var shortcutToolbar = new ShortcutToolbarViewModel(); + var shortcutToolbar = new ShortcutToolbarViewModel(dynamoViewModel); DataContext = shortcutToolbar; } diff --git a/src/DynamoCoreWpf/ViewModels/Core/ShortcutToolbarViewModel.cs b/src/DynamoCoreWpf/ViewModels/Core/ShortcutToolbarViewModel.cs index c734b224c1d..8ba35449dbc 100644 --- a/src/DynamoCoreWpf/ViewModels/Core/ShortcutToolbarViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Core/ShortcutToolbarViewModel.cs @@ -1,13 +1,16 @@ -using Dynamo.ViewModels; +using Dynamo.UI.Commands; +using Dynamo.ViewModels; +using System; using System.Windows; namespace Dynamo.Wpf.ViewModels.Core { internal class ShortcutToolbarViewModel : ViewModelBase { - public ShortcutToolbarViewModel() + public ShortcutToolbarViewModel(DynamoViewModel dynamoViewModel) { NotificationsNumber = 0; + ShowSaveImageDialogAndSaveResultCommand = new DelegateCommand(dynamoViewModel.ShowSaveImageDialogAndSaveResult); } private int notificationsNumber; @@ -36,5 +39,11 @@ public bool IsNotificationsCounterVisible return true; } } + + + /// + /// Exports an image from the user's 3D background or workpace + /// + public DelegateCommand ShowSaveImageDialogAndSaveResultCommand { get; set; } } } diff --git a/src/DynamoCoreWpf/Views/Core/DynamoView.xaml.cs b/src/DynamoCoreWpf/Views/Core/DynamoView.xaml.cs index 87a0ad2193d..bd05a76ecc5 100644 --- a/src/DynamoCoreWpf/Views/Core/DynamoView.xaml.cs +++ b/src/DynamoCoreWpf/Views/Core/DynamoView.xaml.cs @@ -794,7 +794,7 @@ private void InitializeLogin() private void InitializeShortcutBar() { - shortcutBar = new ShortcutToolbar(this.dynamoViewModel.Model.UpdateManager) { Name = "ShortcutToolbar" }; + shortcutBar = new ShortcutToolbar(this.dynamoViewModel) { Name = "ShortcutToolbar" }; var newScriptButton = new ShortcutBarItem { From 8e4b91243867dfec1af920036bf5142a10a91f18 Mon Sep 17 00:00:00 2001 From: Roberto T <61755417+RobertGlobant20@users.noreply.github.com> Date: Thu, 3 Nov 2022 12:29:13 -0600 Subject: [PATCH 5/7] Dyn 5317 check webview2 installed (#13464) * DYN-5317-Check-WebView2-Installed I added a validation that before starting the DynamoSandbox app we will check if the WebView2 Runtime is installed or not, if is not installed we will show a MessageBox with the link of the WebView2 installer and then after pressing the OK button close Dynamo. Also in the DynamoMessageBox I added a RichTextBox that will be visible under very specific circumstances, this RichTextBox allows to have a blue hyperlink as a part of the text so the user can click it and open the webview2 installer webpage. * DYN-5317-Check-WebView2-Installed removing extra comment --- src/DynamoCoreWpf/DynamoCoreWpf.csproj | 1 + .../Properties/Resources.Designer.cs | 18 +++++++++ .../Properties/Resources.en-US.resx | 6 +++ src/DynamoCoreWpf/Properties/Resources.resx | 8 +++- .../UI/Prompts/DynamoMessageBox.xaml | 12 +++++- .../UI/Prompts/DynamoMessageBox.xaml.cs | 33 ++++++++++++++- .../Utilities/MessageBoxUtilities.cs | 12 +++++- .../Utilities/WebView2Utilities.cs | 40 +++++++++++++++++++ src/DynamoSandbox/DynamoCoreSetup.cs | 5 +++ 9 files changed, 131 insertions(+), 4 deletions(-) create mode 100644 src/DynamoCoreWpf/Utilities/WebView2Utilities.cs diff --git a/src/DynamoCoreWpf/DynamoCoreWpf.csproj b/src/DynamoCoreWpf/DynamoCoreWpf.csproj index f8fc8bf5e10..b1b6aa68daf 100644 --- a/src/DynamoCoreWpf/DynamoCoreWpf.csproj +++ b/src/DynamoCoreWpf/DynamoCoreWpf.csproj @@ -287,6 +287,7 @@ + diff --git a/src/DynamoCoreWpf/Properties/Resources.Designer.cs b/src/DynamoCoreWpf/Properties/Resources.Designer.cs index 03f64ed8b6e..cc74bf4646e 100644 --- a/src/DynamoCoreWpf/Properties/Resources.Designer.cs +++ b/src/DynamoCoreWpf/Properties/Resources.Designer.cs @@ -8435,6 +8435,24 @@ public static string WatchNodeRawDataMenu { } } + /// + /// Looks up a localized string similar to Dynamo requires WebView2 Evergreen Runtime, which is not installed on your computer. Please use the link below to download the Evergreen Standalone Installer and install the program. Then relaunch Dynamo. \n\n#WebView2 Runtime Installer=https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-sectionedge/webview2/#download-section. + /// + public static string WebView2RequiredMessage { + get { + return ResourceManager.GetString("WebView2RequiredMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WebView2 Required. + /// + public static string WebView2RequiredTitle { + get { + return ResourceManager.GetString("WebView2RequiredTitle", resourceCulture); + } + } + /// /// Looks up a localized string similar to You haven't saved this file yet.. /// diff --git a/src/DynamoCoreWpf/Properties/Resources.en-US.resx b/src/DynamoCoreWpf/Properties/Resources.en-US.resx index 3c581c5321e..dfb8374a767 100644 --- a/src/DynamoCoreWpf/Properties/Resources.en-US.resx +++ b/src/DynamoCoreWpf/Properties/Resources.en-US.resx @@ -3296,4 +3296,10 @@ You can manage this in Preferences -> Security. Package Upload Scan + + Dynamo requires WebView2 Evergreen Runtime, which is not installed on your computer. Please use the link below to download the Evergreen Standalone Installer and install the program. Then relaunch Dynamo. \n\n#WebView2 Runtime Installer=https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-sectionedge/webview2/#download-section + + + WebView2 Required + \ No newline at end of file diff --git a/src/DynamoCoreWpf/Properties/Resources.resx b/src/DynamoCoreWpf/Properties/Resources.resx index c01038705ae..aaa824cbc54 100644 --- a/src/DynamoCoreWpf/Properties/Resources.resx +++ b/src/DynamoCoreWpf/Properties/Resources.resx @@ -3283,4 +3283,10 @@ You can manage this in Preferences -> Security. Package Upload Scan - \ No newline at end of file + + Dynamo requires WebView2 Evergreen Runtime, which is not installed on your computer. Please use the link below to download the Evergreen Standalone Installer and install the program. Then relaunch Dynamo. \n\n#WebView2 Runtime Installer=https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-sectionedge/webview2/#download-section + + + WebView2 Required + + diff --git a/src/DynamoCoreWpf/UI/Prompts/DynamoMessageBox.xaml b/src/DynamoCoreWpf/UI/Prompts/DynamoMessageBox.xaml index a2fc6273bad..3bce7cdcf4d 100644 --- a/src/DynamoCoreWpf/UI/Prompts/DynamoMessageBox.xaml +++ b/src/DynamoCoreWpf/UI/Prompts/DynamoMessageBox.xaml @@ -1,8 +1,9 @@ - + + + /// Displays a dialog to the user and returns their choice as a MessageBoxResult. + /// + /// Content of the message + /// MessageBox title + /// True if we will be using the RichTextBox instead of the usual one + /// OK button shown in the MessageBox + /// Type of message: Warning, Error + /// + public static MessageBoxResult Show(string messageBoxText, string caption, bool showRichTextBox, MessageBoxButton button, + MessageBoxImage icon) + { + var dynamoMessageBox = new DynamoMessageBox + { + BodyText = messageBoxText, + TitleText = caption, + MessageBoxButton = button, + MessageBoxImage = icon + }; + + if (showRichTextBox) + { + dynamoMessageBox.BodyTextBlock.Visibility = Visibility.Collapsed; + dynamoMessageBox.ContentRichTextBox.Visibility = Visibility.Visible; + } + dynamoMessageBox.ConfigureButtons(button); + dynamoMessageBox.ShowDialog(); + return dynamoMessageBox.CustomDialogResult; + } /// /// Displays a dialog to the user and returns their choice as a MessageBoxResult. /// diff --git a/src/DynamoCoreWpf/Utilities/MessageBoxUtilities.cs b/src/DynamoCoreWpf/Utilities/MessageBoxUtilities.cs index bff1b485522..a77304c0516 100644 --- a/src/DynamoCoreWpf/Utilities/MessageBoxUtilities.cs +++ b/src/DynamoCoreWpf/Utilities/MessageBoxUtilities.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Windows; using Dynamo.UI.Prompts; @@ -10,6 +10,7 @@ public class MessageBoxService { internal interface IMessageBox { MessageBoxResult Show(string msg, string title, MessageBoxButton button, MessageBoxImage img); + MessageBoxResult Show(string msg, string title, bool showRichTextBox, MessageBoxButton button, MessageBoxImage img); MessageBoxResult Show(Window owner,string msg, string title, MessageBoxButton button, MessageBoxImage img); MessageBoxResult Show(string msg, string title, MessageBoxButton button, IEnumerable buttonNames, MessageBoxImage img); } @@ -23,6 +24,11 @@ MessageBoxResult IMessageBox.Show(string msg, string title, MessageBoxButton but return DynamoMessageBox.Show(msg, title, button, img); } + MessageBoxResult IMessageBox.Show(string msg, string title, bool showRichTextBox, MessageBoxButton button, MessageBoxImage img) + { + return DynamoMessageBox.Show(msg, title, showRichTextBox, button, img); + } + public MessageBoxResult Show(Window owner, string msg, string title, MessageBoxButton button, MessageBoxImage img) { return DynamoMessageBox.Show(owner,msg, title, button, img); @@ -43,6 +49,10 @@ public static MessageBoxResult Show(string msg, string title, MessageBoxButton b { return (msg_box ?? (msg_box = new DefaultMessageBox())).Show(msg, title, button, img); } + public static MessageBoxResult Show(string msg, string title, bool showRichTextBox, MessageBoxButton button, MessageBoxImage img) + { + return (msg_box ?? (msg_box = new DefaultMessageBox())).Show(msg, title, showRichTextBox, button, img); + } public static MessageBoxResult Show(Window owner,string msg, string title, MessageBoxButton button, MessageBoxImage img) { return (msg_box ?? (msg_box = new DefaultMessageBox())).Show(owner,msg, title, button, img); diff --git a/src/DynamoCoreWpf/Utilities/WebView2Utilities.cs b/src/DynamoCoreWpf/Utilities/WebView2Utilities.cs new file mode 100644 index 00000000000..b82589c481d --- /dev/null +++ b/src/DynamoCoreWpf/Utilities/WebView2Utilities.cs @@ -0,0 +1,40 @@ +using System.Windows; +using Dynamo.Wpf.Properties; +using Dynamo.Wpf.Utilities; +using Microsoft.Web.WebView2.Core; + +namespace Dynamo.Utilities +{ + /// + /// This class will contain several utility functions that will be used for the WebView2 component + /// + public static class WebView2Utilities + { + /// + /// Validate if the WebView2 Evergreen Runtime is installed in the computer, otherwise it will show a MessageBox about installing the Runtime and then exit Dynamo + /// + /// + public static bool ValidateWebView2RuntimeInstalled() + { + try + { + string availableVersion = CoreWebView2Environment.GetAvailableBrowserVersionString(); + return true; + } + //We reach the catch section only when the Webview2 Runtime is not installed + catch (WebView2RuntimeNotFoundException) + { + var messageStr = Resources.ResourceManager.GetString("WebView2RequiredMessage"); + if(messageStr.IndexOf("\\n") >= 0) + messageStr = messageStr.Replace("\\n", "\n"); + + MessageBoxService.Show(messageStr, + Resources.WebView2RequiredTitle, + true, + MessageBoxButton.OK, + MessageBoxImage.Error); + return false; + } + } + } +} diff --git a/src/DynamoSandbox/DynamoCoreSetup.cs b/src/DynamoSandbox/DynamoCoreSetup.cs index 1cd3839d4e5..c23428cc65d 100644 --- a/src/DynamoSandbox/DynamoCoreSetup.cs +++ b/src/DynamoSandbox/DynamoCoreSetup.cs @@ -9,6 +9,7 @@ using Dynamo.DynamoSandbox; using Dynamo.Logging; using Dynamo.Models; +using Dynamo.Utilities; using Dynamo.ViewModels; using Dynamo.Wpf.ViewModels.Watch3D; using System.Linq; @@ -56,6 +57,10 @@ public void RunApplication(Application app) { try { + //This line validates if the WebView2 Runtime is installed in the computer, if is not we return and then exit Dynamo + if (!WebView2Utilities.ValidateWebView2RuntimeInstalled()) + return; + DynamoModel.RequestMigrationStatusDialog += MigrationStatusDialogRequested; DynamoModel model; Dynamo.Applications.StartupUtils.ASMPreloadFailure += ASMPreloadFailureHandler; From 414caed561287f9d14b48ef014ac01bb401f1248 Mon Sep 17 00:00:00 2001 From: Roberto T <61755417+RobertGlobant20@users.noreply.github.com> Date: Tue, 28 Mar 2023 08:29:18 -0600 Subject: [PATCH 6/7] DYN-5674-CustomNode-Renamed (#13854) After the auto-save functionality is triggered when we are located in the Custom Node edit tab when the node in the Home Workspace is being renamed to "backup". Then after my fix first is checking if it has a name and file associated (that usually happen when you create/edit a custom node) if that is the case then we don't execute the rename process. Also I added a test that will validate that the Save functionality doesn't rename the CustomNode name. --- .../ViewModels/Core/WorkspaceViewModel.cs | 8 +++ test/DynamoCoreWpfTests/WorkspaceSaving.cs | 50 ++++++++++++++++++- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/DynamoCoreWpf/ViewModels/Core/WorkspaceViewModel.cs b/src/DynamoCoreWpf/ViewModels/Core/WorkspaceViewModel.cs index 55c46eb17c9..27d6e5b0d6e 100644 --- a/src/DynamoCoreWpf/ViewModels/Core/WorkspaceViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Core/WorkspaceViewModel.cs @@ -611,6 +611,14 @@ internal void Save(string filePath, bool isBackup = false, EngineController engi Model.FileName = filePath; Model.OnSaved(); } + + // If a new CustomNodeWorkspaceModel is created, store that info in CustomNodeManager without creating an instance of the custom node. + if (this.Model is CustomNodeWorkspaceModel customNodeWorkspaceModel) + { + //If the custom node Name is already set and the FileName is already set then we don't need to change the Name with "backup" + if(string.IsNullOrEmpty(customNodeWorkspaceModel.Name) && string.IsNullOrEmpty(customNodeWorkspaceModel.FileName)) + customNodeWorkspaceModel.SetInfo(Path.GetFileNameWithoutExtension(filePath)); + } } catch (Exception ex) { diff --git a/test/DynamoCoreWpfTests/WorkspaceSaving.cs b/test/DynamoCoreWpfTests/WorkspaceSaving.cs index 1832f1a1e68..e2e99b59e78 100644 --- a/test/DynamoCoreWpfTests/WorkspaceSaving.cs +++ b/test/DynamoCoreWpfTests/WorkspaceSaving.cs @@ -9,7 +9,8 @@ using Dynamo.Models; using Dynamo.Search.SearchElements; using Dynamo.Wpf.ViewModels; - +using Dynamo.Wpf.ViewModels.Core; +using Newtonsoft.Json.Linq; using NUnit.Framework; using Dynamo.ViewModels; using Dynamo.Utilities; @@ -1359,6 +1360,53 @@ public void CustomNodeBelongingToPackageCanBeModifiedAndReopenedWithoutError() Assert.IsTrue(nodeInstance.OutPorts.LastOrDefault().Name.StartsWith("anewoutput")); } + + /// + /// When focusing the Custom Node tab if the Save functionality is triggered was changing the CustomNode name automatically, then this test is validating that is not happening anymore + /// + [Test] + public void CustomNodeWorkspaceSaveBackupKeepNodeName() + { + var funcguid = GuidUtility.Create(GuidUtility.UrlNamespace, "NewCustomNodeKeepName"); + var initialNodeName = "testnode"; + //first create a new custom node. + this.ViewModel.ExecuteCommand(new DynamoModel.CreateCustomNodeCommand(funcguid, initialNodeName, "testcategory", "atest", true)); + + var customNodeWorspaceViewModel = this.ViewModel.Workspaces.OfType().FirstOrDefault(); + var homeWorspaceViewModel = this.ViewModel.Workspaces.OfType().FirstOrDefault(); + + //Adds the CustomNode to the HomeWorkspaceViewModel so later we can check that the node name is not renamed after saving + var customNodeInstance = this.ViewModel.Model.CustomNodeManager.CreateCustomNodeInstance(funcguid); + homeWorspaceViewModel.Model.AddAndRegisterNode(customNodeInstance); + + Assert.True(initialNodeName == customNodeInstance.Name); + + //Create nodes that will be added to the Custom Node Workspace + var outnode1 = new Output(); + outnode1.Symbol = "out1"; + var outnode2 = new Output(); + outnode1.Symbol = "out2"; + var cbn = new CodeBlockNodeModel(this.ViewModel.EngineController.LibraryServices); + cbn.SetCodeContent("5;", this.ViewModel.CurrentSpace.ElementResolver); + + //Add nodes to the Custom Node Workspace + customNodeWorspaceViewModel.Model.AddAndRegisterNode(cbn); + customNodeWorspaceViewModel.Model.AddAndRegisterNode(outnode1); + customNodeWorspaceViewModel.Model.AddAndRegisterNode(outnode2); + + //Get the path in which the temporary dyf file is created and then Save + var savePath = GetNewFileNameOnTempPath("dyf"); + + //Change to the CustomNodeWorkspaceViewModel (like focusing the Custom Node tab) + ViewModel.CurrentWorkspaceIndex = 1; + + //Before was changing the CustomNode name but it shouldn't be changed + ViewModel.SaveAs(savePath, SaveContext.SaveAs, true); + + //Verify that the CustomNode name remains in the same value that was created previously + Assert.True(initialNodeName == customNodeInstance.Name); + Assert.False(Path.GetFileNameWithoutExtension(savePath) == customNodeInstance.Name); + } #endregion } } From 09d6b2a98087beaa8818e03991484f9c6a1014c3 Mon Sep 17 00:00:00 2001 From: "Aaron (Qilong)" <173288704@qq.com> Date: Thu, 13 Jul 2023 09:12:29 -0400 Subject: [PATCH 7/7] clean up --- test/DynamoCoreWpfTests/WorkspaceSaving.cs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/test/DynamoCoreWpfTests/WorkspaceSaving.cs b/test/DynamoCoreWpfTests/WorkspaceSaving.cs index e2e99b59e78..d86580501a9 100644 --- a/test/DynamoCoreWpfTests/WorkspaceSaving.cs +++ b/test/DynamoCoreWpfTests/WorkspaceSaving.cs @@ -3,22 +3,21 @@ using System.IO; using System.Linq; using System.Threading; +using Dynamo.Graph; +using Dynamo.Graph.Connectors; +using Dynamo.Graph.Nodes; using Dynamo.Graph.Nodes.CustomNodes; using Dynamo.Graph.Nodes.ZeroTouch; using Dynamo.Graph.Workspaces; using Dynamo.Models; +using Dynamo.PackageManager; using Dynamo.Search.SearchElements; +using Dynamo.Utilities; +using Dynamo.ViewModels; +using Dynamo.Wpf; using Dynamo.Wpf.ViewModels; using Dynamo.Wpf.ViewModels.Core; -using Newtonsoft.Json.Linq; using NUnit.Framework; -using Dynamo.ViewModels; -using Dynamo.Utilities; -using CoreNodeModels.Input; -using Dynamo.Graph.Connectors; -using Dynamo.Graph.Nodes; -using Dynamo.Wpf; -using Dynamo.PackageManager; namespace Dynamo.Tests {