Curve intersections

Projecting a curve onto another curve is a fundamental requirement in building geometry. It is surprising that there isnt a direct command in Rhino or GH for doing this. In GH there is a module that finds the closest point between two urves which is usefull, but projecting a curve, such that the plane of projection is normal to the TWO curves automatically is needed.

Selecting an XY or XZ plane with the curves are not coplaner results in small errors which ripple through the model causing problems like this


Hm. Sorry, I do not follow at all - what your image shows is the shading mesh as far as I can see - please see


Thank you for that link.

This is the problem…

Its not open. Its closed… but not to the satisfaction of the algorithm at the tolerance of .001
So far a weeks work working back through the model to solve this

The problem is projecting a smoothed curve onto another curve (in this case a bunch of isocurves) such that the projection happens at a Normal to the target curve. This requires deriving a construction plane for the curves, finding the intersection of a curve with that CP then vectoring the point normal to the curve. This could be created by using the closest point between the two curves, on each curve.

It would be nice if there was a command or GH module for this.



The highlighted points are the ones that intersect. The rebuilt curve introduces a smooth fit at the expense of following the isocurves. This could be done by making a surface of the isocurves and then using PULL, but the boundary conditions are complex and a surface introduces another layer of smoothing and errors that cause joins and merges to fail later.


thesection tool does just that. combined with the option intersection object snap

The method in the video relies on manually snapping to the apparent intersections, and also creates points on both curves. It is quicker to directly create points on the desired curves by manually snapping on the apparent intersections. It works for a single point but become tedious with many curves.

Six years after making the original request I could still use Project recognizing curves as the target. It would have been useful over the last several days. Project of a curve on to a curve would result in a point (unless the curves coincided in the projection and then the result would be a curve segment). Project of a surface onto a curve would result in a curve segment (except in exceptional situations where the result would be zero length curve segment, ie a point).

completely agree.

Hi, @Proterio try this
this does the trick, @davidcockey uploaded a pretty good example to prove it (7.9 KB)

This solution is interesting. There some problems with projecting a surface from curve though.


Using a World plane for the projected surface introduces errors, and extruding a curve introduces errors.



For planar curves, it works better

CurveCurveIntersect (17.6 KB)

The only way to do this such that the surfaces generated from these curves might meet at the edges, is to determine the plane between each pair of points that must intersect, and moving along that plane. CURVE CURVE closest points can find the points, but it returns NULL if they actually intersect by accident, so its not really useful.