Placing family at an (x,y,z) offset from a curve that should copy along that curve but at a specific offset defined by the first family placed

Hey there,

I have been trying to copy a Revit family along a curve using Dynamo. This is not a case of simply placing the family on the curve to follow its path. The first instance of the family is placed at a specific offset from the curve.

The script works as expected along straight sections of the curve. However, when the curve takes a turn, the behavior is not as intended: instead of maintaining the same relative offset, the family shifts upward or follows an unintended path. Essentially, the family does not maintain the correct offset direction relative to the curve when the curve bends.

I need a solution that ensures every copied family instance maintains the same relative offset from the curve as the first instance, regardless of the curve’s shape or direction changes.

I would offset the primary curve by its distance to the other family instance, and then generate the points along the offset curve. You likely want Curve.PointsAtEqualSegmentLengthFromPoint to keep equal spacing from the original point rather than using parameterization as the offset curve may not have uniform parameter spacing.

Thanks for the solution. Please can you help me on how to offset the original curve to the point where family is placed. the family is offset not only in xy but also in z direction. which nodes to use. Sorry if this sounds noob but yes i am new to dynamo. 1) is family instance in image and 2) is curve.

  1. Translate the curve on the Z axis to the elevation of the point.
  2. Geometry.DistanceTo to get the distance from the translated curve to the point.
  3. Offset the curve by the + and - distance.
  4. Sort the offset curves by their distance to the point and take the first curve from the list.
  5. Proceed as above.

If I understand properly, it is probably easier to translate the entire curve in Dynamo, rather than trying to calculate offsets for each family instance

Correct - the simplest solution is to translate the curve to the right height, then offset it, and gather the points (and even orientations) from the offset curve.

Yes, This seems the right and easiest approach. Thank you so much @jacob.small , @Andrew_Hannell for the help. Will post the script once it gets completed.