Simple way to create a curve from a list of points?


#1

Hi all, getting my toes wet with dynamo, I find it awesome already!

I put up a project that puts multiple instance of a family along a curve, one next to the other.

It works fine with a sample curve (an arc), but my goal is to read a 3d polyline from civil3D/Autocad (a rock profile along an alignment) and use it as my base curve.

Using a python script and Autocad Interop I’m able to open the dwg, pick the 3Dpolyline and output all the vertex coordinates.

The problem is, how I can rebuild the curve in Dynamo using these points? I only found the PolyCurve.ByPoints but the rest of the project won’t work with a PolyCurve.

Or Is there another way to get the 3d polycurve from Autocad into a single Dynamo curve? (I left the project at work, I’ll post it tomorrow to make things clearer) Thanks in advance for the help!

Here you can find the Dynamo and Revit projects


#2

Have you tried taking the list of vertices, and then running the List.ShiftIndices node with an amount of 1 input to it also. Then taking the original list of points, and the shifted list, and plugging them both into the draw Line.ByStartPointEndPoint node, then taking the given lines and plugging them into PolyCurve.ByJoinedCurves?


#3

Both PolyCurve and NurbsCurve should work


#4

Hi, thanks for the answers!

I didn’t explain myself clearly, let’s try again:

The dynamo project I created (I updated my first post, you can download it and take a look at it) works for a single Curve object (eg. an Arc) but If I replace it with a polycurve/nurbscurve I cannot get it to work.

The flow takes the curve, projects it on the XY plane, places points on the projected curve at a specified distance, then reprojects the points on the original curve but uses the maximum Z between that point and the next in order to have the family instance touching the curve but never be under it. Then the family is inserted at that point and rotated to be placed along the curve, and dimensions are set via shared parameters to have the instances touching each other (using the distance between points) and reaching a specified plane, rounding the height to the meter.

It’s an attempt to automate the placement of sheet piles along an alignment; we currently use civil 3D but we didn’t find a way to do directly there, so I was hoping to read the 3d polyline from civil and use it in this flow. Maybe I misunderstood the “Curve” chapter of the Dynamo Primer, but I thought a polyline can be seen as a “Curve” object.