diff --git a/src/DynamoRevit/Nodes/AdaptiveComponents.cs b/src/DynamoRevit/Nodes/AdaptiveComponents.cs index 0643ccb072e..b824d5f0805 100644 --- a/src/DynamoRevit/Nodes/AdaptiveComponents.cs +++ b/src/DynamoRevit/Nodes/AdaptiveComponents.cs @@ -8,12 +8,31 @@ using Dynamo.Models; using Dynamo.Utilities; using Microsoft.FSharp.Collections; -using RevitServices.Persistence; using Value = Dynamo.FScheme.Value; using Dynamo.Revit; +using RevitServices.Persistence; namespace Dynamo.Nodes { + [NodeName("Adaptive Component by XYZs")] + [NodeCategory(BuiltinNodeCategories.REVIT_FAMILIES)] + [NodeDescription("Given a list of XYZs and a family type, creates an adaptive component at that location.")] + public class AdaptiveComponentByPoints : RevitTransactionNodeWithOneOutput + { + public override Value Evaluate(FSharpList args) + { + throw new NotImplementedException(); + } + + [NodeMigration(from: "0.6.3", to: "0.7.0.0")] + public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) + { + return MigrateToDsFunction(data, "DSRevitNodes.dll", + "AdaptiveComponent.ByPoints", "AdaptiveComponent.ByPoints@Point[],FamilySymbol"); + } + + } + [NodeName("Adaptive Component Batch by XYZs")] [NodeCategory(BuiltinNodeCategories.REVIT_FAMILIES)] [NodeDescription("Given sets of points, create adaptive components at those location.")] @@ -93,13 +112,14 @@ public override Value Evaluate(FSharpList args) if (instData.Any()) { ICollection ids; - if (DocumentManager.GetInstance().CurrentUIDocument.Document.IsFamilyDocument) + var document = DocumentManager.GetInstance().CurrentUIDocument.Document; + if (document.IsFamilyDocument) { - ids = DocumentManager.GetInstance().CurrentUIDocument.Document.FamilyCreate.NewFamilyInstances2(instData); + ids = document.FamilyCreate.NewFamilyInstances2(instData); } else { - ids = DocumentManager.GetInstance().CurrentUIDocument.Document.Create.NewFamilyInstances2(instData); + ids = document.Create.NewFamilyInstances2(instData); } //add our batch-created instances ids' @@ -161,7 +181,8 @@ private static void UpdatePlacementPoints(FamilyInstance ac, FSharpList x int i = 0; foreach (ElementId id in placePointIds) { - var point = DocumentManager.GetInstance().CurrentUIDocument.Document.GetElement(id) as ReferencePoint; + var document = DocumentManager.GetInstance().CurrentUIDocument.Document; + var point = document.GetElement(id) as ReferencePoint; var pt = (XYZ) ((Value.Container) pts.ElementAt(i)).Item; point.Position = pt; i++; @@ -176,4 +197,41 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) } } + [NodeName("Adaptive Component by UVs on Face")] + [NodeCategory(BuiltinNodeCategories.REVIT_FAMILIES)] + [NodeDescription("Given a list of XYZs and a family type, creates an adaptive component at that location on the face.")] + public class AdaptiveComponentByUvsOnFace : RevitTransactionNodeWithOneOutput + { + public override Value Evaluate(FSharpList args) + { + throw new NotImplementedException(); + } + + [NodeMigration(from: "0.6.3", to: "0.7.0.0")] + public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) + { + return MigrateToDsFunction(data, "DSRevitNodes.dll", + "AdaptiveComponent.ByPointsOnFace", + "AdaptiveComponent.ByPointsOnFace@double[][],Face,FamilySymbol"); + } + } + + [NodeName("Adaptive Component by Parameter on Curve")] + [NodeCategory(BuiltinNodeCategories.REVIT_FAMILIES)] + [NodeDescription("Given a list of parameters and a family type, creates an adaptive component at that location on the curve.")] + public class AdaptiveComponentByParametersOnCurve : RevitTransactionNodeWithOneOutput + { + public override Value Evaluate(FSharpList args) + { + throw new NotImplementedException(); + } + + [NodeMigration(from: "0.6.3", to: "0.7.0.0")] + public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) + { + return MigrateToDsFunction(data, "DSRevitNodes.dll", + "AdaptiveComponent.ByPointsOnCurve", + "AdaptiveComponent.ByPointsOnCurve@double[],Curve,FamilySymbol"); + } + } } diff --git a/src/DynamoRevit/Nodes/AnalysisDisplay.cs b/src/DynamoRevit/Nodes/AnalysisDisplay.cs index 041ced010ef..1086986dc1d 100644 --- a/src/DynamoRevit/Nodes/AnalysisDisplay.cs +++ b/src/DynamoRevit/Nodes/AnalysisDisplay.cs @@ -245,8 +245,8 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself - XmlElement dsRevitNode = MigrationManager.CreateFunctionNode( - data.Document, "DSRevitNodes.dll", + XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); + MigrationManager.SetFunctionSignature(dsRevitNode, "DSRevitNodes.dll", "FaceAnalysisDisplay.ByViewFacePointsAndValues", "FaceAnalysisDisplay.ByViewFacePointsAndValues@var,FaceReference,double[][],double[]"); @@ -370,8 +370,8 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself - XmlElement dsRevitNode = MigrationManager.CreateFunctionNode( - data.Document, "DSRevitNodes.dll", + XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); + MigrationManager.SetFunctionSignature(dsRevitNode, "DSRevitNodes.dll", "PointAnalysisDisplay.ByViewPointsAndValues", "PointAnalysisDisplay.ByViewPointsAndValues@var,Point[],double[]"); @@ -492,9 +492,9 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself - XmlElement dsRevitNode = MigrationManager.CreateFunctionNode( - data.Document, "DSRevitNodes.dll", - "VectorAnalysisDisplay.ByViewPointsAndVectorValues", + XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); + MigrationManager.SetFunctionSignature(dsRevitNode, "DSRevitNodes.dll", + "VectorAnalysisDisplay.ByViewPointsAndVectorValues", "VectorAnalysisDisplay.ByViewPointsAndVectorValues@var,Point[],Vector[]"); migratedData.AppendNode(dsRevitNode); diff --git a/src/DynamoRevit/Nodes/Annotation.cs b/src/DynamoRevit/Nodes/Annotation.cs index c64f9c6c99d..9eaf8d9dd42 100644 --- a/src/DynamoRevit/Nodes/Annotation.cs +++ b/src/DynamoRevit/Nodes/Annotation.cs @@ -133,11 +133,10 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) #region Create New Nodes... - // Create the "ModelText.ByTextSketchPlaneAndPosition" node itself. - XmlElement dsModelText = MigrationManager.CreateFunctionNode( - data.Document, "DSRevitNodes.dll", - "ModelText.ByTextSketchPlaneAndPosition", - "ModelText.ByTextSketchPlaneAndPosition@" + + XmlElement dsModelText = MigrationManager.CreateFunctionNodeFrom(oldNode); + MigrationManager.SetFunctionSignature(dsModelText, "DSRevitNodes.dll", + "ModelText.ByTextSketchPlaneAndPosition", + "ModelText.ByTextSketchPlaneAndPosition@" + "string,SketchPlane,double,double,double,ModelTextType"); migratedData.AppendNode(dsModelText); diff --git a/src/DynamoRevit/Nodes/FamilyInstance.cs b/src/DynamoRevit/Nodes/FamilyInstance.cs index 827fd9bc6c9..841e44729e3 100644 --- a/src/DynamoRevit/Nodes/FamilyInstance.cs +++ b/src/DynamoRevit/Nodes/FamilyInstance.cs @@ -312,10 +312,9 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself - XmlElement dsRevitNode = MigrationManager.CreateFunctionNode( - data.Document, "DSRevitNodes.dll", - "FamilyInstance.ByPoint", - "FamilyInstance.ByPoint@FamilySymbol,Point"); + XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); + MigrationManager.SetFunctionSignature(dsRevitNode, "DSRevitNodes.dll", + "FamilyInstance.ByPoint", "FamilyInstance.ByPoint@FamilySymbol,Point"); migratedData.AppendNode(dsRevitNode); string dsRevitNodeId = MigrationManager.GetGuidFromXmlElement(dsRevitNode); @@ -453,10 +452,10 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself - XmlElement dsRevitNode = MigrationManager.CreateFunctionNode( - data.Document, "DSRevitNodes.dll", - "FamilyInstance.ByPointAndLevel", - "FamilyInstance.ByPointAndLevel@FamilySymbol,Point,Level"); + XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); + MigrationManager.SetFunctionSignature(dsRevitNode, "DSRevitNodes.dll", + "FamilyInstance.ByPointAndLevel", + "FamilyInstance.ByPointAndLevel@FamilySymbol,Point,Level"); migratedData.AppendNode(dsRevitNode); string dsRevitNodeId = MigrationManager.GetGuidFromXmlElement(dsRevitNode); diff --git a/src/DynamoRevit/Nodes/Solid.cs b/src/DynamoRevit/Nodes/Solid.cs index 97c2f6c4bfe..6aa4e952fbf 100644 --- a/src/DynamoRevit/Nodes/Solid.cs +++ b/src/DynamoRevit/Nodes/Solid.cs @@ -339,10 +339,10 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself - XmlElement dsRevitNode = MigrationManager.CreateFunctionNode( - data.Document, "DSRevitNodes.dll", - "Form.ByLoftingCurveReferences", - "Form.ByLoftingCurveReferences@CurveReference[],bool"); + XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); + MigrationManager.SetFunctionSignature(dsRevitNode, "DSRevitNodes.dll", + "Form.ByLoftingCurveReferences", + "Form.ByLoftingCurveReferences@CurveReference[],bool"); migratedData.AppendNode(dsRevitNode); string dsRevitNodeId = MigrationManager.GetGuidFromXmlElement(dsRevitNode); @@ -890,7 +890,7 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) return MigrateToDsFunction(data, "ProtoGeometry.dll", "Solid.Intersect", "Solid.Intersect@Solid"); } } - /* + [NodeName("Solid from Element")] [NodeCategory(BuiltinNodeCategories.GEOMETRY_SOLID_QUERY)] [NodeDescription("Creates reference to the solid in the element's geometry objects.")] @@ -1008,9 +1008,15 @@ public override FScheme.Value Evaluate(FSharpList args) return FScheme.Value.NewContainer(mySolid); } + + [NodeMigration(from: "0.6.3", to: "0.7.0.0")] + public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) + { + return MigrateToDsFunction(data, "DSRevitNodes.dll", + "Solid.FromElement", "Solid.FromElement@AbstractElement"); + } } - */ - /* + [NodeName("Cylinder")] [NodeCategory(BuiltinNodeCategories.GEOMETRY_SOLID_PRIMITIVES)] [NodeDescription("Create a cylinder from the axis, origin, radius, and height")] @@ -1040,8 +1046,9 @@ public static Solid CylinderByAxisOriginRadiusHeight(XYZ axis, XYZ origin, doubl var xaxis = yaxis.CrossProduct(zaxis); // create circle (this is ridiculous, but curve loop doesn't work with a circle - you need two arcs) - var arc1 = dynRevitSettings.Doc.Application.Application.Create.NewEllipse(origin, radius, radius, xaxis, yaxis, 0, Circle.RevitPI); - var arc2 = dynRevitSettings.Doc.Application.Application.Create.NewEllipse(origin, radius, radius, xaxis, yaxis, Circle.RevitPI, 2 * Circle.RevitPI); + var document = DocumentManager.GetInstance().CurrentUIDocument.Application; + var arc1 = document.Application.Create.NewEllipse(origin, radius, radius, xaxis, yaxis, 0, Circle.RevitPI); + var arc2 = document.Application.Create.NewEllipse(origin, radius, radius, xaxis, yaxis, Circle.RevitPI, 2 * Circle.RevitPI); // create curve loop from cirle var circleLoop = Autodesk.Revit.DB.CurveLoop.Create(new List() { arc1, arc2 }); @@ -1061,8 +1068,49 @@ public override FScheme.Value Evaluate(FSharpList args) // create and return geom return FScheme.Value.NewContainer(CylinderByAxisOriginRadiusHeight(axis, origin, radius, height)); } + + [NodeMigration(from: "0.6.3", to: "0.7.0.0")] + 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, "DSRevitNodes.dll", + "Solid.Cylinder", "Solid.Cylinder@Point,double,Vector,double"); + + 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 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); + + data.ReconnectToPort(connector0, newInPort2); + data.ReconnectToPort(connector1, newInPort0); + data.ReconnectToPort(connector2, newInPort1); + data.ReconnectToPort(connector3, newInPort3); + + return migratedData; + } } - */ + [NodeName("Sphere")] [NodeCategory(BuiltinNodeCategories.GEOMETRY_SOLID_PRIMITIVES)] [NodeDescription("Creates sphere from a center point and axis")] diff --git a/src/DynamoRevit/Nodes/View.cs b/src/DynamoRevit/Nodes/View.cs index 40631bc78c5..b5a66471755 100644 --- a/src/DynamoRevit/Nodes/View.cs +++ b/src/DynamoRevit/Nodes/View.cs @@ -359,10 +359,10 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself - XmlElement dsRevitNode = MigrationManager.CreateFunctionNode( - data.Document, "DSRevitNodes.dll", - "AxonometricView.ByEyePointTargetAndBoundingBox", - "AxonometricView.ByEyePointTargetAndBoundingBox@Point,Point,AbstractElement,string,bool"); + XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); + MigrationManager.SetFunctionSignature(dsRevitNode, "DSRevitNodes.dll", + "AxonometricView.ByEyePointAndTarget", + "AxonometricView.ByEyePointAndTarget@Point,Point,var,string,bool"); migratedData.AppendNode(dsRevitNode); string dsRevitNodeId = MigrationManager.GetGuidFromXmlElement(dsRevitNode); @@ -409,6 +409,53 @@ public PerspectiveView() { isPerspective = true; } + + [NodeMigration(from: "0.6.3", to: "0.7.0.0")] + 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, "DSRevitNodes.dll", + "PerspectiveView.ByEyePointAndTarget", + "PerspectiveView.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; + } } [NodeName("Bounding Box XYZ")] diff --git a/src/DynamoRevit/Nodes/Wall.cs b/src/DynamoRevit/Nodes/Wall.cs index df460a246d7..644d67c8f8c 100644 --- a/src/DynamoRevit/Nodes/Wall.cs +++ b/src/DynamoRevit/Nodes/Wall.cs @@ -71,8 +71,8 @@ public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) string oldNodeId = MigrationManager.GetGuidFromXmlElement(oldNode); //create the node itself - XmlElement dsRevitNode = MigrationManager.CreateFunctionNode( - data.Document, "DSRevitNodes.dll", + XmlElement dsRevitNode = MigrationManager.CreateFunctionNodeFrom(oldNode); + MigrationManager.SetFunctionSignature(dsRevitNode, "DSRevitNodes.dll", "Wall.ByCurveAndHeight", "Wall.ByCurveAndHeight@Curve,double,Level,WallType"); diff --git a/src/DynamoRevit/Nodes/XYZ.cs b/src/DynamoRevit/Nodes/XYZ.cs index e1e2c2821bf..0fa1017c51f 100644 --- a/src/DynamoRevit/Nodes/XYZ.cs +++ b/src/DynamoRevit/Nodes/XYZ.cs @@ -944,8 +944,40 @@ public override FScheme.Value Evaluate(FSharpList args) [NodeMigration(from: "0.6.3", to: "0.7.0.0")] public static NodeMigrationData Migrate_0630_to_0700(NodeMigrationData data) { - return MigrateToDsFunction(data, "ProtoGeometry.dll", "Point.DirectionTo@Point", - "Point.DirectionTo@Point"); + 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", + "Vector.Normalized", "Vector.Normalized"); + + migratedData.AppendNode(newNode); + string newNodeId = MigrationManager.GetGuidFromXmlElement(newNode); + + XmlElement vectorNode = MigrationManager.CreateFunctionNode( + data.Document, "ProtoGeometry.dll", + "Vector.ByTwoPoints", "Vector.ByTwoPoints@Point,Point"); + migratedData.AppendNode(vectorNode); + string vectorNodeId = MigrationManager.GetGuidFromXmlElement(vectorNode); + + //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(vectorNodeId, 0, PortType.INPUT); + PortId newInPort1 = new PortId(vectorNodeId, 1, PortType.INPUT); + PortId newInPort2 = new PortId(newNodeId, 0, PortType.INPUT); + + data.ReconnectToPort(connector0, newInPort0); + data.ReconnectToPort(connector1, newInPort1); + data.CreateConnector(vectorNode, 0, newNode,0); + + return migratedData; } }