LHS/RHS offset coordinates from polyline

Hello everyone,

I’m facing a challenge and would appreciate any guidance.

I created a polyline from a set of coordinates representing an alignment. I would prefer not to convert the polyline into a Civil 3D alignment because the resulting stationing may not correspond exactly with the original polyline vertices.

My goal is to extract coordinates for points offset 10 m to both the left and right of the polyline, from the start point to the end point, at specified intervals.

I have been exploring Dynamo for this task and looked for nodes such as Curve.Offset, but I have not been able to find a suitable approach.

Has anyone used Dynamo to generate offset points directly from a polyline without converting it to an alignment? Any suggestions on the nodes or workflow that could accomplish this would be greatly appreciated.

Thanks in advance for your help.

You could get the PolyCurve of the Polyline in Dynamo and find the CoordinateSystems along this Curve. Then add a Y vector (or X, one of both is perpendicular to that point) and a distance, and you have your offset point. Negative distances are left sided.

The Civil Nodes package has nodes to create an offset directly of a Polyline and you can collect the vertices of that, but the offset remains in the drawing.

are you able to share the nodes connection kindly, will really appreciate, im struggling on how to make the nodes connection and how to see the LHS and RHS offsets coordinates forming, Thanks

Hola amigos buenas!

amigo @oliverkisera you need the package Arkance Systems to get the node Polyline2D.Vertices, like this you will be able to check if you have same amount of vertices in the original polyline and the offset one!!

Please try the below, I’m not sure if this is quite what you’re after but hoping it would at least give you an idea of how the nodes would be assembled for something like this.

In theory it should be this, but unfortunately the sub-curve direction bug is still not fixed in Civil 3D. So when the curve is counter-clockwise, the segment is mirrored in the Z-direction and you get the locations on the wrong side:

If the offset is always the same on both sides, then it does not matter, You can duplicate the last nodes and get the other side points like this:

Which result in this:

Another approach can be done with The Civil Nodes package where you collect the angle of the segments and request for polar points along each segment. An example is found in my blog (it is written in Dutch but there is a translation button on top):

Parking Lots design:

Try Curve.HorizontalFrameAtParameter instead - not sure if that addresses the issue or not though. It should maintain the XY plane perpendicular to the global XY which mirrors the behavior of alignments better.

Hello, thanks for this, Ive tried with a polyline though my polyline has vertices but its not of circular nature, the aligment itself from the coordinates is supposed to be 4988m, but if i use this method, I get coordinates at 10m intervals but its giving me the end station as 6710, meaning more than the length of my original polyline, ive enabled the boolean to true on the extend circular on the polycurve,offsetmany node, I dont know why im getting more coordinates stations than the intended stations, or this feature creates many vertices?

Ive used the Curve.HorizontalFrameAtParameter, what should i feed on the paramter input

Your Dynamo curve, the the list of parameters for your spacing. Assuming it is a uniform curve, the later would be easiest to build as a range in design script - something like (0..crv.Length..spacing)/crv.Length;.

In this case (and usually with uniform curves) you can think of parameter as a percentage of the overall length.

The result should be a bunch of coordinate systems along the curve, and you can transform points from the origin by each of them to get your series of points.

Hola de nuevo!!

Amigo @oliverkisera don’t get confuse, the parameter extendCircular in the node Polycurve.OffsetMany is not only for polylines or polycurves of circular nature, the node will create an offset of the polycurve, it will evaluates the properties of the curve and give you the best aproach of offset, taking as normal each segment of the polycurve, seems the easiest way of create offset in your workflow (not sure if will works for you), once you have your offset, you can ask the points of the polycurve those will be equivalent to the vertex of your polyline but in the new offset polycurve, then you will have your new vertex points, you can create offset on each side just puting (OffsetValue) and (-1*OffsetValue) as value in SignedDistance parameter, then create a new polycurve, NurbsCurve.Bypoints gives you the most smooth result for a polycurve then you can use Object.byGeometry to create the new polylines in your .dwg, i hope this can helps you!!

I might have a solution and it doesnt require dynamo script at this matter.
Since your doing polycurve and have a data of it in excel.
Try to offset it in the AutoCAD or Civil3D.

DO a command “List”
Copy in excel

This method will specify the Easting, Northing and elevation.
Arrange your text → Text by Column
Convert Text to column

Hello, the polylines from which the surfaces are made from already exist in the dwg and they have elevations assigned, I don’t understand how your approach is to give me surfaces from these polylines that don’t overlap into other polylines that are also supposed to be used to form surfaces, once I can create surfaces that don’t ok overlap, then I need to give them colors, just like in the surface pic I uploaded that shows various colors as shading , then after this I can use it for presentation, the only data in excel I have for these polylines is the elevation data, so I don’t know which data you want me to offset in CAD then use list command

@oliverkisera , I think you are confusing this thread with your other thread.