Feature request: Snap to meshes toggle

While it’s not too late, I would like to propose a simple feature to be added to Rhino 9.
Please, add a quick toggle to snap to meshes. For example, a “Mesh” button to the Osnap toolbar. Currently, the only way I can find as a (bad) workaround is to disable snapping to the locked objects, but this is very limiting, because it also prevents me from snapping to other type of geometry that’s also locked (or put into locked layers).
Rhino options > Modeling aids > Snap to locked objects

A far better approach is to enable a toggle (via macro, in order to be assigned to a button, icon or key alias) to snap to meshes (On/Off). It’s essential for those who are working with dense scan data.

I can use the “Vertex” Osnap, but it’s not enough when I want to snap along a mesh edge or mesh face. I see no reason to include “Vertex” in the Osnap toolbar, but not “Mesh” (mesh face, mesh edge). So, my main request is to add a “Mesh” button or tickbox to the Osnap toolbar.


Another thing to consider is allowing snapping to the center of a polygon. Currently, I’m forced to draw a polyline along the mesh vertices around the polygon, in order to snap to the center of the polyline that coincides with the polygon. This is especially needed when working on low-poly models where the goal is to snap to the center of a polygon to add a point, a curve (including curve normal to the polygon) or align another object.


Also, it would be better to offer two separate options in Rhino Options > Modeling aids:

  1. Snap to locked objects.
  2. Snap to objects in locked layers.

That way, the users could take advantage of the differentiation between the two ways of locking an object (in case that they enable only one of those options).

What is the connection between snapping to meshes and snapping to locked objects? I’m guessing it has somethng to do with the details of how you work.

There is a setting in Options which controls whether the Near, Mid, Int and Perp osnaps work on mesh objects. The name can be confusing because it enables the osnsnaps to work on mesh edges (wires), but not on mesh faces. It would be useful if this option was could be controlled from the Osnap panel rather than having to get into Options.

I’m currentl working with very large meshes from scans, and have “Snap to locked objects” enabled and “Near, Mid, Int and Perp snap to mesh objects” disabled. That allows snapping to curves and points on locked layers without snapping to mesh edges.

I’m aware of the option you marked in yellow, but my request is a bit different. I keep it off for a reason. Not to mention that enabling it while doing most of my work makes the things even worse, because Rhino becomes extremely unresponsive while trying to snap to mesh “Mid” or “Near”…

The idea of the proposed ability to turn on an off the Osnap to meshes, and especially dense 3d mesh scan data with millions of polygons, is that snapping to the latter is only needed in special cases and it would be more convenient to have a proper toggle (via key or macro) or tickbox inside the Osnap toolbar called “Mesh”.
I need to snap to (dense) meshes in these two cases:

  1. When I want to snap existing objects to the mesh model;
  2. When I want to draw new curves or align surface control points to the mesh for reverse engineering.

Either way, I can use the “Vertex” Osnap, but it’s not enough when I want to snap along a mesh edge or mesh face. I see no reason to include “Vertex” in the Osnap toolbar, but not “Mesh” (mesh face, mesh edge).

I will give an example with my workflow, because I do work with scan data on most of my car related projects. I typically have the Osnap on all the time, because I need to snap to NURBS geometry. I keep “Vertex” off most of the time, unless I want to snap to mesh vertices. However, the Osnap toolbar does not include a “Mesh” tickbox, so I’m forced to open the Rhino options and manually enable the aforementioned "Near, Mid, Int and Perp snap to mesh objects". This is way too slow and inconvenient, especially given the fact that my Rhino Options menu opens with a huge delay due to the use of around 100 custom display modes.

When I work with important reference mesh models whose position and orientation is final, I put it into its own layer and lock it. I also disable the option to snap to locked objects, in order to prevent snapping to the mesh by accident (especially if it’s a very dense mesh that will kill the performance of my Rhino, or even may crash it). Then I unlock the corresponding layer to be able to snap to meshes, but that comes at the risk of accidentally moving the 3d scan data (something that I want to prevent at any cost). Hence my 2nd request to include two separate options:

I typically use a bunch of 3d scanned models in the scene, such like: transmission, engine, drive shafts, car suspension and other components. When I want to snap to a mesh, I prefer to zoom-in close enough to the desired location to prevent the inevitable drop of performance of even crashes. Next, I have to open the Layers panel to locate the layer where that particular model is locked to prevent snapping to it in 99% of the time. Only then I’m able to unlock the layer.

I’m forced to either disable Osnap to locked objects (the meshes), or disable Osnap entirely (I prefer to keep it on), or turn off the “Near, Mid, Int and Perp snap to mesh objects” option. I can’t find an easy and quick way to toggle snapping to meshes with a single press of a button, key or macro. The idea is to be able to do so when I place my camera close enough to the desired location where I want to snap to mesh vertices, edges, center or near.

Another HUGE issue is that the Osnap tries to snap to vertices at the back side of the 3d scan data instead of the front side close to the camera. In this video, I have “Mid” and “Near” enabled, but Rhino gives a priority to “Vertex” and snaps to the back side mesh vertices instead of the closer mesh edges. It’s a really annoying bug. I’m forced to draw lines between the closer mesh vertices, then I’m finally allowed to snap to “Mid” or “Near” on the line. No idea why Rhino puts the mesh edges as a last priority, even if they are closer to the camera than vertices located far away from the camera…

To snap to the center of a mesh polygon (triangle), I’m forced to build a closed polyline (triangle) by snapping to the 3 mesh vertices. Only then I’m allowed to snap to “Cen”. To reduce the huge lag and inability of Rhino to snap to the closer vertices, I’m forced to build a Clipping plane and locate it close behind the desired location where I want to snap. That will hide the back vertices and will not allow Rhino to snap there.

