# 2025: How does "PlaneNormal" of "Polycurve.OffsetMany" work?

**URL:** <https://forum.dynamobim.com/t/2025-how-does-planenormal-of-polycurve-offsetmany-work/105014>\
**Category:** Geometry\
**Tags:** dynamo, civil3d\
**Created:** [October 9, 2024, 1:26pm UTC](https://forum.dynamobim.com/t/2025-how-does-planenormal-of-polycurve-offsetmany-work/105014 "2024-10-09T13:26:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![pumpaij](https://avatars.discourse-cdn.com/v4/letter/p/e36b37/32.png) [@pumpaij](https://forum.dynamobim.com/u/pumpaij)\
**Post date:** [October 9, 2024, 1:26pm UTC](https://forum.dynamobim.com/t/2025-how-does-planenormal-of-polycurve-offsetmany-work/105014/1 "2024-10-09T13:26:46Z")

</div>

Hello,

I have “wiggly” 3d-Polylines (red) of which I’m creating “straightened” versions (green). This picture shows a top view;

 ![Ashampoo_Snap_2024.10.09_15h06m30s_001_](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/5/2/5203a54bc7e7889cab8bdcb924458cec966b6a16.png)

It’s a 3d-polycurve, so all vertices have different z-values.  
The next step would be to offset the straight version e.g. 1m to the left and to the right (yellow lines).

 ![Ashampoo_Snap_2024.10.09_15h18m33s_002_](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/0/e/0ece7c1efc93bf47dbf1b33a4f0acac2e7553d26.png)

In Civil3d this could be done with the “\_AeccOffsetFeature”-command.

Using the “PolyCurve.OffsetMany”-node without an input for “PlaneNormal” offsets the polycurve in the z-direction. I want to achieve an offset in the XY-direction and I don’t know what kind of input is necessary to achieve that. All examples I could find are for planar objects. I’m aware that I’ll have to define a plane but I’m just not getting it to work.  
I’ve attached the documents - any help is highly appreciated!

[PolyCurveOffsetMany.dwg](https://forum.dynamobim.com/uploads/short-url/oe5k0AYXQ8CPIi35AZQYR5fH9of.dwg) (1.1 MB)  
[PolyCurveOffsetMany\_dyn25.dyn](https://forum.dynamobim.com/uploads/short-url/darr5pR6YYfxUbkz9JNnNm0Yp6c.dyn) (36.7 KB)

---

<div class="post-metadata">

**Author:** ![pumpaij](https://avatars.discourse-cdn.com/v4/letter/p/e36b37/32.png) [@pumpaij](https://forum.dynamobim.com/u/pumpaij)\
**Post date:** [October 10, 2024, 7:27am UTC](https://forum.dynamobim.com/t/2025-how-does-planenormal-of-polycurve-offsetmany-work/105014/3 "2024-10-10T07:27:09Z")

</div>

I got it to work with the rather messy approach of connecting the start- and endpoint of the line, creating a coordinate system along it and, using vectors, translating the geometry along the Y-axis of that coordinate system.  
Feels a bit bloated and there’s definitely room for improvement but it gets the job done for now. I still havn’t figured out PolyCurve.OffsetMany.

 ![Ashampoo_Snap_2024.10.10_09h21m55s_001_](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/3/c/3cdca85c4375aa055d79a78de8791136a55374db.png)

[PolyCurveOffsetMany\_dyn25\_v02.dyn](https://forum.dynamobim.com/uploads/short-url/iVBlAlnQNsHHa4ydyxoK3NCnMR7.dyn) (69.3 KB)

---

<div class="post-metadata">

**Author:** ![jacob.small](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jacob.small/32/161030_2.png) [@jacob.small](https://forum.dynamobim.com/u/jacob.small)\
**Post date:** [October 10, 2024, 8:06am UTC](https://forum.dynamobim.com/t/2025-how-does-planenormal-of-polycurve-offsetmany-work/105014/4 "2024-10-10T08:06:08Z")

</div>

OffsetMany will make concentric curves around the base curve. You want to translate the curve. Instead of drawing a line using manual input points I recommend taking the first and last point of the PolyCurve using Curve.PointAtParameter with parameters of `[0,1]`. You can then use a Line.ByBestFitThroughPoints node, and a Curve.NormalAtParameter to pull the direction you want to move the curves.

Assuming you want to move this in plan, use a Vector.Scale node to remove the Z component, and then finally use a Geometry.Translate node with an input for direction and distance. The geometry is the original polycurve, the direction the vector, and the distance is `[-1,1]*offsetDistsnce;`.
