Placing Families Along a 3D Curve Using Dynamo in Revit
When creating models in Revit, arranging and placing family files is a common task. While placing a few elements is manageable, the process becomes tedious when dealing with hundreds of placement points. Finding an efficient layout path can simplify this task significantly. In this example, the setup is as follows:
1. A specific family needs to be arranged along a three-dimensional curve.
2. The orientation of each family instance should align with the tangent direction of the curve at its placement point.
The curve shown below serves as the path and is a 3D curve.
So, how do we place a family along this 3D curve to achieve the desired effect?
First, in Dynamo, we need to obtain the family model. The preset curve is loaded into the Revit project as a conceptual volume.
Use the Select Model Element node in Dynamo to pick elements from the Revit project. This node allows you to select the desired model elements interactively.
Next, retrieve the curves from these graphical elements. Since the target curve models are selected, use the Element.Curves node to extract the curves into Dynamo.
Once the curve is imported into Dynamo, the next step is figuring out how to place the family instances along it. Essentially, this involves identifying specific points on the curve where the families will be placed.
To place families evenly spaced along the curve, we need to divide the curve into equal segments. For this, use the Curve.PointsAtChordLengthFromPoint node, which helps in obtaining points at equal arc lengths along the curve.
After acquiring these points, the placement locations are set. Note that the starting point for this process can be customized. If no starting point is defined, Dynamo places points starting from the curve’s endpoint by default. Defining a starting point will arrange the points starting from that location.
Related Skills
Using Dynamo to Automatically Place Ceiling Lights at Different Heights















Must log in before commenting!
Sign Up