public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migratedData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(dsRevitNode, "RevitNodes.dll", "FamilyInstance.ByPointAndLevel", "FamilyInstance.ByPointAndLevel@FamilySymbol,Point,Level"); migratedData.AppendNode(dsRevitNode); string dsRevitNodeId = MigrationManager.GetGuidFromXmlElement(dsRevitNode); //create and reconnect the connecters PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId oldInPort2 = new PortId(oldNodeId, 2, PortType.Input); XmlElement connector2 = data.FindFirstConnector(oldInPort2); PortId newInPort0 = new PortId(dsRevitNodeId, 0, PortType.Input); PortId newInPort1 = new PortId(dsRevitNodeId, 1, PortType.Input); PortId newInPort2 = new PortId(dsRevitNodeId, 2, PortType.Input); data.ReconnectToPort(connector0, newInPort1); data.ReconnectToPort(connector1, newInPort0); data.ReconnectToPort(connector2, newInPort2); return migratedData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Geometry.Transform", "Geometry.Transform@CoordinateSystem,CoordinateSystem"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Create new node XmlElement identityCoordinateSystem = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "CoordinateSystem.Identity", "CoordinateSystem.Identity"); migrationData.AppendNode(identityCoordinateSystem); // Update connectors PortId oldInPort1 = new PortId(newNodeId, 1, PortType.Input); PortId newInPort2 = new PortId(newNodeId, 2, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); data.ReconnectToPort(connector1, newInPort2); data.CreateConnector(identityCoordinateSystem, 0, newNode, 1); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Plane.ByOriginNormal", "Plane.ByOriginNormal@Point,Vector"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); //append asVector Node XmlElement pointAsVector0 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "ProtoGeometry.dll", "Point.AsVector", "Point.AsVector"); migrationData.AppendNode(pointAsVector0); string pointAsVector0Id = MigrationManager.GetGuidFromXmlElement(pointAsVector0); // Update connectors PortId oldInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId oldInPort1 = new PortId(newNodeId, 1, PortType.Input); PortId pToV = new PortId(pointAsVector0Id, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); data.ReconnectToPort(connector0, pToV); data.ReconnectToPort(connector1, oldInPort0); data.CreateConnector(pointAsVector0, 0, newNode, 1); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Autodesk.DesignScript.Geometry.Solid.BySweep", "Autodesk.DesignScript.Geometry.Solid.BySweep@" + "Autodesk.DesignScript.Geometry.Curve,Autodesk.DesignScript.Geometry.Curve"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Update connectors PortId oldInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId oldInPort1 = new PortId(newNodeId, 1, PortType.Input); PortId oldInPort3 = new PortId(newNodeId, 3, PortType.Input); PortId newInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId newInPort1 = new PortId(newNodeId, 1, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector3 = data.FindFirstConnector(oldInPort3); data.RemoveFirstConnector(oldInPort1); //connector1.RemoveAll(); data.ReconnectToPort(connector0, newInPort1); data.ReconnectToPort(connector3, newInPort0); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migratedData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself XmlElement newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Surface.ByLoft", "[email protected][]"); migratedData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); data.RemoveFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId newInPort0 = new PortId(newNodeId, 0, PortType.Input); data.ReconnectToPort(connector1, newInPort0); PortId oldInPort2 = new PortId(oldNodeId, 2, PortType.Input); data.RemoveFirstConnector(oldInPort2); return migratedData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); // Create nodes XmlElement referencePoint = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(referencePoint, "RevitNodes.dll", "ReferencePoint.ByPoint", "ReferencePoint.ByPoint@Point"); migrationData.AppendNode(referencePoint); string referencePointId = MigrationManager.GetGuidFromXmlElement(referencePoint); XmlElement pointAtParameter = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Surface.PointAtParameter", "Surface.PointAtParameter@double,double"); migrationData.AppendNode(pointAtParameter); string pointAtParameterId = MigrationManager.GetGuidFromXmlElement(pointAtParameter); XmlElement uvU = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "ProtoGeometry.dll", "UV.U", "UV.U"); migrationData.AppendNode(uvU); string uvUId = MigrationManager.GetGuidFromXmlElement(uvU); XmlElement uvV = MigrationManager.CreateFunctionNode( data.Document, oldNode, 2, "ProtoGeometry.dll", "UV.V", "UV.V"); migrationData.AppendNode(uvV); string uvVId = MigrationManager.GetGuidFromXmlElement(uvV); // Update connectors PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); PortId papInPort0 = new PortId(pointAtParameterId, 0, PortType.Input); PortId uvUInPort0 = new PortId(uvUId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); XmlElement connectorUv = null; if (connector1 != null) { connectorUv = MigrationManager.CreateFunctionNodeFrom(connector1); data.CreateConnector(connectorUv); } if (connectorUv != null) { PortId uvVInPort0 = new PortId(uvVId, 0, PortType.Input); data.ReconnectToPort(connectorUv, uvVInPort0); } data.ReconnectToPort(connector0, papInPort0); data.ReconnectToPort(connector1, uvUInPort0); data.CreateConnector(uvU, 0, pointAtParameter, 1); data.CreateConnector(uvV, 0, pointAtParameter, 2); data.CreateConnector(pointAtParameter, 0, referencePoint, 0); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { // This migration assumes that the first input of the old node is // always an XYZ and never a Transform. NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Arc.ByCenterPointRadiusAngle", "Arc.ByCenterPointRadiusAngle@Point,double,double,double,Vector"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Create new nodes XmlElement zAxisNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Vector.ZAxis", "Vector.ZAxis"); migrationData.AppendNode(zAxisNode); string zAxisNodeId = MigrationManager.GetGuidFromXmlElement(zAxisNode); XmlElement toDegreeNodeStart = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "DSCoreNodes.dll", "Math.RadiansToDegrees", "Math.RadiansToDegrees@double"); migrationData.AppendNode(toDegreeNodeStart); string toDegreeNodeStartId = MigrationManager.GetGuidFromXmlElement(toDegreeNodeStart); XmlElement toDegreeNodeEnd = MigrationManager.CreateFunctionNode( data.Document, oldNode, 2, "DSCoreNodes.dll", "Math.RadiansToDegrees", "Math.RadiansToDegrees@double"); migrationData.AppendNode(toDegreeNodeEnd); string toDegreeNodeEndId = MigrationManager.GetGuidFromXmlElement(toDegreeNodeEnd); PortId oldInPort2 = new PortId(oldNodeId, 2, PortType.Input); XmlElement connector2 = data.FindFirstConnector(oldInPort2); PortId oldInPort3 = new PortId(oldNodeId, 3, PortType.Input); XmlElement connector3 = data.FindFirstConnector(oldInPort3); PortId toDegreeNodeStartPort = new PortId(toDegreeNodeStartId, 0, PortType.Input); PortId toDegreeNodeEndPort = new PortId(toDegreeNodeEndId, 0, PortType.Input); // Update connectors data.ReconnectToPort(connector2, toDegreeNodeStartPort); data.ReconnectToPort(connector3, toDegreeNodeEndPort); data.CreateConnector(toDegreeNodeStart, 0, newNode, 2); data.CreateConnector(toDegreeNodeEnd, 0, newNode, 3); data.CreateConnector(zAxisNode, 0, newNode, 4); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migratedData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(dsRevitNode, "RevitNodes.dll", "FaceAnalysisDisplay.ByViewFacePointsAndValues", "FaceAnalysisDisplay.ByViewFacePointsAndValues@var,FaceReference,double[][],double[]"); migratedData.AppendNode(dsRevitNode); string dsRevitNodeId = MigrationManager.GetGuidFromXmlElement(dsRevitNode); XmlElement documentNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "RevitNodes.dll", "Document.Current", "Document.Current"); migratedData.AppendNode(documentNode); XmlElement activeViewNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "RevitNodes.dll", "Document.ActiveView", "Document.ActiveView"); migratedData.AppendNode(activeViewNode); //create and reconnect the connecters PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId oldInPort2 = new PortId(oldNodeId, 2, PortType.Input); PortId oldInPort3 = new PortId(oldNodeId, 3, PortType.Input); XmlElement connector3 = data.FindFirstConnector(oldInPort3); PortId newInPort1 = new PortId(dsRevitNodeId, 1, PortType.Input); PortId newInPort2 = new PortId(dsRevitNodeId, 2, PortType.Input); PortId newInPort3 = new PortId(dsRevitNodeId, 3, PortType.Input); data.ReconnectToPort(connector0, newInPort3); data.ReconnectToPort(connector1, newInPort2); data.ReconnectToPort(connector3, newInPort1); data.RemoveFirstConnector(oldInPort2); data.CreateConnector(documentNode, 0, activeViewNode, 0); data.CreateConnector(activeViewNode, 0, dsRevitNode, 0); return migratedData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); // Create DSFunction node XmlElement newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "RevitNodes.dll", "StructuralFraming.ByCurveLevelUpVectorAndType", "StructuralFraming.ByCurveLevelUpVectorAndType@Curve,Level,Vector,StructuralType,FamilySymbol"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Create new nodes XmlElement one = MigrationManager.CreateCodeBlockNodeModelNode( data.Document, oldNode, 0, "1"); migrationData.AppendNode(one); string oneId = MigrationManager.GetGuidFromXmlElement(one); XmlElement level = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "RevitNodes.dll", "Level.ByElevation", "Level.ByElevation@double"); migrationData.AppendNode(level); string levelId = MigrationManager.GetGuidFromXmlElement(level); // Assume that structural framing created by 0.6.3 is always Beam XmlElement beam = MigrationManager.CreateFunctionNode( data.Document, oldNode, 2, "RevitNodes.dll", "StructuralType.Beam", "StructuralType.Beam"); migrationData.AppendNode(beam); string beamId = MigrationManager.GetGuidFromXmlElement(beam); // Update connectors PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId newInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId newInPort4 = new PortId(newNodeId, 4, PortType.Input); data.CreateConnector(one, 0, level, 0); data.CreateConnector(level, 0, newNode, 1); data.CreateConnector(beam, 0, newNode, 3); data.ReconnectToPort(connector0, newInPort4); data.ReconnectToPort(connector1, newInPort0); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Point.ByCylindricalCoordinates", "Point.ByCylindricalCoordinates@CoordinateSystem,double,double,double"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Create new node XmlElement identityCoordinateSystem = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "CoordinateSystem.Identity", "CoordinateSystem.Identity"); migrationData.AppendNode(identityCoordinateSystem); XmlElement converterNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "DSCoreNodes.dll", "Math.RadiansToDegrees", "Math.RadiansToDegrees@double"); migrationData.AppendNode(converterNode); string converterNodeId = MigrationManager.GetGuidFromXmlElement(converterNode); // Update connectors PortId oldInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId oldInPort1 = new PortId(newNodeId, 1, PortType.Input); PortId newInPort3 = new PortId(newNodeId, 3, PortType.Input); PortId converterInPort = new PortId(converterNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); data.ReconnectToPort(connector0, newInPort3); data.ReconnectToPort(connector1, converterInPort); data.CreateConnector(converterNode, 0, newNode, 1); data.CreateConnector(identityCoordinateSystem, 0, newNode, 0); // Add default values foreach (XmlNode child in oldNode.ChildNodes) newNode.AppendChild(child.Clone()); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); XmlElement codeBlockNode = MigrationManager.CreateCodeBlockNodeModelNode( data.Document, oldNode, 0, "domain[0][0]..domain[1][0]..#ucount+1;\n" + "domain[0][1]..domain[1][1]..#vcount+1;"); migrationData.AppendNode(codeBlockNode); string codeBlockNodeId = MigrationManager.GetGuidFromXmlElement(codeBlockNode); XmlElement uvNode = MigrationManager.CreateFunctionNode(data.Document, oldNode, 1, "ProtoGeometry.dll", "UV.ByCoordinates", "UV.ByCoordinates@double,double"); uvNode.SetAttribute("lacing", "CrossProduct"); migrationData.AppendNode(uvNode); XmlElement flattenNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(flattenNode, "", "Flatten", "Flatten"); flattenNode.SetAttribute("lacing", "Shortest"); migrationData.AppendNode(flattenNode); // Update connectors PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); PortId oldInPort2 = new PortId(oldNodeId, 2, PortType.Input); PortId newInPort0 = new PortId(codeBlockNodeId, 0, PortType.Input); PortId newInPort1 = new PortId(codeBlockNodeId, 1, PortType.Input); PortId newInPort2 = new PortId(codeBlockNodeId, 2, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); XmlElement connector2 = data.FindFirstConnector(oldInPort2); data.ReconnectToPort(connector0, newInPort0); data.ReconnectToPort(connector1, newInPort1); data.ReconnectToPort(connector2, newInPort2); data.CreateConnector(codeBlockNode, 0, uvNode, 0); data.CreateConnector(codeBlockNode, 1, uvNode, 1); data.CreateConnector(uvNode, 0, flattenNode, 0); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { var migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Surface.CoordinateSystemAtParameter", "Surface.CoordinateSystemAtParameter@double,double"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Update connectors PortId facePort = new PortId(newNodeId, 0, PortType.Input); PortId uvPort = new PortId(newNodeId, 1, PortType.Input); PortId newInPort0 = new PortId(newNodeId, 0, PortType.Input); XmlElement uvPortConnector = data.FindFirstConnector(uvPort); XmlElement facePortConnector = data.FindFirstConnector(facePort); data.ReconnectToPort(facePortConnector, newInPort0); if (uvPortConnector != null) { // Create new nodes only when the old node is connected to a UV node XmlElement nodeU = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "UV.U", "UV.U"); migrationData.AppendNode(nodeU); string nodeUId = MigrationManager.GetGuidFromXmlElement(nodeU); XmlElement nodeV = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "ProtoGeometry.dll", "UV.V", "UV.V"); migrationData.AppendNode(nodeV); string nodeVId = MigrationManager.GetGuidFromXmlElement(nodeV); // Update connectors PortId newInPortNodeU = new PortId(nodeUId, 0, PortType.Input); string nodeUVId = uvPortConnector.GetAttribute("start").ToString(); data.ReconnectToPort(uvPortConnector, newInPortNodeU); data.CreateConnector(nodeU, 0, newNode, 1); data.CreateConnector(nodeV, 0, newNode, 2); data.CreateConnectorFromId(nodeUVId, 0, nodeVId, 0); } return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migratedData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(dsRevitNode, "RevitNodes.dll", "AxonometricView.ByEyePointAndTarget", "AxonometricView.ByEyePointAndTarget@Point,Point,var,string,bool"); migratedData.AppendNode(dsRevitNode); string dsRevitNodeId = MigrationManager.GetGuidFromXmlElement(dsRevitNode); //create and reconnect the connecters PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId oldInPort2 = new PortId(oldNodeId, 2, PortType.Input); XmlElement connector2 = data.FindFirstConnector(oldInPort2); PortId oldInPort3 = new PortId(oldNodeId, 3, PortType.Input); XmlElement connector3 = data.FindFirstConnector(oldInPort3); PortId oldInPort4 = new PortId(oldNodeId, 4, PortType.Input); XmlElement connector4 = data.FindFirstConnector(oldInPort4); PortId newInPort0 = new PortId(dsRevitNodeId, 0, PortType.Input); PortId newInPort1 = new PortId(dsRevitNodeId, 1, PortType.Input); PortId newInPort2 = new PortId(dsRevitNodeId, 2, PortType.Input); PortId newInPort3 = new PortId(dsRevitNodeId, 3, PortType.Input); PortId newInPort4 = new PortId(dsRevitNodeId, 4, PortType.Input); data.ReconnectToPort(connector0, newInPort0); data.ReconnectToPort(connector1, newInPort1); data.ReconnectToPort(connector2, newInPort3); data.ReconnectToPort(connector3, newInPort2); data.ReconnectToPort(connector4, newInPort4); return migratedData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Line.ByStartPointEndPoint", "Line.ByStartPointEndPoint@Point,Point"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Update connectors PortId oldInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId oldInPort1 = new PortId(newNodeId, 1, PortType.Input); PortId newInPort0 = new PortId(newNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); data.ReconnectToPort(connector1, newInPort0); if (connector1 != null) { // Create new node only when the old node is connected to a normal vector XmlElement translateNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Geometry.Translate", "*****@*****.**"); migrationData.AppendNode(translateNode); string translateNodeId = MigrationManager.GetGuidFromXmlElement(translateNode); // Update connectors PortId newInPortTranslate1 = new PortId(translateNodeId, 1, PortType.Input); string nodeOriginId = connector1.GetAttribute("start").ToString(); data.CreateConnector(translateNode, 0, newNode, 1); data.CreateConnectorFromId(nodeOriginId, 0, translateNodeId, 0); data.ReconnectToPort(connector0, newInPortTranslate1); } return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Line.ByStartPointEndPoint", "Line.ByStartPointEndPoint@Point,Point"); newNode.SetAttribute("lacing", "Shortest"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Create new nodes XmlElement reverse = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "DSCoreNodes.dll", "List.Reverse", "List.Reverse@var[]..[]"); migrationData.AppendNode(reverse); string reverseId = MigrationManager.GetGuidFromXmlElement(reverse); XmlElement rest = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "DSCoreNodes.dll", "List.RestOfItems", "List.RestOfItems@var[]..[]"); migrationData.AppendNode(rest); // Update connectors PortId oldInPort0 = new PortId(newNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId reverseInPort0 = new PortId(reverseId, 0, PortType.Input); data.ReconnectToPort(connector0, reverseInPort0); data.CreateConnector(reverse, 0, newNode, 0); data.CreateConnector(reverse, 0, rest, 0); data.CreateConnector(rest, 0, newNode, 1); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migratedData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(dsRevitNode, "RevitNodes.dll", "FamilyInstance.ByPointAndLevel", "FamilyInstance.ByPointAndLevel@FamilySymbol,Point,Level"); migratedData.AppendNode(dsRevitNode); string dsRevitNodeId = MigrationManager.GetGuidFromXmlElement(dsRevitNode); //create and reconnect the connecters PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.INPUT); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.INPUT); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId oldInPort2 = new PortId(oldNodeId, 2, PortType.INPUT); XmlElement connector2 = data.FindFirstConnector(oldInPort2); PortId newInPort0 = new PortId(dsRevitNodeId, 0, PortType.INPUT); PortId newInPort1 = new PortId(dsRevitNodeId, 1, PortType.INPUT); PortId newInPort2 = new PortId(dsRevitNodeId, 2, PortType.INPUT); data.ReconnectToPort(connector0, newInPort1); data.ReconnectToPort(connector1, newInPort0); data.ReconnectToPort(connector2, newInPort2); return(migratedData); }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Curve.CoordinateSystemAtParameter", "Curve.CoordinateSystemAtParameter@double"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Update connectors PortId oldInPort0 = new PortId(newNodeId, 0, PortType.INPUT); PortId oldInPort1 = new PortId(newNodeId, 1, PortType.INPUT); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); data.ReconnectToPort(connector0, oldInPort1); data.ReconnectToPort(connector1, oldInPort0); return(migrationData); }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migratedData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(dsRevitNode, "ProtoGeometry.dll", "Solid.ByLoft", "Solid.ByLoft@Curve[]"); migratedData.AppendNode(dsRevitNode); string dsRevitNodeId = MigrationManager.GetGuidFromXmlElement(dsRevitNode); XmlElement createListNode = MigrationManager.CreateNode(data.Document, oldNode, 0, "CoreNodeModels.CreateList", "Create List"); migratedData.AppendNode(createListNode); createListNode.SetAttribute("inputcount", "2"); string createListNodeId = MigrationManager.GetGuidFromXmlElement(createListNode); //create and reconnect the connecters PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId newInPort0 = new PortId(createListNodeId, 0, PortType.Input); PortId newInPort1 = new PortId(createListNodeId, 1, PortType.Input); data.ReconnectToPort(connector0, newInPort0); data.ReconnectToPort(connector1, newInPort1); data.CreateConnector(createListNode, 0, dsRevitNode, 0); return(migratedData); }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { var migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Geometry.Intersect", "Geometry.Intersect@Geometry"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); var oldInPort0 = new PortId(newNodeId, 0, PortType.Input); var connector0 = data.FindFirstConnector(oldInPort0); var oldInPort1 = new PortId(newNodeId, 1, PortType.Input); var connector1 = data.FindFirstConnector(oldInPort1); data.ReconnectToPort(connector0, oldInPort0); data.ReconnectToPort(connector1, oldInPort1); // reconnect output port at 1 to 0 var oldXYZOut = new PortId(newNodeId, 1, PortType.Output); var newXyzOut = new PortId(newNodeId, 0, PortType.Output); var xyzConnects = data.FindConnectors(oldXYZOut); if (xyzConnects != null) { xyzConnects.ToList().ForEach(x => data.ReconnectToPort(x, newXyzOut)); } // get u parm if (connector0 != null) { var crvInputNodeId = connector0.Attributes["start"].Value; var crvInputIndex = int.Parse(connector0.Attributes["start_index"].Value); // make parm at point node var parmAtPt = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Curve.ParameterAtPoint", "Curve.ParameterAtPoint@Point"); migrationData.AppendNode(parmAtPt); var parmAtPtId = MigrationManager.GetGuidFromXmlElement(parmAtPt); // connect output of project to parm at pt data.CreateConnectorFromId(crvInputNodeId, crvInputIndex, parmAtPtId, 0); data.CreateConnector(newNode, 0, parmAtPt, 1); // reconnect remaining output ports to new nodes var newTOut = new PortId(parmAtPtId, 0, PortType.Output); var oldTOut = new PortId(newNodeId, 2, PortType.Output); var oldTConnectors = data.FindConnectors(oldTOut); oldTConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newTOut)); } // get v parm if (connector1 != null) { var crvInputNodeId = connector1.Attributes["start"].Value; var crvInputIndex = int.Parse(connector1.Attributes["start_index"].Value); // make parm at point node var parmAtPt = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Curve.ParameterAtPoint", "Curve.ParameterAtPoint@Point"); migrationData.AppendNode(parmAtPt); var parmAtPtId = MigrationManager.GetGuidFromXmlElement(parmAtPt); // connect output of project to parm at pt data.CreateConnectorFromId(crvInputNodeId, crvInputIndex, parmAtPtId, 0); data.CreateConnector(newNode, 0, parmAtPt, 1); // reconnect remaining output ports to new nodes var newTOut = new PortId(parmAtPtId, 0, PortType.Output); var oldTOut = new PortId(newNodeId, 3, PortType.Output); var oldTConnectors = data.FindConnectors(oldTOut); oldTConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newTOut)); } return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "RevitNodes.dll", "Solid.Torus", "Solid.Torus@Vector,Point,double,double"); migrationData.AppendNode(newNode); // Add default values foreach (XmlNode child in oldNode.ChildNodes) { var newChild = child.Clone() as XmlElement; switch (newChild.GetAttribute("index")) { case "0": PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.INPUT); XmlElement connector0 = data.FindFirstConnector(oldInPort0); if (connector0 != null) { break; } XmlElement zAxis0 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Vector.ZAxis", "Vector.ZAxis"); migrationData.AppendNode(zAxis0); data.CreateConnector(zAxis0, 0, newNode, 0); break; case "1": PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.INPUT); XmlElement connector1 = data.FindFirstConnector(oldInPort1); if (connector1 != null) { break; } XmlElement cbn1 = MigrationManager.CreateCodeBlockNodeModelNode( data.Document, oldNode, 1, "Point.ByCoordinates(0,0,1);"); migrationData.AppendNode(cbn1); data.CreateConnector(cbn1, 0, newNode, 1); break; case "2": case "3": newNode.AppendChild(newChild); break; default: break; } } return(migrationData); }
/// <summary> /// Reconnect a given connector to another port identified by "port". /// </summary> /// <param name="connector">The connector to update. Note that this /// parameter can be null, in which case there won't be any movement /// performed. This simplifies the caller so that it does not have to /// do a null-check before every call to this method (connectors may /// not present).</param> /// <param name="port">The new port to connect to.</param> /// public void ReconnectToPort(XmlElement connector, PortId port) { if (connector == null) // Connector does not exist. return; XmlAttributeCollection attribs = connector.Attributes; if (port.PortType == PortType.Input) // We're updating end point. { attribs["end"].Value = port.OwningNode; attribs["end_index"].Value = port.PortIndex.ToString(); } else // Updating the start point. { attribs["start"].Value = port.OwningNode; attribs["start_index"].Value = port.PortIndex.ToString(); } }
public void RemoveFirstConnector(PortId portId) { if (connectorRoot == null || (connectorRoot.ChildNodes == null)) return; foreach (XmlNode node in connectorRoot.ChildNodes) { XmlElement connector = node as XmlElement; XmlAttributeCollection attribs = connector.Attributes; if (portId.PortType == PortType.Input) { if (portId.OwningNode != attribs["end"].Value) continue; if (portId.PortIndex != Convert.ToInt16(attribs["end_index"].Value)) continue; } else { if (portId.OwningNode != attribs["start"].Value) continue; if (portId.PortIndex != Convert.ToInt16(attribs["start_index"].Value)) continue; } connectorRoot.RemoveChild(connector); } }
/// <summary> /// Call this method to find the connector in the associate /// XmlDocument, given its start and end port information. /// </summary> /// <param name="startPort">The identity of the start port.</param> /// <param name="endPort">The identity of the end port.</param> /// <returns>Returns the notmatching connector if one is found, or null /// otherwise.</returns> /// public XmlElement FindConnector(PortId startPort, PortId endPort) { if (connectorRoot != null && (connectorRoot.ChildNodes != null)) { foreach (XmlNode node in connectorRoot.ChildNodes) { XmlElement connector = node as XmlElement; XmlAttributeCollection attribs = connector.Attributes; if (startPort.OwningNode != attribs[0].Value) continue; if (endPort.OwningNode != attribs[2].Value) continue; if (startPort.PortIndex != Convert.ToInt16(attribs[1].Value)) continue; if (endPort.PortIndex != Convert.ToInt16(attribs[3].Value)) continue; return connector; // Found the matching connector. } } return null; }
/// <summary> /// /// </summary> /// <param name="iSoundChipType"></param> /// <param name="clock"></param> /// <returns></returns> public static VsifClient TryToConnectVSIF(VsifSoundModuleType soundModule, PortId comPort) { return(TryToConnectVSIF(soundModule, comPort, true)); }
/// <summary> /// /// </summary> /// <param name="ftdiPort"></param> public PortWriterMsx(FTDI ftdiPort, PortId portNo) : base(ftdiPort, portNo) { }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migratedData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself XmlElement dsCoreNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(dsCoreNode, "DSCoreNodes.dll", "List.RemoveItemAtIndex", "List.RemoveItemAtIndex@var[]..[],int[]"); migratedData.AppendNode(dsCoreNode); string dsCoreNodeId = MigrationManager.GetGuidFromXmlElement(dsCoreNode); //create and reconnect the connecters PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId newInPort0 = new PortId(dsCoreNodeId, 0, PortType.Input); PortId newInPort1 = new PortId(dsCoreNodeId, 1, PortType.Input); data.ReconnectToPort(connector0, newInPort1); data.ReconnectToPort(connector1, newInPort0); return migratedData; }
/// <summary> /// /// </summary> /// <param name="ftdiPort"></param> public PortWriter(FTDI ftdiPort, PortId portNo) { this.ftdiPort = ftdiPort; PortName = "FTDI_COM" + (int)portNo; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migratedData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself XmlElement coordinateNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(coordinateNode, "ProtoGeometry.dll", "CoordinateSystem.ByOriginVectors", "CoordinateSystem.ByOriginVectors@Autodesk.DesignScript.Geometry.Point," + "Autodesk.DesignScript.Geometry.Vector,Autodesk.DesignScript.Geometry.Vector," + "Autodesk.DesignScript.Geometry.Vector"); migratedData.AppendNode(coordinateNode); string coordinateNodeId = MigrationManager.GetGuidFromXmlElement(coordinateNode); XmlElement asVectorNode0 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Point.AsVector", "Point.AsVector"); migratedData.AppendNode(asVectorNode0); string asVectorNode0Id = MigrationManager.GetGuidFromXmlElement(asVectorNode0); XmlElement asVectorNode1 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "ProtoGeometry.dll", "Point.AsVector", "Point.AsVector"); migratedData.AppendNode(asVectorNode1); string asVectorNode1Id = MigrationManager.GetGuidFromXmlElement(asVectorNode1); XmlElement vectorCrossNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 2, "ProtoGeometry.dll", "Vector.Cross", "Vector.Cross@Vector"); migratedData.AppendNode(vectorCrossNode); string vectorCrossNodeId = MigrationManager.GetGuidFromXmlElement(vectorCrossNode); XmlElement vectorReverseNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 3, "ProtoGeometry.dll", "Vector.Reverse", "Vector.Reverse"); migratedData.AppendNode(vectorReverseNode); string vectorReverseNodeId = MigrationManager.GetGuidFromXmlElement(vectorReverseNode); //create and reconnect the connecters PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.INPUT); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.INPUT); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId oldInPort2 = new PortId(oldNodeId, 2, PortType.INPUT); XmlElement connector2 = data.FindFirstConnector(oldInPort2); PortId newInPort0 = new PortId(coordinateNodeId, 0, PortType.INPUT); PortId newInPort1 = new PortId(coordinateNodeId, 1, PortType.INPUT); PortId newInPort2 = new PortId(coordinateNodeId, 2, PortType.INPUT); PortId newInPort3 = new PortId(coordinateNodeId, 3, PortType.INPUT); PortId newInPort4 = new PortId(asVectorNode0Id, 0, PortType.INPUT); PortId newInPort5 = new PortId(asVectorNode1Id, 0, PortType.INPUT); data.ReconnectToPort(connector0, newInPort0); data.ReconnectToPort(connector1, newInPort4); data.ReconnectToPort(connector2, newInPort5); data.CreateConnector(asVectorNode0, 0, vectorCrossNode, 0); data.CreateConnector(asVectorNode1, 0, vectorCrossNode, 1); data.CreateConnector(vectorCrossNode, 0, vectorReverseNode, 0); data.CreateConnector(vectorReverseNode, 0, coordinateNode, 1); data.CreateConnector(asVectorNode1, 0, coordinateNode, 2); data.CreateConnector(asVectorNode0, 0, coordinateNode, 3); return(migratedData); }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); #region Create new DSFunction node - Geometry.GetClosestPoint@Geometry XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Geometry.GetClosestPoint", "Geometry.GetClosestPoint@Geometry"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); var oldInPort0 = new PortId(newNodeId, 0, PortType.INPUT); var ptInConnector = data.FindFirstConnector(oldInPort0); var oldInPort1 = new PortId(newNodeId, 1, PortType.INPUT); var faceInConnector = data.FindFirstConnector(oldInPort1); data.ReconnectToPort(ptInConnector, oldInPort1); data.ReconnectToPort(faceInConnector, oldInPort0); #endregion #region Reconnect the old UV out port // if necessary, get the face UV var oldUVOut = new PortId(newNodeId, 1, PortType.OUTPUT); var oldUVConnectors = data.FindConnectors(oldUVOut); if (oldUVConnectors != null && oldUVConnectors.Any()) { // make parm at point node var parmAtPt = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Surface.UVParameterAtPoint", "Surface.UVParameterAtPoint@Point"); migrationData.AppendNode(parmAtPt); var parmAtPtId = MigrationManager.GetGuidFromXmlElement(parmAtPt); var crvInputNodeId = faceInConnector.Attributes["start"].Value; var crvInputIndex = int.Parse(faceInConnector.Attributes["start_index"].Value); // connect output of project to parm at pt data.CreateConnectorFromId(crvInputNodeId, crvInputIndex, parmAtPtId, 0); data.CreateConnector(newNode, 0, parmAtPt, 1); // reconnect remaining output ports to new nodes var newTOut = new PortId(parmAtPtId, 0, PortType.OUTPUT); oldUVConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newTOut)); } #endregion #region Reconnect the old distance out port var oldDOut = new PortId(newNodeId, 2, PortType.OUTPUT); var oldDConnectors = data.FindConnectors(oldDOut); // If necessary, get the distance to the projected point if (oldDConnectors != null && oldDConnectors.Any()) { // Get the original output ports connected to input var ptInputNodeId = ptInConnector.Attributes["start"].Value; var ptInputIndex = int.Parse(ptInConnector.Attributes["start_index"].Value); // make distance to node var distTo = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Geometry.DistanceTo", "Geometry.DistanceTo@Geometry"); migrationData.AppendNode(distTo); var distToId = MigrationManager.GetGuidFromXmlElement(distTo); data.CreateConnector(newNode, 0, distTo, 0); data.CreateConnectorFromId(ptInputNodeId, ptInputIndex, distToId, 1); var newDOut = new PortId(distToId, 0, PortType.OUTPUT); oldDConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newDOut)); } #endregion return(migrationData); }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "EllipseArc.ByPlaneRadiiStartAngleSweepAngle", "EllipseArc.ByPlaneRadiiStartAngleSweepAngle@Plane,double,double,double,double"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Create new node XmlElement zAxis = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Vector.ZAxis", "Vector.ZAxis"); migrationData.AppendNode(zAxis); XmlElement planeNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "", "Plane.ByOriginNormal", "Plane.ByOriginNormal@Point,Vector"); planeNode.SetAttribute("isVisible", "false"); migrationData.AppendNode(planeNode); string planeNodeId = MigrationManager.GetGuidFromXmlElement(planeNode); XmlElement converterNode0 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 2, "DSCoreNodes.dll", "Math.RadiansToDegrees", "Math.RadiansToDegrees@double"); migrationData.AppendNode(converterNode0); string converterNode0Id = MigrationManager.GetGuidFromXmlElement(converterNode0); XmlElement converterNode1 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 3, "DSCoreNodes.dll", "Math.RadiansToDegrees", "Math.RadiansToDegrees@double"); migrationData.AppendNode(converterNode1); string converterNode1Id = MigrationManager.GetGuidFromXmlElement(converterNode1); XmlElement minusNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 4, "", "-", "-@,"); migrationData.AppendNode(minusNode); string minusNodeId = MigrationManager.GetGuidFromXmlElement(minusNode); // Update connectors PortId oldInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId oldInPort3 = new PortId(newNodeId, 3, PortType.Input); PortId oldInPort4 = new PortId(newNodeId, 4, PortType.Input); PortId planeNodeInPort = new PortId(planeNodeId, 0, PortType.Input); PortId converterInPort = new PortId(converterNode0Id, 0, PortType.Input); PortId minusNodeInPort0 = new PortId(minusNodeId, 0, PortType.Input); PortId minusNodeInPort1 = new PortId(minusNodeId, 1, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector3 = data.FindFirstConnector(oldInPort3); XmlElement connector4 = data.FindFirstConnector(oldInPort4); data.ReconnectToPort(connector0, planeNodeInPort); data.ReconnectToPort(connector3, converterInPort); data.ReconnectToPort(connector4, minusNodeInPort0); if (connector3 != null) { XmlElement connector5 = MigrationManager.CreateFunctionNodeFrom(connector3); data.CreateConnector(connector5); data.ReconnectToPort(connector5, minusNodeInPort1); } data.CreateConnector(minusNode, 0, converterNode1, 0); data.CreateConnector(converterNode0, 0, newNode, 3); data.CreateConnector(converterNode1, 0, newNode, 4); data.CreateConnector(zAxis, 0, planeNode, 1); data.CreateConnector(planeNode, 0, newNode, 0); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "CoordinateSystem.Rotate", "CoordinateSystem.Rotate@Point,Vector,double"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Create new node XmlElement identityCoordinateSystem = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "CoordinateSystem.Identity", "CoordinateSystem.Identity"); migrationData.AppendNode(identityCoordinateSystem); XmlElement converterNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "DSCoreNodes.dll", "Math.RadiansToDegrees", "Math.RadiansToDegrees@double"); migrationData.AppendNode(converterNode); string converterNodeId = MigrationManager.GetGuidFromXmlElement(converterNode); //append asVector Node XmlElement pointAsVector0 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "ProtoGeometry.dll", "Point.AsVector", "Point.AsVector"); migrationData.AppendNode(pointAsVector0); string pointAsVector0Id = MigrationManager.GetGuidFromXmlElement(pointAsVector0); // Update connectors PortId oldInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId oldInPort1 = new PortId(newNodeId, 1, PortType.Input); PortId oldInPort2 = new PortId(newNodeId, 2, PortType.Input); PortId newInPort1 = new PortId(newNodeId, 1, PortType.Input); PortId newInPort2 = new PortId(pointAsVector0Id, 0, PortType.Input); PortId converterInPort = new PortId(converterNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); XmlElement connector2 = data.FindFirstConnector(oldInPort2); data.ReconnectToPort(connector0, newInPort1); data.ReconnectToPort(connector1, newInPort2); data.ReconnectToPort(connector2, converterInPort); data.CreateConnector(converterNode, 0, newNode, 3); data.CreateConnector(identityCoordinateSystem, 0, newNode, 0); data.CreateConnector(pointAsVector0, 0, newNode, 2); return(migrationData); }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "CoordinateSystem.PostMultiplyBy", "CoordinateSystem.PostMultiplyBy@CoordinateSystem"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Create new nodes XmlElement vectorCrossFrom = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Vector.Cross", "Vector.Cross@Vector"); migrationData.AppendNode(vectorCrossFrom); string vectorCrossFromId = MigrationManager.GetGuidFromXmlElement(vectorCrossFrom); XmlElement vectorCrossTo = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "ProtoGeometry.dll", "Vector.Cross", "Vector.Cross@Vector"); migrationData.AppendNode(vectorCrossTo); string vectorCrossToId = MigrationManager.GetGuidFromXmlElement(vectorCrossTo); XmlElement csFrom = MigrationManager.CreateFunctionNode( data.Document, oldNode, 2, "ProtoGeometry.dll", "CoordinateSystem.ByOriginVectors", "CoordinateSystem.ByOriginVectors@Autodesk.DesignScript.Geometry.Point," + "Autodesk.DesignScript.Geometry.Vector,Autodesk.DesignScript.Geometry" + ".Vector,Autodesk.DesignScript.Geometry.Vector"); string csFromId = MigrationManager.GetGuidFromXmlElement(csFrom); migrationData.AppendNode(csFrom); XmlElement csTo = MigrationManager.CreateFunctionNode( data.Document, oldNode, 3, "ProtoGeometry.dll", "CoordinateSystem.ByOriginVectors", "CoordinateSystem.ByOriginVectors@Autodesk.DesignScript.Geometry.Point," + "Autodesk.DesignScript.Geometry.Vector,Autodesk.DesignScript.Geometry" + ".Vector,Autodesk.DesignScript.Geometry.Vector"); string csToId = MigrationManager.GetGuidFromXmlElement(csTo); migrationData.AppendNode(csTo); XmlElement csInverse = MigrationManager.CreateFunctionNode( data.Document, oldNode, 4, "ProtoGeometry.dll", "CoordinateSystem.Inverse", "CoordinateSystem.Inverse"); migrationData.AppendNode(csInverse); //append asVector Node XmlElement pointAsVector0 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 5, "ProtoGeometry.dll", "Point.AsVector", "Point.AsVector"); migrationData.AppendNode(pointAsVector0); string pointAsVector0Id = MigrationManager.GetGuidFromXmlElement(pointAsVector0); XmlElement pointAsVector1 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 6, "ProtoGeometry.dll", "Point.AsVector", "Point.AsVector"); migrationData.AppendNode(pointAsVector1); string pointAsVector1Id = MigrationManager.GetGuidFromXmlElement(pointAsVector1); XmlElement pointAsVector2 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 7, "ProtoGeometry.dll", "Point.AsVector", "Point.AsVector"); migrationData.AppendNode(pointAsVector2); string pointAsVector2Id = MigrationManager.GetGuidFromXmlElement(pointAsVector2); XmlElement pointAsVector3 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 8, "ProtoGeometry.dll", "Point.AsVector", "Point.AsVector"); migrationData.AppendNode(pointAsVector3); string pointAsVector3Id = MigrationManager.GetGuidFromXmlElement(pointAsVector3); PortId pToV0 = new PortId(pointAsVector0Id, 0, PortType.Input); PortId pToV1 = new PortId(pointAsVector1Id, 0, PortType.Input); PortId pToV2 = new PortId(pointAsVector2Id, 0, PortType.Input); PortId pToV3 = new PortId(pointAsVector3Id, 0, PortType.Input); // Update connectors PortId csFrom0 = new PortId(csFromId, 0, PortType.Input); PortId csFrom1 = new PortId(csFromId, 1, PortType.Input); PortId csFrom2 = new PortId(csFromId, 2, PortType.Input); PortId csFrom3 = new PortId(csFromId, 3, PortType.Input); PortId csTo0 = new PortId(csToId, 0, PortType.Input); PortId csTo1 = new PortId(csToId, 1, PortType.Input); PortId csTo2 = new PortId(csToId, 2, PortType.Input); PortId csTo3 = new PortId(csToId, 3, PortType.Input); PortId oldInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId oldInPort1 = new PortId(newNodeId, 1, PortType.Input); PortId oldInPort2 = new PortId(newNodeId, 2, PortType.Input); PortId oldInPort3 = new PortId(newNodeId, 3, PortType.Input); PortId oldInPort4 = new PortId(newNodeId, 4, PortType.Input); PortId oldInPort5 = new PortId(newNodeId, 5, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); XmlElement connector2 = data.FindFirstConnector(oldInPort2); XmlElement connector3 = data.FindFirstConnector(oldInPort3); XmlElement connector4 = data.FindFirstConnector(oldInPort4); XmlElement connector5 = data.FindFirstConnector(oldInPort5); data.ReconnectToPort(connector0, csFrom0); data.ReconnectToPort(connector1, pToV0); data.ReconnectToPort(connector2, pToV1); data.ReconnectToPort(connector3, csTo0); data.ReconnectToPort(connector4, pToV2); data.ReconnectToPort(connector5, pToV3); data.CreateConnector(pointAsVector0, 0, csFrom, 3); data.CreateConnector(pointAsVector1, 0, csFrom, 2); data.CreateConnector(pointAsVector2, 0, csTo, 3); data.CreateConnector(pointAsVector3, 0, csTo, 2); data.CreateConnector(pointAsVector0, 0, vectorCrossFrom, 1); data.CreateConnector(pointAsVector1, 0, vectorCrossFrom, 0); data.CreateConnector(pointAsVector2, 0, vectorCrossTo, 1); data.CreateConnector(pointAsVector3, 0, vectorCrossTo, 0); data.CreateConnector(vectorCrossFrom, 0, csFrom, 1); data.CreateConnector(vectorCrossTo, 0, csTo, 1); data.CreateConnector(csFrom, 0, csInverse, 0); data.CreateConnector(csInverse, 0, newNode, 1); data.CreateConnector(csTo, 0, newNode, 0); return(migrationData); }
/// <summary> /// /// </summary> /// <param name="ftdiPort"></param> public PortWriterGenesis(FTDI ftdiPort, PortId portNo) : base(ftdiPort, portNo) { }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migratedData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself XmlElement dsCoreNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(dsCoreNode, "DSCoreNodes.dll", "List.TakeEveryNthItem", "List.TakeEveryNthItem@var[]..[],int,int"); foreach (XmlNode child in oldNode.ChildNodes) { dsCoreNode.AppendChild(child.CloneNode(true)); } migratedData.AppendNode(dsCoreNode); string dsCoreNodeId = MigrationManager.GetGuidFromXmlElement(dsCoreNode); //create and reconnect the connecters PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId newInPort0 = new PortId(dsCoreNodeId, 0, PortType.Input); PortId newInPort1 = new PortId(dsCoreNodeId, 1, PortType.Input); data.ReconnectToPort(connector0, newInPort1); data.ReconnectToPort(connector1, newInPort0); // Add default values foreach (XmlNode child in oldNode.ChildNodes) dsCoreNode.AppendChild(child.Clone()); return migratedData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { var migrationData = new NodeMigrationData(data.Document); #region Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Geometry.Intersect", "Geometry.Intersect@Geometry"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); var oldInPort0 = new PortId(newNodeId, 0, PortType.Input); var faceInConnector = data.FindFirstConnector(oldInPort0); var oldInPort1 = new PortId(newNodeId, 1, PortType.Input); var crvInConnector = data.FindFirstConnector(oldInPort1); // probably unnecessary data.ReconnectToPort(faceInConnector, oldInPort0); data.ReconnectToPort(crvInConnector, oldInPort1); #endregion // in ports of curve-face intersection // 1) crv -> stays the same // 2) face -> stays the same // out ports of curve-face intersection // 1) result -> this will be killed off by the migration // 2) xyz -> this is out port 1 of oldNode // 3) uv -> use Surface.ParameterAtPoint // 4) t -> use Curve.ParameterAtPoint // 5) edge -> killed // 6) edge t -> killed // reconnect output port at 1 to 0 var oldXYZOut = new PortId(newNodeId, 1, PortType.Output); var newXyzOut = new PortId(newNodeId, 0, PortType.Output); var xyzConnects = data.FindConnectors(oldXYZOut); if (xyzConnects != null) { xyzConnects.ToList().ForEach(x => data.ReconnectToPort(x, newXyzOut)); } // get uv parm if (faceInConnector != null) { var faceInputNodeId = faceInConnector.Attributes["start"].Value; var faceInputIndex = int.Parse(faceInConnector.Attributes["start_index"].Value); // get the parameter as a vector var parmAtPt = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Surface.UVParameterAtPoint", "Surface.UVParameterAtPoint@Point"); migrationData.AppendNode(parmAtPt); var parmAtPtId = MigrationManager.GetGuidFromXmlElement(parmAtPt); // connect output of project to parm at pt data.CreateConnectorFromId(faceInputNodeId, faceInputIndex, parmAtPtId, 0); data.CreateConnector(newNode, 0, parmAtPt, 1); // reconnect remaining output ports to new nodes var newUVOut = new PortId(parmAtPtId, 0, PortType.Output); var oldUVOut = new PortId(newNodeId, 2, PortType.Output); var oldUVConnectors = data.FindConnectors(oldUVOut); if (oldUVConnectors != null) { oldUVConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newUVOut)); } } // get v parm if (crvInConnector != null) { var crvInputNodeId = crvInConnector.Attributes["start"].Value; var crvInputIndex = int.Parse(crvInConnector.Attributes["start_index"].Value); // make parm at point node var parmAtPt = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Curve.ParameterAtPoint", "Curve.ParameterAtPoint@Point"); migrationData.AppendNode(parmAtPt); var parmAtPtId = MigrationManager.GetGuidFromXmlElement(parmAtPt); // connect output of project to parm at pt data.CreateConnectorFromId(crvInputNodeId, crvInputIndex, parmAtPtId, 0); data.CreateConnector(newNode, 0, parmAtPt, 1); // reconnect remaining output ports to new nodes var newTOut = new PortId(parmAtPtId, 0, PortType.Output); var oldTOut = new PortId(newNodeId, 3, PortType.Output); var oldTConnectors = data.FindConnectors(oldTOut); if (oldTConnectors != null) { oldTConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newTOut)); } } return(migrationData); }
/// <summary> /// /// </summary> /// <param name="ftdiPort"></param> public PortWriterNesIndirect(FTDI ftdiPort, PortId portNo) : base(ftdiPort, portNo) { }
/// <summary> /// /// </summary> /// <param name="ftdiPort"></param> public PortWriterGenericUart(FTDI ftdiPort, PortId portNo) : base(ftdiPort, portNo) { }
/// <summary> /// /// </summary> /// <param name="iSoundChipType"></param> /// <param name="clock"></param> /// <returns></returns> public static VsifClient TryToConnectVSIF(VsifSoundModuleType soundModule, PortId comPort, bool shareOnly) { lock (lockObject) { foreach (var c in vsifClients) { if (c.SoundModuleType == soundModule) { if (c.DataWriter.PortName.Equals("COM" + (int)(comPort + 1))) { c.ReferencedCount++; return(c); } if (c.DataWriter.PortName.Equals("FTDI_COM" + (int)comPort)) { c.ReferencedCount++; return(c); } } } if (shareOnly) { return(null); } try { switch (soundModule) { case VsifSoundModuleType.Generic_UART: { SerialPort sp = null; sp = new SerialPort("COM" + ((int)comPort + 1)); sp.WriteTimeout = 100; sp.ReadTimeout = 100; sp.BaudRate = 115200; sp.BaudRate = 1200 * (int)Settings.Default.BitBangWaitAY8910; sp.StopBits = StopBits.One; sp.DataBits = 8; sp.Handshake = Handshake.None; sp.Open(); var client = new VsifClient(soundModule, new PortWriterGenericUart(sp)); client.Disposed += Client_Disposed; vsifClients.Add(client); return(client); } case VsifSoundModuleType.SMS: { SerialPort sp = null; sp = new SerialPort("COM" + ((int)comPort + 1)); sp.WriteTimeout = 100; sp.ReadTimeout = 100; sp.BaudRate = 115200; sp.StopBits = StopBits.Two; //sp.BaudRate = 57600; //sp.StopBits = StopBits.One; sp.Parity = Parity.None; sp.DataBits = 8; sp.Handshake = Handshake.None; sp.Open(); var client = new VsifClient(soundModule, new PortWriterGenesis(sp)); client.Disposed += Client_Disposed; vsifClients.Add(client); return(client); } case VsifSoundModuleType.Genesis: { SerialPort sp = null; sp = new SerialPort("COM" + ((int)comPort + 1)); sp.WriteTimeout = 500; sp.ReadTimeout = 500; //sp.BaudRate = 230400; sp.BaudRate = 163840; sp.StopBits = StopBits.One; sp.Parity = Parity.None; sp.DataBits = 8; sp.Open(); var client = new VsifClient(soundModule, new PortWriterGenesis(sp)); client.Disposed += Client_Disposed; vsifClients.Add(client); return(client); } case VsifSoundModuleType.Genesis_Low: { SerialPort sp = null; sp = new SerialPort("COM" + ((int)comPort + 1)); sp.WriteTimeout = 500; sp.ReadTimeout = 500; sp.BaudRate = 115200; sp.StopBits = StopBits.One; sp.Parity = Parity.None; sp.DataBits = 8; sp.Open(); var client = new VsifClient(soundModule, new PortWriterGenesis(sp)); client.Disposed += Client_Disposed; vsifClients.Add(client); return(client); } case VsifSoundModuleType.Genesis_FTDI: { var ftdi = new FTD2XX_NET.FTDI(); var stat = ftdi.OpenByIndex((uint)comPort); if (stat == FTDI.FT_STATUS.FT_OK) { ftdi.SetBitMode(0x00, FTDI.FT_BIT_MODES.FT_BIT_MODE_RESET); ftdi.SetBitMode(0xff, FTDI.FT_BIT_MODES.FT_BIT_MODE_ASYNC_BITBANG); ftdi.SetBaudRate(FTDI_BAUDRATE_GEN * FTDI_BAUDRATE_GEN_MUL); ftdi.SetTimeouts(500, 500); ftdi.SetLatency(0); byte ps = 0; ftdi.GetPinStates(ref ps); if ((ps & 0x40) == 0) { uint dummy = 0; ftdi.Write(new byte[] { 0x40 }, 1, ref dummy); } var client = new VsifClient(soundModule, new PortWriterGenesis(ftdi, comPort)); //ftdi.Write(new byte[] { (byte)(((0x07 << 1) & 0xe) | 0) }, 1, ref dummy); //ftdi.Write(new byte[] { (byte)(((0x38 >> 2) & 0xe) | 1) }, 1, ref dummy); //ftdi.Write(new byte[] { (byte)(((0xC0 >> 5) & 0xe) | 0) }, 1, ref dummy); //ftdi.Write(new byte[] { 1 }, 1, ref dummy); client.Disposed += Client_Disposed; vsifClients.Add(client); return(client); } } break; case VsifSoundModuleType.MSX_FTDI: { var ftdi = new FTD2XX_NET.FTDI(); var stat = ftdi.OpenByIndex((uint)comPort); if (stat == FTDI.FT_STATUS.FT_OK) { ftdi.SetBitMode(0x00, FTDI.FT_BIT_MODES.FT_BIT_MODE_RESET); ftdi.SetBitMode(0xff, FTDI.FT_BIT_MODES.FT_BIT_MODE_ASYNC_BITBANG); ftdi.SetBaudRate(FTDI_BAUDRATE_MSX * FTDI_BAUDRATE_MSX_MUL); ftdi.SetTimeouts(500, 500); ftdi.SetLatency(0); //{ // uint dummy = 0x00; // ftdi.Write(new byte[] { (byte)dummy }, 1, ref dummy); //} var client = new VsifClient(soundModule, new PortWriterMsx(ftdi, comPort)); client.Disposed += Client_Disposed; vsifClients.Add(client); return(client); } } break; case VsifSoundModuleType.NES_FTDI_INDIRECT: case VsifSoundModuleType.NES_FTDI_DIRECT: { var ftdi = new FTD2XX_NET.FTDI(); var stat = ftdi.OpenByIndex((uint)comPort); if (stat == FTDI.FT_STATUS.FT_OK) { ftdi.SetBitMode(0x00, FTDI.FT_BIT_MODES.FT_BIT_MODE_RESET); ftdi.SetBitMode(0xff, FTDI.FT_BIT_MODES.FT_BIT_MODE_ASYNC_BITBANG); ftdi.SetBaudRate(FTDI_BAUDRATE_NES * FTDI_BAUDRATE_NES_MUL); ftdi.SetTimeouts(500, 500); ftdi.SetLatency(0); byte ps = 0; ftdi.GetPinStates(ref ps); if ((ps & 0x10) == 0x10) { uint dummy = 0; ftdi.Write(new byte[] { 0x00 }, 1, ref dummy); } VsifClient client = null; switch (soundModule) { case VsifSoundModuleType.NES_FTDI_DIRECT: client = new VsifClient(soundModule, new PortWriterNesDirect(ftdi, comPort)); break; case VsifSoundModuleType.NES_FTDI_INDIRECT: client = new VsifClient(soundModule, new PortWriterNesIndirect(ftdi, comPort)); break; } client.Disposed += Client_Disposed; vsifClients.Add(client); return(client); } } break; } //sp.Write(new byte[] { (byte)'M', (byte)'a', (byte)'M', (byte)'i' }, 0, 4); //sp.BaseStream.WriteByte((byte)soundModule); //Thread.Sleep(100); //var ret = sp.BaseStream.ReadByte(); //if (ret == 0x0F) //OK } catch (Exception ex) { if (ex.GetType() == typeof(Exception)) { throw; } else if (ex.GetType() == typeof(SystemException)) { throw; } } return(null); } }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { #region Migration Setup Steps NodeMigrationData migratedData = new NodeMigrationData(data.Document); // Legacy "ModelText" node takes in the following 6 inputs: // // 0 - text (string) // 1 - position (XYZ) // 2 - normal (XYZ) // 3 - up (XYZ) // 4 - depth (double) // 5 - text type name (string) // // The new "ModelText.ByTextSketchPlaneAndPosition" node takes in // the following inputs: // // 0 - text (string) // 1 - sketchPlane (SketchPlane) // 2 - xCoordinateInPlane (double) // 3 - yCoordinateInPlane (double) // 4 - textDepth (double) // 5 - modelTextType (ModelTextType) // XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); #endregion #region Create New Nodes... XmlElement dsModelText = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(dsModelText, "RevitNodes.dll", "ModelText.ByTextSketchPlaneAndPosition", "ModelText.ByTextSketchPlaneAndPosition@" + "string,SketchPlane,double,double,double,ModelTextType"); migratedData.AppendNode(dsModelText); string dsModelTextId = MigrationManager.GetGuidFromXmlElement(dsModelText); // Create a "Plane.ByOriginNormal" that takes a "Point" (origin) and // a "Vector" (normal). This new node will convert both the "position" // and "normal" to a "Plane". XmlElement plane = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Plane.ByOriginNormal", "Plane.ByOriginNormal@Point,Vector"); migratedData.AppendNode(plane); string planeId = MigrationManager.GetGuidFromXmlElement(plane); // Create a "SketchPlane.ByPlane" node which converts a "Plane" // into a "SketchPlane". XmlElement dsSketchPlane = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "RevitNodes.dll", "SketchPlane.ByPlane", "SketchPlane.ByPlane@Plane"); migratedData.AppendNode(dsSketchPlane); string dsSketchPlaneId = MigrationManager.GetGuidFromXmlElement(dsSketchPlane); // Create a "ModelTextType.ByName" node that converts a "string" // into "ModelTextType" node. XmlElement dsModelTextType = MigrationManager.CreateFunctionNode( data.Document, oldNode, 2, "RevitNodes.dll", "ModelTextType.ByName", "ModelTextType.ByName@string"); migratedData.AppendNode(dsModelTextType); string dsModelTextTypeId = MigrationManager.GetGuidFromXmlElement(dsModelTextType); //append asVector Node XmlElement pointAsVector0 = MigrationManager.CreateFunctionNode( data.Document, oldNode, 3, "ProtoGeometry.dll", "Point.AsVector", "Point.AsVector"); migratedData.AppendNode(pointAsVector0); string pointAsVector0Id = MigrationManager.GetGuidFromXmlElement(pointAsVector0); //append number Node XmlElement numberNode = MigrationManager.CreateCodeBlockNodeModelNode( data.Document, oldNode, 4, "0;"); migratedData.AppendNode(numberNode); #endregion #region Move Connectors Onto the New Nodes // Move connector for "text" over to the new node. PortId oldInPort = new PortId(oldNodeId, 0, PortType.Input); PortId newInPort = new PortId(dsModelTextId, 0, PortType.Input); XmlElement connector = data.FindFirstConnector(oldInPort); data.ReconnectToPort(connector, newInPort); // Move connector for "position" over to "Plane" node. oldInPort = new PortId(oldNodeId, 1, PortType.Input); newInPort = new PortId(planeId, 0, PortType.Input); connector = data.FindFirstConnector(oldInPort); data.ReconnectToPort(connector, newInPort); // Move connector for "normal" over to "Plane" node. oldInPort = new PortId(oldNodeId, 2, PortType.Input); newInPort = new PortId(pointAsVector0Id, 0, PortType.Input); connector = data.FindFirstConnector(oldInPort); data.ReconnectToPort(connector, newInPort); data.CreateConnector(pointAsVector0, 0, plane, 1); // Connect from "Plane" to "SketchPlane". data.CreateConnector(plane, 0, dsSketchPlane, 0); // Connect from "SketchPlane" to the new node. data.CreateConnector(dsSketchPlane, 0, dsModelText, 1); oldInPort = new PortId(oldNodeId, 3, PortType.Input); data.RemoveFirstConnector(oldInPort); // Move connector for "depth" over to the new node. oldInPort = new PortId(oldNodeId, 4, PortType.Input); newInPort = new PortId(dsModelTextId, 4, PortType.Input); connector = data.FindFirstConnector(oldInPort); data.ReconnectToPort(connector, newInPort); // Move connector for "text type name" over to "ModelTextType" node. oldInPort = new PortId(oldNodeId, 5, PortType.Input); newInPort = new PortId(dsModelTextTypeId, 0, PortType.Input); connector = data.FindFirstConnector(oldInPort); data.ReconnectToPort(connector, newInPort); // Connect from "ModelTextType" to the new node. data.CreateConnector(dsModelTextType, 0, dsModelText, 5); data.CreateConnector(numberNode, 0, dsModelText, 2); data.CreateConnector(numberNode, 0, dsModelText, 3); #endregion return(migratedData); }
/// <summary> /// Call this method to retrieve the first connector given a port. This /// method is a near equivalent of FindConnectors, but only return the /// first connector found. This way the caller codes can be simplified /// in a way that it does not have the validate the returned list for /// item count before accessing its element. /// </summary> /// <param name="portId">The identity of the port for which the first /// connector is to be retrieved.</param> /// <returns>Returns the first connector found to connect to the given /// port, or null otherwise.</returns> /// public XmlElement FindFirstConnector(PortId portId) { if (connectorRoot == null || (connectorRoot.ChildNodes == null)) return null; foreach (XmlNode node in connectorRoot.ChildNodes) { XmlElement connector = node as XmlElement; XmlAttributeCollection attribs = connector.Attributes; if (portId.PortType == PortType.Input) { if (portId.OwningNode != attribs["end"].Value) continue; if (portId.PortIndex != Convert.ToInt16(attribs["end_index"].Value)) continue; } else { if (portId.OwningNode != attribs["start"].Value) continue; if (portId.PortIndex != Convert.ToInt16(attribs["start_index"].Value)) continue; } return connector; // Found one, look no further. } return null; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "DSCoreNodes.dll", "List.Sublists", "List.Sublists@var[]..[],var[]..[],int"); newNode.SetAttribute("lacing", "shortest"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); // Create code block node string rangesString = "{0}"; foreach (XmlNode childNode in oldNode.ChildNodes) { if (childNode.Name.Equals(typeof(string).FullName)) rangesString = "{" + childNode.Attributes[0].Value + "};"; } XmlElement codeBlockNode = MigrationManager.CreateCodeBlockNodeModelNode( data.Document, oldNode, 0, rangesString); migrationData.AppendNode(codeBlockNode); string codeBlockNodeId = MigrationManager.GetGuidFromXmlElement(codeBlockNode); // Update connectors for (int idx = 0; true; idx++) { PortId oldInPort = new PortId(newNodeId, idx + 2, PortType.Input); PortId newInPort = new PortId(codeBlockNodeId, idx, PortType.Input); XmlElement connector = data.FindFirstConnector(oldInPort); if (connector == null) break; data.ReconnectToPort(connector, newInPort); } PortId oldInPort1 = new PortId(newNodeId, 1, PortType.Input); PortId newInPort2 = new PortId(newNodeId, 2, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); data.ReconnectToPort(connector1, newInPort2); data.CreateConnector(codeBlockNode, 0, newNode, 1); return migrationData; }
/// <summary> /// Given a port, get all connectors that connect to it. /// </summary> /// <param name="portId">The identity of the port for which connectors /// are to be retrieved.</param> /// <returns>Returns the list of connectors connecting to the given /// port, or null if no connection is found connecting to it.</returns> /// public IEnumerable<XmlElement> FindConnectors(PortId portId) { if (connectorRoot == null || (connectorRoot.ChildNodes == null)) return null; List<XmlElement> foundConnectors = null; foreach (XmlNode node in connectorRoot.ChildNodes) { XmlElement connector = node as XmlElement; XmlAttributeCollection attribs = connector.Attributes; if (portId.PortType == PortType.Input) { if (portId.OwningNode != attribs["end"].Value) continue; if (portId.PortIndex != Convert.ToInt16(attribs["end_index"].Value)) continue; } else { if (portId.OwningNode != attribs["start"].Value) continue; if (portId.PortIndex != Convert.ToInt16(attribs["start_index"].Value)) continue; } if (foundConnectors == null) foundConnectors = new List<XmlElement>(); foundConnectors.Add(connector); // There can only be one connector for input port... if (portId.PortType == PortType.Input) break; // ... so look no further. } return foundConnectors; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var converterNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(converterNode, "DSCoreNodes.dll", "Math.DegreesToRadians", "Math.DegreesToRadians@double"); migrationData.AppendNode(converterNode); string converterNodeId = MigrationManager.GetGuidFromXmlElement(converterNode); // Create new node XmlElement atanNode = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "DSCoreNodes.dll", "Math.Atan", "Math.Atan@double"); migrationData.AppendNode(atanNode); string atanNodeId = MigrationManager.GetGuidFromXmlElement(atanNode); // Update connectors PortId oldInPort0 = new PortId(converterNodeId, 0, PortType.Input); PortId newInPortAtan = new PortId(atanNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); data.ReconnectToPort(connector0, newInPortAtan); data.CreateConnector(atanNode, 0, converterNode, 0); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); // Create nodes XmlElement referencePoint = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(referencePoint, "RevitNodes.dll", "ReferencePoint.ByPoint", "ReferencePoint.ByPoint@Point"); migrationData.AppendNode(referencePoint); string referencePointId = MigrationManager.GetGuidFromXmlElement(referencePoint); XmlElement pointAtParameter = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "RevitNodes.dll", "Face.PointAtParameter", "Face.PointAtParameter@double,double"); migrationData.AppendNode(pointAtParameter); string pointAtParameterId = MigrationManager.GetGuidFromXmlElement(pointAtParameter); XmlElement uvU = MigrationManager.CreateFunctionNode( data.Document, oldNode, 1, "ProtoGeometry.dll", "UV.U", "UV.U"); migrationData.AppendNode(uvU); string uvUId = MigrationManager.GetGuidFromXmlElement(uvU); XmlElement uvV = MigrationManager.CreateFunctionNode( data.Document, oldNode, 2, "ProtoGeometry.dll", "UV.V", "UV.V"); migrationData.AppendNode(uvV); string uvVId = MigrationManager.GetGuidFromXmlElement(uvV); // Update connectors PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.INPUT); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.INPUT); PortId papInPort0 = new PortId(pointAtParameterId, 0, PortType.INPUT); PortId uvUInPort0 = new PortId(uvUId, 0, PortType.INPUT); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); XmlElement connectorUv = null; if (connector1 != null) { connectorUv = MigrationManager.CreateFunctionNodeFrom(connector1); data.CreateConnector(connectorUv); } if (connectorUv != null) { PortId uvVInPort0 = new PortId(uvVId, 0, PortType.INPUT); data.ReconnectToPort(connectorUv, uvVInPort0); } data.ReconnectToPort(connector0, papInPort0); data.ReconnectToPort(connector1, uvUInPort0); data.CreateConnector(uvU, 0, pointAtParameter, 1); data.CreateConnector(uvV, 0, pointAtParameter, 2); data.CreateConnector(pointAtParameter, 0, referencePoint, 0); return(migrationData); }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migratedData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself XmlElement dsCoreNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(dsCoreNode, "DSCoreNodes.dll", "List.GetItemAtIndex", "List.GetItemAtIndex@var[]..[],int"); migratedData.AppendNode(dsCoreNode); string dsCoreNodeId = MigrationManager.GetGuidFromXmlElement(dsCoreNode); XmlElement stringJoinNode = MigrationManager.CreateVarArgFunctionNode( data.Document, oldNode, 1, "DSCoreNodes.dll", "String.Join", "String.Join@string,string[]", "2"); migratedData.AppendNode(stringJoinNode); string stringJoinNodeId = MigrationManager.GetGuidFromXmlElement(stringJoinNode); XmlElement cbn = MigrationManager.CreateCodeBlockNodeModelNode( data.Document, oldNode, 2, "0"); migratedData.AppendNode(cbn); string cbnId = MigrationManager.GetGuidFromXmlElement(cbn); //create and reconnect the connecters PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId newInPort0 = new PortId(stringJoinNodeId, 0, PortType.Input); PortId newInPort1 = new PortId(stringJoinNodeId, 1, PortType.Input); data.ReconnectToPort(connector0, newInPort1); data.ReconnectToPort(connector1, newInPort0); data.CreateConnector(stringJoinNode, 0, dsCoreNode, 0); data.CreateConnector(cbn, 0, dsCoreNode, 1); // Add default values foreach (XmlNode child in oldNode.ChildNodes) { var newChild = child.Clone() as XmlElement; if (newChild.GetAttribute("index") == "1") newChild.SetAttribute("index", "0"); stringJoinNode.AppendChild(newChild); } return migratedData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { var migrationData = new NodeMigrationData(data.Document); #region Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Geometry.Intersect", "Geometry.Intersect@Geometry"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); var oldInPort0 = new PortId(newNodeId, 0, PortType.Input); var faceInConnector = data.FindFirstConnector(oldInPort0); var oldInPort1 = new PortId(newNodeId, 1, PortType.Input); var crvInConnector = data.FindFirstConnector(oldInPort1); // probably unnecessary data.ReconnectToPort(faceInConnector, oldInPort0); data.ReconnectToPort(crvInConnector, oldInPort1); #endregion // in ports of curve-face intersection // 1) crv -> stays the same // 2) face -> stays the same // out ports of curve-face intersection // 1) result -> this will be killed off by the migration // 2) xyz -> this is out port 1 of oldNode // 3) uv -> use Surface.ParameterAtPoint // 4) t -> use Curve.ParameterAtPoint // 5) edge -> killed // 6) edge t -> killed // reconnect output port at 1 to 0 var oldXYZOut = new PortId(newNodeId, 1, PortType.Output); var newXyzOut = new PortId(newNodeId, 0, PortType.Output); var xyzConnects = data.FindConnectors(oldXYZOut); if (xyzConnects != null) { xyzConnects.ToList().ForEach(x => data.ReconnectToPort(x, newXyzOut)); } // get uv parm if (faceInConnector != null) { var faceInputNodeId = faceInConnector.Attributes["start"].Value; var faceInputIndex = int.Parse(faceInConnector.Attributes["start_index"].Value); // get the parameter as a vector var parmAtPt = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Surface.UVParameterAtPoint", "Surface.UVParameterAtPoint@Point"); migrationData.AppendNode(parmAtPt); var parmAtPtId = MigrationManager.GetGuidFromXmlElement(parmAtPt); // connect output of project to parm at pt data.CreateConnectorFromId(faceInputNodeId, faceInputIndex, parmAtPtId, 0); data.CreateConnector(newNode, 0, parmAtPt, 1); // reconnect remaining output ports to new nodes var newUVOut = new PortId(parmAtPtId, 0, PortType.Output); var oldUVOut = new PortId(newNodeId, 2, PortType.Output); var oldUVConnectors = data.FindConnectors(oldUVOut); if (oldUVConnectors != null) oldUVConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newUVOut)); } // get v parm if (crvInConnector != null) { var crvInputNodeId = crvInConnector.Attributes["start"].Value; var crvInputIndex = int.Parse(crvInConnector.Attributes["start_index"].Value); // make parm at point node var parmAtPt = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Curve.ParameterAtPoint", "Curve.ParameterAtPoint@Point"); migrationData.AppendNode(parmAtPt); var parmAtPtId = MigrationManager.GetGuidFromXmlElement(parmAtPt); // connect output of project to parm at pt data.CreateConnectorFromId(crvInputNodeId, crvInputIndex, parmAtPtId, 0); data.CreateConnector(newNode, 0, parmAtPt, 1); // reconnect remaining output ports to new nodes var newTOut = new PortId(parmAtPtId, 0, PortType.Output); var oldTOut = new PortId(newNodeId, 3, PortType.Output); var oldTConnectors = data.FindConnectors(oldTOut); if (oldTConnectors != null) oldTConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newTOut)); } return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string nodeId = MigrationManager.GetGuidFromXmlElement(oldNode); PortId inPort0 = new PortId(nodeId, 0, PortType.Input); PortId inPort1 = new PortId(nodeId, 1, PortType.Input); XmlElement connector0 = data.FindFirstConnector(inPort0); XmlElement connector1 = data.FindFirstConnector(inPort1); XmlElement newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); migrationData.AppendNode(newNode); if (connector0 == null) { // If there is no key, migrate to List.MaximumItem MigrationManager.SetFunctionSignature(newNode, "DSCoreNodes.dll", "List.MaximumItem", "List.MaximumItem@var[]..[]"); PortId newInPort1 = new PortId(nodeId, 1, PortType.Input); data.ReconnectToPort(connector1, inPort0); return migrationData; } // If there is key, migrate to FunctionObject.ds MaximumItemByKey MigrationManager.SetFunctionSignature(newNode, "", "MaximumItemByKey", "MaximumItemByKey@var[]..[],_FunctionObject"); // Update connectors data.ReconnectToPort(connector0, inPort1); data.ReconnectToPort(connector1, inPort0); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Geometry.GetClosestPoint", "Geometry.GetClosestPoint@Geometry"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); var oldInPort0 = new PortId(newNodeId, 0, PortType.INPUT); var connector0 = data.FindFirstConnector(oldInPort0); var oldInPort1 = new PortId(newNodeId, 1, PortType.INPUT); var connector1 = data.FindFirstConnector(oldInPort1); data.ReconnectToPort(connector0, oldInPort0); data.ReconnectToPort(connector1, oldInPort1); if (connector0 != null) { // Get the original output ports connected to input var ptInputNodeId = connector0.Attributes["start"].Value; var ptInputIndex = int.Parse(connector0.Attributes["start_index"].Value); // make distance to node var distTo = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Geometry.DistanceTo", "Geometry.DistanceTo@Geometry"); migrationData.AppendNode(distTo); var distToId = MigrationManager.GetGuidFromXmlElement(distTo); data.CreateConnector(newNode, 0, distTo, 0); data.CreateConnectorFromId(ptInputNodeId, ptInputIndex, distToId, 1); var oldDOut = new PortId(newNodeId, 2, PortType.OUTPUT); var newDOut = new PortId(distToId, 0, PortType.OUTPUT); var oldDConnectors = data.FindConnectors(oldDOut); oldDConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newDOut)); } if (connector1 != null) { var crvInputNodeId = connector1.Attributes["start"].Value; var crvInputIndex = int.Parse(connector1.Attributes["start_index"].Value); // make parm at point node var parmAtPt = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Curve.ParameterAtPoint", "Curve.ParameterAtPoint@Point"); migrationData.AppendNode(parmAtPt); var parmAtPtId = MigrationManager.GetGuidFromXmlElement(parmAtPt); // connect output of project to parm at pt data.CreateConnectorFromId(crvInputNodeId, crvInputIndex, parmAtPtId, 0); data.CreateConnector(newNode, 0, parmAtPt, 1); // reconnect remaining output ports to new nodes var newTOut = new PortId(parmAtPtId, 0, PortType.OUTPUT); var oldTOut = new PortId(newNodeId, 1, PortType.OUTPUT); var oldTConnectors = data.FindConnectors(oldTOut); oldTConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newTOut)); } return(migrationData); }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); XmlElement newNode = MigrationManager.CloneAndChangeName(oldNode, "DSCore.Map", "List.Map"); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); XmlElement connector1 = data.FindFirstConnector(oldInPort1); PortId newInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId newInPort1 = new PortId(newNodeId, 1, PortType.Input); data.ReconnectToPort(connector0, newInPort1); data.ReconnectToPort(connector1, newInPort0); migrationData.AppendNode(newNode); return migrationData; }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { var migrationData = new NodeMigrationData(data.Document); // Create DSFunction node XmlElement oldNode = data.MigratedNodes.ElementAt(0); var newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "ProtoGeometry.dll", "Geometry.Intersect", "Geometry.Intersect@Geometry"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); var oldInPort0 = new PortId(newNodeId, 0, PortType.Input); var connector0 = data.FindFirstConnector(oldInPort0); var oldInPort1 = new PortId(newNodeId, 1, PortType.Input); var connector1 = data.FindFirstConnector(oldInPort1); data.ReconnectToPort(connector0, oldInPort0); data.ReconnectToPort(connector1, oldInPort1); // reconnect output port at 1 to 0 var oldXYZOut = new PortId(newNodeId, 1, PortType.Output); var newXyzOut = new PortId(newNodeId, 0, PortType.Output); var xyzConnects = data.FindConnectors(oldXYZOut); if (xyzConnects != null) { xyzConnects.ToList().ForEach(x => data.ReconnectToPort(x, newXyzOut)); } // get u parm if (connector0 != null) { var crvInputNodeId = connector0.Attributes["start"].Value; var crvInputIndex = int.Parse(connector0.Attributes["start_index"].Value); // make parm at point node var parmAtPt = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Curve.ParameterAtPoint", "Curve.ParameterAtPoint@Point"); migrationData.AppendNode(parmAtPt); var parmAtPtId = MigrationManager.GetGuidFromXmlElement(parmAtPt); // connect output of project to parm at pt data.CreateConnectorFromId(crvInputNodeId, crvInputIndex, parmAtPtId, 0); data.CreateConnector(newNode, 0, parmAtPt, 1); // reconnect remaining output ports to new nodes var newTOut = new PortId(parmAtPtId, 0, PortType.Output); var oldTOut = new PortId(newNodeId, 2, PortType.Output); var oldTConnectors = data.FindConnectors(oldTOut); oldTConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newTOut)); } // get v parm if (connector1 != null) { var crvInputNodeId = connector1.Attributes["start"].Value; var crvInputIndex = int.Parse(connector1.Attributes["start_index"].Value); // make parm at point node var parmAtPt = MigrationManager.CreateFunctionNode( data.Document, oldNode, 0, "ProtoGeometry.dll", "Curve.ParameterAtPoint", "Curve.ParameterAtPoint@Point"); migrationData.AppendNode(parmAtPt); var parmAtPtId = MigrationManager.GetGuidFromXmlElement(parmAtPt); // connect output of project to parm at pt data.CreateConnectorFromId(crvInputNodeId, crvInputIndex, parmAtPtId, 0); data.CreateConnector(newNode, 0, parmAtPt, 1); // reconnect remaining output ports to new nodes var newTOut = new PortId(parmAtPtId, 0, PortType.Output); var oldTOut = new PortId(newNodeId, 3, PortType.Output); var oldTConnectors = data.FindConnectors(oldTOut); oldTConnectors.ToList().ForEach(x => data.ReconnectToPort(x, newTOut)); } return(migrationData); }
public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { NodeMigrationData migrationData = new NodeMigrationData(data.Document); XmlElement oldNode = data.MigratedNodes.ElementAt(0); string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); // Create nodes XmlElement newNode = MigrationManager.CreateFunctionNodeFrom(oldNode); MigrationManager.SetFunctionSignature(newNode, "DSCoreNodes.dll", "List.Slice", "List.Slice@var[]..[],int,int,int"); migrationData.AppendNode(newNode); string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); XmlElement plus = MigrationManager.CreateFunctionNode(data.Document, oldNode, 0, "", "+", "+@,"); migrationData.AppendNode(plus); string plusId = MigrationManager.GetGuidFromXmlElement(plus); // Update connectors PortId oldInPort0 = new PortId(oldNodeId, 0, PortType.Input); PortId oldInPort1 = new PortId(oldNodeId, 1, PortType.Input); PortId oldInPort2 = new PortId(oldNodeId, 2, PortType.Input); XmlElement connector0 = data.FindFirstConnector(oldInPort0); XmlElement connector1 = data.FindFirstConnector(oldInPort1); XmlElement connector2 = data.FindFirstConnector(oldInPort2); PortId newInPort0 = new PortId(newNodeId, 0, PortType.Input); PortId newInPort1 = new PortId(newNodeId, 1, PortType.Input); PortId plusInPort1 = new PortId(plusId, 1, PortType.Input); if (connector0 != null) { string startId = connector0.GetAttribute("start"); data.CreateConnectorFromId(startId, 0, plusId, 0); } data.ReconnectToPort(connector0, newInPort1); data.ReconnectToPort(connector1, plusInPort1); data.ReconnectToPort(connector2, newInPort0); data.CreateConnector(plus, 0, newNode, 2); // Add default value XmlElement defaultValue = data.Document.CreateElement("PortInfo"); defaultValue.SetAttribute("index", "3"); defaultValue.SetAttribute("default", "True"); newNode.AppendChild(defaultValue); return migrationData; }