Every single example of the aforementioned tasks requires lots of time and adds to the overall inconvenience while dealing with snapping to meshes. A simple toggle for snapping to meshes would fix the majority of these, except for:

  1. the unwanted prioritization of the back vertices over the closer mesh edges;
  2. the lack of center snap to mesh triangles.

@Rhino_Bulgaria I also use very large meshes as reference. I have the meshes in separate file or files from the design, and use Worksession to attach the files so that I have access to their contents. Objects in Worksession attached files cannot be altered so that eliminates the problem of accidentally moving a mesh. Also the design file is much smaller and much quicker to save since it does not contain the large meshes.

I also use dense meshes as imported blocks, but that adds more inconvenience to me than advantages. I prefer everything to be included in the main 3dm file for a full control about placement and visibility. Sometimes adjustments are necessary, this is why I find the layers as the better option for my workflow.

However, this topic is about the limited ways for snapping to meshes, as well as the inability to snap to the nearby geometry. The main struggle is a combination of several factors that together will not allow a smooth experience:

  1. Unwanted snapping to the back side of meshes (check my video above);

  2. A lack of a convenient way (macro, command, alias) to quickly toggle the snapping to meshes (“Near” to snap along the mesh edges, “Mid” to snap to the middle of mesh edges, “Cen” to snap to the center of triangle polygons, “On” to snap directly on the polygon surface);

  3. A massive drop of the performance upon snapping (sometimes causes freezing and even crashes).

Not sure why, but Rhino has some issue with meshes since years. Even a 20-years old 3ds Max is multiple times faster in comparison. The developers may take a look at BalancerNPro as an inspiration, because this particular program offers a significant performance gain while working with very dense 3d meshes.

I know the difference. I mentioned what I use sometimes.

Hopefully this crucial request will not remain invisible to the developers.

Just to clarify:

When you say “snap to mesh edge or mesh face”, do you mean:

  1. The real geometry (actual vertices, edges and planar faces of the mesh), or
  2. The shaded visual surface created by the normals (the smooth illusion)?

Because Rhino object snaps only work on the real geometry right now.

I mean the mesh:

  • Vertix (Rhino already have “Vertex” toggle on the Osnal toolbar for this);
  • Mesh edges;
  • Middle of mesh edges;
  • Polygons (anywhere on their surface);
  • Center of polygons.

Obviously, it would be handy to have separate toggles for “Polygons” and “Center of polygons”, because the latter is very useful for snapping certain objects to the center of small polygons. However, when working on low-poly meshes with large/huge polygons, the ability to snap freely on the polygonal surface is essential. Especially on architectural projects where entire walls and floors are made by a single square polygon or two triangle ones.

Likewise, the ability to limit the snapping to “Mesh edges” (Near?) and turn off the rest mesh snapping options is handy in other situations. The same goes for “Middle of mesh edges”.

Watching the video, I’m guessing the problem is accuracy. You’re too far from the center.

You mean that a few meters away from the scene origin is an issue for Rhino?

I stay within the grid, near the center.

Normally, yes, if you use the “Small Objects - Millimeters” template and the mesh is a few meters away.

I use “Large objects - Millimeters”, and this particular mesh model of a transmission is just 1200 mm away from the scene origin along the Y-axis.

Hello @Rhino_Bulgaria
When I build, I try to stay within the grid. It’s not a problem for visualization. But yes for selection.

Hi @Rhino_Bulgaria,

interesting topic with many different requests.

A quick toggle is possible today, but maybe it’s not what you like - just mentioning. SnapToMeshes controls the option as “Near, Mid, Int and Perp snap to mesh objects”, it takes Enable, Disable and Toggle, and it is nestable, so it also runs inside another command. Put this on a button, an alias or a hotkey:

_SnapToMeshes _Toggle

To snap anywhere on a mesh face, see SnapToMeshObject. It constrains picked points to the mesh you select, and it has an Offset option:

I logged a request for a “Mesh-components” toggle in the Osnap panel or just to track this as RH-97573.

There are several other points that constitute separate items. Which are most important? Snap to the centre of a mesh face, Vertex winning over nearer mesh edges, the performance on dense meshes, and splitting “Snap to locked objects” from “snap to objects in locked layers”? If you can, make a list of priorities?

Sorry about the late reply, I was traveling up until now.

As I mentioned before, certain snap types are needed depending on the use case.
For example, meshes consisting extra large polygons (architectural models for rendering) will benefit more from “Face” (on surface) snap type. The rest mesh snap types should be of a lower priority if this particular type is active.
However, a very dense 3d scan model with tiny polygons will benefit more from “Vertex” or “Cen” (center of polygon meshes). It all depends on the size of the polygons, as well as their purpose.

Turns out that the hidden command SnapToOccluded was on by default (I use nearly stock Rhino 9 BETA on purpose to find as much bugs as possible), this is why the snapping to back vertices was unbearable in my example with the dense 3d scan model.
As soon as I turned off that “feature” the snapping was possible only on the visible closeup geometry.

I reported also RH-97621 as a separate issue. Here the command is not Enabled by default, but maybe there should be some investigation.

In the 3rd post above I included a video capture with the bug. Note that in the 1st second of my video the “Snap to occluded objects” option is off. Then, after the 55th second, I switched to “Shaded” mode and tried to snap to a close-up mesh, but Rhino tried to snap to the occluded back geometry instead.


I have no idea if something triggers that option on and off. However, in another thread I also reported another bug that I found in the latest Rhino 9 BETA. The “Zoom” button of my 3d mouse triggers the state of the “Grid snap” to on and off. It’s a weird bug that I haven’t seen in any of the previous versions of the BETA and WIP.