3D Alignment curves / survey lines in NURBS form

Hi there,

I am a civil engineer who uses Rhino and Grasshopper as my favourite tool in my everyday work life.
Something has been frustrating me lately, and I’ve come here to see if any of you geniuses has a solution.

When describing the geometry of roads or rail roads, the industry standard is to have separate descriptions for plan data and elevation data. Se example below (please excuse the Swedish, I hope it makes sense):

Straight lines, arcs, and sometimes clothoids are combined to create the geometry.
In 2D this is all fine and dandy, it’s easy to just use this information to make perfect NURBS curves to describe the geometry.

However, when you want to combine these to sets of data into one 3D curve it gets tricky. Intersection points between curve segments do not coincide between plan data and elevation data. The typical way to do this is to calculate the coordinates for discrete parameters with even spacing, and then make a polyline or interpolated curve between the points.
This has implications. If you choose to make a polyline, accuracy is lost. Bridges etc. often need accuracy down to the millimeter. If you choose to make an interpolated curve, things get computationally heavy. Making huge sweeps or lofts based on interpolated curves is not practical.

Is there a way to make 3D NURBS curves with a perfect mathematical definition as described above?
Meaning for example an arc leading in to a line segment in plan view, with an arc in elevation?

Please feel free to ask for further explanation if this does not make sense.

Hi Gustav,

I might be misunderstanding what you want, but the _Crv2View command makes a curve from two orthogonal curves:


Hi Gustav,

At Geometry Gym, we’ve been doing work on this. In particular we’re focussing on IFC definition of alignments, but also we’ve enabled import/conversion of landXML and XTR.

Rhino doesn’t have concepts such as clothoids, so there’s no avoiding curve point interpolation, but our algorithm does minimize the the number of control points to a user nominated precision (not using regular spaced point interpolation).

If you’d like to try it, you can download ggRhinoIFC from the downloads page of www.geometrygym.com Would be great to get your feedback if it’s improved (or look for further improvements).