Enable Projected Intersections as Basis for Curves

CONTEXT: Conceptual aircraft design in Rhino 7 with a 3D Connection spaceball. One view at a time with frequent rotate and zoom. Rarely use orthogonal views and never multiple views. This works very well for me. REQUEST: I would like to be able to determine a projected intersection of one curve on another non-intersecting curve as seen orthogonal to the CP without having to rotate the view into plan view. Long ago, Unigraphics permitted a command something like “a point on this curve where it intersects this other curve, as seen orthogonally to the CP”. So you pick first the curve on which you want the point and then you pick the second, intersecting curve. This can create a point, start or end a curve, be an origin or destination for a move, or a point on a spline, for instance. I understand that there is a workaround for this that requires setting the view to “plan” or related orthogonal view. But then sometimes it is very awkward picking the desired curves because there may be overlapping curves in that view. Also it is laborious to have to set the view. Thanks for your attention.

Hello - if I understand, which I may not, the Int intersection will allow this - you need to enable Apparent Intersections (on by default, I think) in Options >Modelinmg aids. The snap will fall on the curves your mouse is ‘most’ on.



Thank you for addressing my request.

However: “Apparent Intersection” does what I want to do only when the view is orthogonal to the working coordinate system. As I noted in my request, I am almost always working from a view that is not orthogonal to the WCS. It is cumbersome to pick the correct view every time I want to intersect two overlapping but non-intersecting lines. Furthermore, as noted, when an orthogonal view is selected there may be overlapping curves that complicate the selection process. Lastly, the best I can tell, when an apparent intersection is selected, it is uncertain which of the two curves is selected for the intersection point. My request addresses all of these issues in a way achieved by Unigraphics 20 years ago. (Unigraphics was a leading high-end CAD package at the time, later taken over by Siemens and renamed NX.)

Example problem that I face sometimes: Say I am preparing to loft a complex wing using “curve network”. In one direction I have a series of airfoils. In the other direction I have a series of spanwise curves. Say I have all of the airfoils set up with the correct chord and fore-aft location. Now I want to “hang” them from a selected (smooth) spanwise curve. A way to do this is to first set the WCS to horizontal (top view). Then I can transform - move the airfoil to the spanwise curve by identifying the overlapping point on the airfoil and moving the airfoil to the overlapping part on the spanwise curve. Very simple. No change of view, no chance to pick the wrong curve. The work-arounds from this process are cumbersome.

Side note: I have been using Rhino intensively for about six months now, following a few years of intermittent use. I think it is utterly fantastic. It is the most powerful, least cumbersome CAD program I have every use. Just fantastic. I have used parametric versions of Siemens NX and Dassault CATIA. While powerful, they are unbelievably cumbersome for early conceptual design. So my request is just to make this one little change to streamline things a bit more.

Best regards,

Blaine Rawdon
Riverside, CA

This could be scripted relatively easily methinks.

Hi Blaine - in my clip - the Int points are found in the oblique view, and which one is used depends on the bias of the mouse towards one or the the other.

Still wrong?


Here’s a quickie scripty hack if I understood what Blaine wants…

FindVerticalAppIntersection.py (1.6 KB)

Thank you Pascal for taking the tame to make this video. It shows the process you are using very clearly. I understand what you are doing and can do it myself. The part about the cursor selecting the closest curve is helpful news - thank you.

The problem is the process you show does not do what I want to do!

I hope that the following is helpful.

The following images show what I want to do and the work-around that I have found is the most expedient but still cumbersome. So this is what I want to achieve but this is not how I want to do it! What I want is:

  • Set WCS orientation
  • Move one rib at a time
  • Select point on rib that is below the line
  • Select the point on the spanwise line that is above the plane of the rib
  • Move the rib from the first point to the second point- Done
  • No:
  • Change in view orientation
  • No surfaces and so on
  • No creation of extraneous curves

Note that all of the part motion is orthogonal to the WCS but all of the views are “loose” so to speak.

Please see the captions below.

Thank you for your persistence!


Here are seven airfoils forming a swept wing. I want to align them on the straight, swept line above them so that the upper surface is relatively flat.

Here isa view looking outwards along the wing. The WCS is flat.

To establish the points on the upper airfoil that correspond to the points on the spanwise line, I create surfaces for each rib and an extruded surface for the line. These surfaces are intersected to get lines across the ribs.

I change the WCS to front view. Then I move each rib from the top of the intersected line up to the spanwise line holding the shift key to get orthogonal motion. In this shot, I have done the first two ribs. A vertical line segment indicates the path of the third rib from the current position up to the spanwise line.

Here is the completed move.

Then I delete the intersected lines and restore the WCS to top view.

This view shows the the ribs are all on the line.

I will try this when I figure out how to use a script!

Thank you Helvetosaur!


In this case couldn’t you use the Align command from something like the Front view with CPlane and Top options?

If you are only going to use a script occasionally, you can simply save it on your desktop or somewhere else, then use RunPythonScript inside Rhino and brows to the script to run it. Here is more info on setting up scripts more permanently in Rhino.

Here is another script that might also work for you without having to draw lines etc. It is like the Align command, Top option, but it works with the World CPlane no matter what view you are in. I’ll also include one that does world Bottom alignment.

AlignTopZ.py (1.6 KB)
AlignBottomZ.py (1.6 KB)