Skip to content

Commit

Permalink
Merge pull request DynamoDS#12 from Zhengzi/CrossFade
Browse files Browse the repository at this point in the history
After revisions of reviews, now I think this looks much better.
  • Loading branch information
Benglin committed Feb 13, 2014
2 parents 54ac73b + fbce22b commit f805c3c
Show file tree
Hide file tree
Showing 8 changed files with 226 additions and 43 deletions.
68 changes: 63 additions & 5 deletions src/DynamoRevit/Nodes/AdaptiveComponents.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<Value> 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.")]
Expand Down Expand Up @@ -93,13 +112,14 @@ public override Value Evaluate(FSharpList<Value> args)
if (instData.Any())
{
ICollection<ElementId> 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'
Expand Down Expand Up @@ -161,7 +181,8 @@ private static void UpdatePlacementPoints(FamilyInstance ac, FSharpList<Value> 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++;
Expand All @@ -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<Value> 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<Value> 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");
}
}
}
14 changes: 7 additions & 7 deletions src/DynamoRevit/Nodes/AnalysisDisplay.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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[]");

Expand Down Expand Up @@ -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[]");

Expand Down Expand Up @@ -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);
Expand Down
9 changes: 4 additions & 5 deletions src/DynamoRevit/Nodes/Annotation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
15 changes: 7 additions & 8 deletions src/DynamoRevit/Nodes/FamilyInstance.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
68 changes: 58 additions & 10 deletions src/DynamoRevit/Nodes/Solid.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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.")]
Expand Down Expand Up @@ -1008,9 +1008,15 @@ public override FScheme.Value Evaluate(FSharpList<FScheme.Value> 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")]
Expand Down Expand Up @@ -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<Curve>() { arc1, arc2 });
Expand All @@ -1061,8 +1068,49 @@ public override FScheme.Value Evaluate(FSharpList<FScheme.Value> 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")]
Expand Down
55 changes: 51 additions & 4 deletions src/DynamoRevit/Nodes/View.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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")]
Expand Down
4 changes: 2 additions & 2 deletions src/DynamoRevit/Nodes/Wall.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand Down
Loading

0 comments on commit f805c3c

Please sign in to comment.