Rhino 7: Change in how Perp Osnap works?

I downloaded Rhino 7 (eval) in order to run a very simple mesh measurement protocol that I wrote using Rhino 6 a couple of years ago. The protocol is for measurement of lines defined by a mesh.

I used to use the Perp Osnap tool to make a polyline that originates from a point on the object and perpendicularly intersected a preciously drawn line (blue, see photo). It would snap to be perpendicular to the 3D line in the top view, sort of like the red line. However, the “Perp” snap appears as the selected line, which is not perpendicular in the top view.

Instead, it seems to be perpendicular in the Right view:

Here is how I did it before:

Is there a way to make the line snap perpendicularly in the Top view?

Hi Krishna - could you post a file with a point and a line that you want to snap perpendicular to? In a simple test here, I couldn’t get it to malfunction.

My tests show Perp Osnap working the same in V6 and V7. It works independent of view, A line created using the Perp Osnap will be perpendicular (90 degree angle) to the target curve/line in space. Only in special situations will the line and and target curve/line appear to be perpendicular in space. That is the way the geometry works.

Yeah, I do not see how to make that work without some construction geometry or extra steps.


One method to obtain the distance parallel to a CPlane between a pont and a curve is to extrude the curve in the direction normal to the CPlane and then check the distance from the point to the extruded surface.

Thanks so much for your reply. Attached is the file from my post. The goal is to make the line originating from the scan join perpendicularly (top projection) to the blue line. Let me know if I have attached the file correctly or if I need to provide you with the object file.

PE_6_R7.3dm (15.9 MB)

Hi David, thanks so much for your reply.

Perhaps I was using it wrong all along? The thing is, no matter what, I know for certain that there has got to be some orientation in which the top 2D projection of the 3D lines forms a perpendicular intersection. So if this is not the way, I’d be interested in finding one.

This should provide more context:
In the following GIF I made for my 2018 protocol, you can see what I did. I used this method for 100s of files for measurement and it always seemed to look perpendicular in the top view every time.

Here is a link of how I did it. It has a GIF of me performing the procedure. Let me know if it looks right to you.

Hi Pascal, thanks so much for your reply.

Here is how I did it before. Perhaps it looks perpendicular just because of the geometries I’m using and not because it’s how Perp works. Let me know what you think.

Hello - I cannot get to the link, but just in case, (I do not know what you are trying to accomplish so just guessing here) it looks like maybe it would help to make an axis aligned bounding box on the angled line - if so, set a CPlane > Curve > pick the angled line and any point on it for the origin, then run BoundingBox > CoordinateSystem=CPlane.


Woops, try now

Will try your method and report back. Thanks!

Bounding box was not actually parallel to the line. The line hits a lower corner and upper corner on opposite sides of the box. I almost thought this was the answer, but unfortunately the perpendicular edge would not be perfectly normal to the line in the top plane

Hello - in the example you show, the target line is more level, compared to world XY, and the discerpancy is not as obvious but, unless you are extremely lucky in how the objects are arrnaged, my guess is the Perp to the line is actually only roughly parallel to a Perp to a line that is parallel to the world XY plane.


1 Like

If the target line is parallel to a CPlane then a line perpendicular to the target line will appear to be perpendicular in a view normal to a CPlane. This may be the case in the video Krishna shared.

If the target line is not parallel to the CPlane then in general a line perpendicular to the target line will not appear to be perpendicular in a view normal to a CPlane. The exception is for points along a line with a certain orientation to the target line.

1 Like

I do not think it is the case but it is close enough that the ‘error’ is not as obvious.


1 Like

Ah yea, I was hoping that wouldn’t be the issue. But that seems like it’s probably why.
So this perpendicular Osnap is the true perpendicular in 3D space, not a projection.
That makes sense

So perhaps what I am looking for is to generate a projection of that line onto the top plane. Is that possible?

Hello - yes - you can do something like ProjectToCPlane the angled line, find the Perp point, and then make a line Vertical to intersect the actual line you care about and then draw your desired line.

I’m sure there are a half-dozen ways to find that point but not all in one go with the Perp OSnap.
If the goal is to locate the front most point on that axis, then the bounding box I mentioned above may be the simplest.


1 Like

So I tried an option called “Set CPlane perpendicular to curve” and I’m able to see the line I want to draw. The red line passing through the curve and the point. This option sort of works but I’d rather snap to the point than eyeball it. Snapping to the point, of course, creates a plane that is angled like the line from before.

I think this worked… I used ProjectToCPlane to project the point and the line and then drew a line between them with Perp Osnap. That line looks pretty perpendicular to me in the top view.

I then created a line by picking the int point (selected/yellow in image) as my base and used elevator mode to create the point on the original lower line, which is what I wanted. Thank you so much @pascal !

Image: (Right) the bottom curve was the original and the top is the projection.