From 759041c0d49947d8f011d3b2e31c59a3aa309bb1 Mon Sep 17 00:00:00 2001
From: gantaa <43763136+reddyashish@users.noreply.github.com>
Date: Fri, 11 Oct 2019 02:43:14 -0400
Subject: [PATCH 1/6] First commit
---
src/DynamoCore/Graph/Nodes/DummyNode.cs | 72 ++++++++++++++++---
.../Workspaces/SerializationConverters.cs | 19 +++--
2 files changed, 77 insertions(+), 14 deletions(-)
diff --git a/src/DynamoCore/Graph/Nodes/DummyNode.cs b/src/DynamoCore/Graph/Nodes/DummyNode.cs
index 07ef295bdbc..3876a6782ef 100644
--- a/src/DynamoCore/Graph/Nodes/DummyNode.cs
+++ b/src/DynamoCore/Graph/Nodes/DummyNode.cs
@@ -45,6 +45,7 @@ public DummyNode()
LegacyNodeName = "Dynamo.Graph.Nodes.DummyNode";
LegacyFullName = LegacyNodeName;
LegacyAssembly = string.Empty;
+ FunctionName = string.Empty;
NodeNature = Nature.Unresolved;
Description = GetDescription();
ShouldDisplayPreviewCore = false;
@@ -142,6 +143,52 @@ public DummyNode(
UpdatePorts();
}
+ ///
+ /// This function creates DummyNode with specified number of ports.
+ ///
+ /// Id of the original node
+ /// Number of input ports
+ /// Number of output ports
+ /// Assembly of the node
+ /// Function name of the node
+ /// Original JSON description of the node
+ public DummyNode(
+ string id,
+ int inputCount,
+ int outputCount,
+ string legacyAssembly,
+ string functionName,
+ JObject originalElement)
+ {
+ GUID = new Guid(id);
+
+ InputCount = inputCount;
+ OutputCount = outputCount;
+
+ string legacyName = "Unresolved";
+ LegacyNodeName = legacyName;
+ LegacyFullName = legacyName;
+ Name = legacyName;
+ FunctionName = functionName;
+
+ OriginalNodeContent = originalElement;
+
+ LegacyAssembly = legacyAssembly;
+ NodeNature = DummyNode.Nature.Unresolved;
+
+ Description = GetDescription();
+ ShouldDisplayPreviewCore = false;
+
+ if (originalElement != null)
+ {
+ var legacyFullName = originalElement["FunctionSignature"];
+ if (legacyFullName != null)
+ LegacyFullName = legacyFullName.ToString();
+ }
+
+ UpdatePorts();
+ }
+
private void LoadNode(XmlNode nodeElement)
{
XmlElement originalElement = OriginalXmlNodeContent;
@@ -320,29 +367,29 @@ internal string GetDescription()
{
if (NodeNature == Nature.Deprecated)
{
- if (string.IsNullOrEmpty(LegacyAssembly))
+ if (string.IsNullOrEmpty(FunctionName))
{
- const string format = "Node of type '{0}' is now deprecated";
- return string.Format(format, LegacyNodeName);
+ const string description = "Node is now deprecated";
+ return description;
}
else
{
- const string format = "Node of type '{0}' ({1}) is now deprecated";
- return string.Format(format, LegacyNodeName, LegacyAssembly);
+ const string format = "Node '{0}' is now deprecated";
+ return string.Format(format, FunctionName);
}
}
if (NodeNature == Nature.Unresolved)
{
- if (string.IsNullOrEmpty(LegacyAssembly))
+ if (string.IsNullOrEmpty(FunctionName))
{
- const string format = "Node of type '{0}' cannot be resolved";
- return string.Format(format, LegacyNodeName);
+ const string description = "Node cannot be resolved";
+ return description;
}
else
{
- const string format = "Node of type '{0}' ({1}) cannot be resolved";
- return string.Format(format, LegacyNodeName, LegacyAssembly);
+ const string format = "Node '{0}' cannot be resolved.";
+ return string.Format(format, FunctionName);
}
}
@@ -370,6 +417,11 @@ internal string GetDescription()
///
public string LegacyAssembly { get; private set; }
+ ///
+ /// Returns the node's function name
+ ///
+ public string FunctionName { get; private set; }
+
///
/// Returns the original node DSFunction description or UI node type
///
diff --git a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
index 773e8701eff..25eaf94425c 100644
--- a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
+++ b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
@@ -96,11 +96,22 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
{
NodeModel node = null;
+ String typeName = null;
+ String functionName = null;
+
var obj = JObject.Load(reader);
Type type = null;
+
try
{
type = Type.GetType(obj["$type"].Value());
+ typeName = obj["$type"].Value().Split(',').FirstOrDefault();
+
+ if (typeName.Contains("ZeroTouch"))
+ {
+ // This assemblyName does not usually contain version information...
+ functionName = obj["FunctionSignature"].Value().Split('@').FirstOrDefault().Trim();
+ }
}
catch(Exception e)
{
@@ -115,7 +126,6 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
{
List resultList;
- var typeName = obj["$type"].Value().Split(',').FirstOrDefault();
// This assemblyName does not usually contain version information...
var assemblyName = obj["$type"].Value().Split(',').Skip(1).FirstOrDefault().Trim();
if (assemblyName != null)
@@ -159,7 +169,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
// If type is still null at this point return a dummy node
if (type == null)
{
- node = CreateDummyNode(obj, assemblyLocation, inPorts, outPorts);
+ node = CreateDummyNode(obj, assemblyLocation, functionName, inPorts, outPorts);
}
// Attempt to create a valid node using the type
else if (type == typeof(Function))
@@ -223,7 +233,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
// Use the functionDescriptor to try and restore the proper node if possible
if (functionDescriptor == null)
{
- node = CreateDummyNode(obj, assemblyLocation, inPorts, outPorts);
+ node = CreateDummyNode(obj, assemblyLocation, functionName, inPorts, outPorts);
}
else
{
@@ -286,7 +296,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
return node;
}
- private DummyNode CreateDummyNode(JObject obj, string assemblyLocation, PortModel[] inPorts, PortModel[] outPorts)
+ private DummyNode CreateDummyNode(JObject obj, string assemblyLocation, string functionName, PortModel[] inPorts, PortModel[] outPorts)
{
var inputcount = inPorts.Count();
var outputcount = outPorts.Count();
@@ -296,6 +306,7 @@ private DummyNode CreateDummyNode(JObject obj, string assemblyLocation, PortMode
inputcount,
outputcount,
assemblyLocation,
+ functionName,
obj);
}
From d983d58686f7c0e74fb53f79fdaacec64f209d60 Mon Sep 17 00:00:00 2001
From: gantaa <43763136+reddyashish@users.noreply.github.com>
Date: Mon, 14 Oct 2019 19:10:35 -0400
Subject: [PATCH 2/6] Change the warning message for the node model nodes
---
src/DynamoCore/Graph/Nodes/DummyNode.cs | 8 +++---
.../Workspaces/SerializationConverters.cs | 28 +++++++++++--------
2 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/src/DynamoCore/Graph/Nodes/DummyNode.cs b/src/DynamoCore/Graph/Nodes/DummyNode.cs
index 3876a6782ef..dc0b7009ccb 100644
--- a/src/DynamoCore/Graph/Nodes/DummyNode.cs
+++ b/src/DynamoCore/Graph/Nodes/DummyNode.cs
@@ -369,8 +369,8 @@ internal string GetDescription()
{
if (string.IsNullOrEmpty(FunctionName))
{
- const string description = "Node is now deprecated";
- return description;
+ const string format = "Node from assembly '{0}' is now deprecated.";
+ return string.Format(format, LegacyAssembly);
}
else
{
@@ -383,8 +383,8 @@ internal string GetDescription()
{
if (string.IsNullOrEmpty(FunctionName))
{
- const string description = "Node cannot be resolved";
- return description;
+ const string format = "Node from assembly '{0}' cannot be resolved.";
+ return string.Format(format, LegacyAssembly);
}
else
{
diff --git a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
index 25eaf94425c..ad042e63890 100644
--- a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
+++ b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
@@ -96,8 +96,9 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
{
NodeModel node = null;
- String typeName = null;
- String functionName = null;
+ String typeName = String.Empty;
+ String functionName = String.Empty;
+ String assemblyName = String.Empty;
var obj = JObject.Load(reader);
Type type = null;
@@ -107,11 +108,16 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
type = Type.GetType(obj["$type"].Value());
typeName = obj["$type"].Value().Split(',').FirstOrDefault();
- if (typeName.Contains("ZeroTouch"))
- {
- // This assemblyName does not usually contain version information...
+ if (typeName.Contains("ZeroTouch"))
+ {
+ // If it is a zero touch node, then get the whole function name including the namespace.
functionName = obj["FunctionSignature"].Value().Split('@').FirstOrDefault().Trim();
- }
+ }
+ // we get the assembly name from the type string for the node model nodes.
+ else
+ {
+ assemblyName = obj["$type"].Value().Split(',').Skip(1).FirstOrDefault().Trim();
+ }
}
catch(Exception e)
{
@@ -127,7 +133,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
List resultList;
// This assemblyName does not usually contain version information...
- var assemblyName = obj["$type"].Value().Split(',').Skip(1).FirstOrDefault().Trim();
+ assemblyName = obj["$type"].Value().Split(',').Skip(1).FirstOrDefault().Trim();
if (assemblyName != null)
{
if(this.loadedAssemblies.TryGetValue(assemblyName, out resultList))
@@ -169,7 +175,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
// If type is still null at this point return a dummy node
if (type == null)
{
- node = CreateDummyNode(obj, assemblyLocation, functionName, inPorts, outPorts);
+ node = CreateDummyNode(obj, assemblyName, functionName, inPorts, outPorts);
}
// Attempt to create a valid node using the type
else if (type == typeof(Function))
@@ -233,7 +239,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
// Use the functionDescriptor to try and restore the proper node if possible
if (functionDescriptor == null)
{
- node = CreateDummyNode(obj, assemblyLocation, functionName, inPorts, outPorts);
+ node = CreateDummyNode(obj, assemblyName, functionName, inPorts, outPorts);
}
else
{
@@ -296,7 +302,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
return node;
}
- private DummyNode CreateDummyNode(JObject obj, string assemblyLocation, string functionName, PortModel[] inPorts, PortModel[] outPorts)
+ private DummyNode CreateDummyNode(JObject obj, string legacyAssembly, string functionName, PortModel[] inPorts, PortModel[] outPorts)
{
var inputcount = inPorts.Count();
var outputcount = outPorts.Count();
@@ -305,7 +311,7 @@ private DummyNode CreateDummyNode(JObject obj, string assemblyLocation, string f
obj["Id"].ToString(),
inputcount,
outputcount,
- assemblyLocation,
+ legacyAssembly,
functionName,
obj);
}
From a8c992fa4c4bc81d0e05e99ee8c60e74331a45f7 Mon Sep 17 00:00:00 2001
From: gantaa <43763136+reddyashish@users.noreply.github.com>
Date: Tue, 15 Oct 2019 00:06:29 -0400
Subject: [PATCH 3/6] Displaying the type name of the node model node.
---
src/DynamoCore/Graph/Nodes/DummyNode.cs | 62 +++++++++++++++++--
.../Workspaces/SerializationConverters.cs | 17 ++++-
2 files changed, 74 insertions(+), 5 deletions(-)
diff --git a/src/DynamoCore/Graph/Nodes/DummyNode.cs b/src/DynamoCore/Graph/Nodes/DummyNode.cs
index dc0b7009ccb..e28b02c2996 100644
--- a/src/DynamoCore/Graph/Nodes/DummyNode.cs
+++ b/src/DynamoCore/Graph/Nodes/DummyNode.cs
@@ -189,6 +189,55 @@ public DummyNode(
UpdatePorts();
}
+ ///
+ /// This function creates DummyNode with specified number of ports.
+ ///
+ /// Id of the original node
+ /// Number of input ports
+ /// Number of output ports
+ /// Assembly of the node
+ /// Function name of the node
+ /// Type of the node
+ /// Original JSON description of the node
+ public DummyNode(
+ string id,
+ int inputCount,
+ int outputCount,
+ string legacyAssembly,
+ string functionName,
+ string typeName,
+ JObject originalElement)
+ {
+ GUID = new Guid(id);
+
+ InputCount = inputCount;
+ OutputCount = outputCount;
+
+ string legacyName = "Unresolved";
+ LegacyNodeName = legacyName;
+ LegacyFullName = legacyName;
+ Name = legacyName;
+ FunctionName = functionName;
+
+ OriginalNodeContent = originalElement;
+
+ LegacyAssembly = legacyAssembly;
+ TypeName = typeName;
+ NodeNature = DummyNode.Nature.Unresolved;
+
+ Description = GetDescription();
+ ShouldDisplayPreviewCore = false;
+
+ if (originalElement != null)
+ {
+ var legacyFullName = originalElement["FunctionSignature"];
+ if (legacyFullName != null)
+ LegacyFullName = legacyFullName.ToString();
+ }
+
+ UpdatePorts();
+ }
+
private void LoadNode(XmlNode nodeElement)
{
XmlElement originalElement = OriginalXmlNodeContent;
@@ -369,8 +418,8 @@ internal string GetDescription()
{
if (string.IsNullOrEmpty(FunctionName))
{
- const string format = "Node from assembly '{0}' is now deprecated.";
- return string.Format(format, LegacyAssembly);
+ const string format = "Node of type '{0}',from assembly '{1}', is now deprecated.";
+ return string.Format(format, TypeName, LegacyAssembly);
}
else
{
@@ -383,8 +432,8 @@ internal string GetDescription()
{
if (string.IsNullOrEmpty(FunctionName))
{
- const string format = "Node from assembly '{0}' cannot be resolved.";
- return string.Format(format, LegacyAssembly);
+ const string format = "Node of type '{0}', from assembly '{1}', cannot be resolved.";
+ return string.Format(format, TypeName, LegacyAssembly);
}
else
{
@@ -417,6 +466,11 @@ internal string GetDescription()
///
public string LegacyAssembly { get; private set; }
+ ///
+ /// Type name of the node.
+ ///
+ public string TypeName { get; private set; }
+
///
/// Returns the node's function name
///
diff --git a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
index ad042e63890..85542b18c76 100644
--- a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
+++ b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
@@ -175,7 +175,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
// If type is still null at this point return a dummy node
if (type == null)
{
- node = CreateDummyNode(obj, assemblyName, functionName, inPorts, outPorts);
+ node = CreateDummyNode(obj, typeName, assemblyName, functionName, inPorts, outPorts);
}
// Attempt to create a valid node using the type
else if (type == typeof(Function))
@@ -316,6 +316,21 @@ private DummyNode CreateDummyNode(JObject obj, string legacyAssembly, string fun
obj);
}
+ private DummyNode CreateDummyNode(JObject obj, string typeName, string legacyAssembly, string functionName, PortModel[] inPorts, PortModel[] outPorts)
+ {
+ var inputcount = inPorts.Count();
+ var outputcount = outPorts.Count();
+
+ return new DummyNode(
+ obj["Id"].ToString(),
+ inputcount,
+ outputcount,
+ legacyAssembly,
+ functionName,
+ typeName,
+ obj);
+ }
+
///
/// Map old Guids to new Models in the IdReferenceResolver.
From d14b311701f3389c6eb9d192b07866d0611a5863 Mon Sep 17 00:00:00 2001
From: gantaa <43763136+reddyashish@users.noreply.github.com>
Date: Tue, 15 Oct 2019 01:16:58 -0400
Subject: [PATCH 4/6] Using the whole namespace to check for zerotouch nodes.
---
src/DynamoCore/Graph/Workspaces/SerializationConverters.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
index 85542b18c76..c84ba4e0709 100644
--- a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
+++ b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs
@@ -108,7 +108,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
type = Type.GetType(obj["$type"].Value());
typeName = obj["$type"].Value().Split(',').FirstOrDefault();
- if (typeName.Contains("ZeroTouch"))
+ if (typeName.Equals("Dynamo.Graph.Nodes.ZeroTouch.DSFunction"))
{
// If it is a zero touch node, then get the whole function name including the namespace.
functionName = obj["FunctionSignature"].Value().Split('@').FirstOrDefault().Trim();
From 69d0cab6a2cee004d6a841dc359f09ed4e3e573b Mon Sep 17 00:00:00 2001
From: gantaa <43763136+reddyashish@users.noreply.github.com>
Date: Tue, 15 Oct 2019 14:05:46 -0400
Subject: [PATCH 5/6] Adding test
---
test/DynamoCoreTests/DummyNodeTests.cs | 21 +++
.../DummyNodesWarningMessageTest.dyn | 156 ++++++++++++++++++
2 files changed, 177 insertions(+)
create mode 100644 test/core/dummy_node/DummyNodesWarningMessageTest.dyn
diff --git a/test/DynamoCoreTests/DummyNodeTests.cs b/test/DynamoCoreTests/DummyNodeTests.cs
index 383b61ff2ba..af4a36555d2 100644
--- a/test/DynamoCoreTests/DummyNodeTests.cs
+++ b/test/DynamoCoreTests/DummyNodeTests.cs
@@ -160,5 +160,26 @@ public void ResolveDummyNodesInsideCustomNodeWorkspace()
Assert.AreEqual(0, dummyNodes.Count());
Assert.AreEqual(CurrentDynamoModel.CurrentWorkspace.HasUnsavedChanges, false);
}
+
+ [Test]
+ public void DummyNodesWarningMessageTest()
+ {
+ String path = Path.Combine(TestDirectory, @"core\dummy_node\DummyNodesWarningMessageTest.dyn");
+ OpenModel(path);
+
+ var dummyNodes = CurrentDynamoModel.CurrentWorkspace.Nodes.OfType();
+ Assert.AreEqual(2, dummyNodes.Count());
+
+ // Asserting the warning message that is displayed for zerotouch and nodemodel dummy nodes.
+ var zeroTouchDummyNode = dummyNodes.First();
+ Assert.AreEqual(zeroTouchDummyNode.NodeNature, DummyNode.Nature.Unresolved);
+ Assert.AreEqual(zeroTouchDummyNode.FunctionName, "HowickMaker.hMember.ByLineVector");
+ Assert.AreEqual(zeroTouchDummyNode.GetDescription(), "Node 'HowickMaker.hMember.ByLineVector' cannot be resolved.");
+
+ var nodeModelDummyNode = dummyNodes.Last();
+ Assert.AreEqual(nodeModelDummyNode.NodeNature, DummyNode.Nature.Unresolved);
+ Assert.AreEqual(nodeModelDummyNode.LegacyAssembly, "SampleLibraryUI");
+ Assert.AreEqual(nodeModelDummyNode.GetDescription(), "Node of type 'SampleLibraryUI.Examples.DropDownExample', from assembly 'SampleLibraryUI', cannot be resolved.");
+ }
}
}
\ No newline at end of file
diff --git a/test/core/dummy_node/DummyNodesWarningMessageTest.dyn b/test/core/dummy_node/DummyNodesWarningMessageTest.dyn
new file mode 100644
index 00000000000..a225397bfc9
--- /dev/null
+++ b/test/core/dummy_node/DummyNodesWarningMessageTest.dyn
@@ -0,0 +1,156 @@
+{
+ "Uuid": "8ac993b7-6516-45c6-8bac-9ff985fbb0ad",
+ "IsCustomNode": false,
+ "Description": null,
+ "Name": "Dummy node message",
+ "ElementResolver": {
+ "ResolutionMap": {
+ "Point": {
+ "Key": "Autodesk.DesignScript.Geometry.Point",
+ "Value": "ProtoGeometry.dll"
+ }
+ }
+ },
+ "Inputs": [],
+ "Outputs": [],
+ "Nodes": [
+ {
+ "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
+ "NodeType": "FunctionNode",
+ "FunctionSignature": "HowickMaker.hMember.ByLineVector@Autodesk.DesignScript.Geometry.Line,Autodesk.DesignScript.Geometry.Vector,string",
+ "Id": "aeb3e5df26cc4f16af55bf0baef46ae1",
+ "Inputs": [
+ {
+ "Id": "2cda30bf385741c3ad5d4b290d8452c1",
+ "Name": "webAxis",
+ "Description": "Line",
+ "UsingDefaultValue": false,
+ "Level": 2,
+ "UseLevels": false,
+ "KeepListStructure": false
+ },
+ {
+ "Id": "76a24bab17214e1697ab78692268bc77",
+ "Name": "webNormal",
+ "Description": "Vector",
+ "UsingDefaultValue": false,
+ "Level": 2,
+ "UseLevels": false,
+ "KeepListStructure": false
+ },
+ {
+ "Id": "5cdd38339cef4f09a61f60abd6095076",
+ "Name": "name",
+ "Description": "string\nDefault value : \"0\"",
+ "UsingDefaultValue": true,
+ "Level": 2,
+ "UseLevels": false,
+ "KeepListStructure": false
+ }
+ ],
+ "Outputs": [
+ {
+ "Id": "e45e1d20e89b422698798660461602e6",
+ "Name": "hMember",
+ "Description": "hMember",
+ "UsingDefaultValue": false,
+ "Level": 2,
+ "UseLevels": false,
+ "KeepListStructure": false
+ }
+ ],
+ "Replication": "Auto",
+ "Description": "Creates an hMember with its web lying along the webAxis, facing webNormal\n\nhMember.ByLineVector (webAxis: Line, webNormal: Vector, name: string = \"0\"): hMember"
+ },
+ {
+ "ConcreteType": "SampleLibraryUI.Examples.DropDownExample, SampleLibraryUI",
+ "SelectedIndex": 0,
+ "SelectedString": "Tywin",
+ "NodeType": "ExtensionNode",
+ "Id": "5de408d41309424ea9ab0a9a57011168",
+ "Inputs": [],
+ "Outputs": [
+ {
+ "Id": "6c8499495f5d4beeb7e3ca58b861a297",
+ "Name": "item",
+ "Description": "The selected item",
+ "UsingDefaultValue": false,
+ "Level": 2,
+ "UseLevels": false,
+ "KeepListStructure": false
+ }
+ ],
+ "Replication": "Disabled",
+ "Description": "An example drop down node."
+ }
+ ],
+ "Connectors": [],
+ "Dependencies": [],
+ "NodeLibraryDependencies": [
+ {
+ "Name": "HowickMaker",
+ "Version": "0.4.1",
+ "ReferenceType": "Package",
+ "Nodes": [
+ "aeb3e5df26cc4f16af55bf0baef46ae1"
+ ]
+ },
+ {
+ "Name": "Dynamo Samples",
+ "Version": "2.0.0",
+ "ReferenceType": "Package",
+ "Nodes": [
+ "5de408d41309424ea9ab0a9a57011168"
+ ]
+ }
+ ],
+ "Bindings": [],
+ "View": {
+ "Dynamo": {
+ "ScaleFactor": 1.0,
+ "HasRunWithoutCrash": true,
+ "IsVisibleInDynamoLibrary": true,
+ "Version": "2.5.0.6521",
+ "RunType": "Automatic",
+ "RunPeriod": "1000"
+ },
+ "Camera": {
+ "Name": "Background Preview",
+ "EyeX": -17.0,
+ "EyeY": 24.0,
+ "EyeZ": 50.0,
+ "LookX": 12.0,
+ "LookY": -13.0,
+ "LookZ": -58.0,
+ "UpX": 0.0,
+ "UpY": 1.0,
+ "UpZ": 0.0
+ },
+ "NodeViews": [
+ {
+ "ShowGeometry": true,
+ "Name": "hMember.ByLineVector",
+ "Id": "aeb3e5df26cc4f16af55bf0baef46ae1",
+ "IsSetAsInput": false,
+ "IsSetAsOutput": false,
+ "Excluded": false,
+ "X": 39.256060510822806,
+ "Y": 268.69482120487669
+ },
+ {
+ "ShowGeometry": true,
+ "Name": "Drop Down Example",
+ "Id": "5de408d41309424ea9ab0a9a57011168",
+ "IsSetAsInput": false,
+ "IsSetAsOutput": false,
+ "Excluded": false,
+ "X": 493.04874262470372,
+ "Y": 283.18790496760249
+ }
+ ],
+ "Annotations": [],
+ "X": 82.818344906128914,
+ "Y": 51.13140818532122,
+ "Zoom": 0.82346504096947037
+ }
+}
\ No newline at end of file
From 2de8a871f3c1adbb909e5e30f11341fe30dee2d0 Mon Sep 17 00:00:00 2001
From: gantaa <43763136+reddyashish@users.noreply.github.com>
Date: Wed, 16 Oct 2019 09:31:18 -0400
Subject: [PATCH 6/6] some more comments
---
src/DynamoCore/Graph/Nodes/DummyNode.cs | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/DynamoCore/Graph/Nodes/DummyNode.cs b/src/DynamoCore/Graph/Nodes/DummyNode.cs
index e28b02c2996..dd39bd2a542 100644
--- a/src/DynamoCore/Graph/Nodes/DummyNode.cs
+++ b/src/DynamoCore/Graph/Nodes/DummyNode.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Xml;
-using Autodesk.DesignScript.Runtime;
+using Autodesk.DesignScript.Runtime;
using Dynamo.Core;
using Dynamo.Engine;
using Dynamo.Graph.Nodes.NodeLoaders;
@@ -11,6 +7,10 @@
using Dynamo.Utilities;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Xml;
namespace Dynamo.Graph.Nodes
{
@@ -467,12 +467,12 @@ internal string GetDescription()
public string LegacyAssembly { get; private set; }
///
- /// Type name of the node.
+ /// Type name of the node. This is property is only valid for NodeModel dummy nodes
///
public string TypeName { get; private set; }
///
- /// Returns the node's function name
+ /// Returns the node's function name. This property is only valid for ZeroTouch dummy nodes
///
public string FunctionName { get; private set; }