Mesh selection and editing is still very slow and cumbersome. WIP 04/21/20

Hi McNeel team,

I came to the office to print something out of Saturday on my Formlabs. I realized I waned to make a quick edit to an STL before printing. It wasn’t my original file, it had been already edited as mesh, so I didn’t want to go back it its history, I needed a direct edit as mesh. I JUST wanted to model some holes, or remake them. Simple, simple, simple stuff.

Nothing about this was simple. And I’ve found it shocking since this is a 2 minute job in Modo.

I made a couple of videos to show you how still it is extremely difficult and cumbersome to select mesh faces, mesh edges, mesh hole outlines. Then even after you have done that, doing any mesh editing/appending/adding/replacing details is too limited and cumbersome.
I’m running version (7.0.20112.12445, 04/21/20)

Video 1. Foundation on Selection limitation:

Now let me show you how hard was to select some blind holes (extruded-cap tubes in a model):

  1. I have a model that I can’t show here, but this shows its bounding box, all meshed STL data

  2. I had to create 5 clipping planes so I could hide everything else in the model to be able to select just the faces in the area that I needed.

  3. One I have only visible what I need from my model…

  4. I can go and select all the pipes and caps:

  5. This was a ridiculous amount of clicking to select just what I wanted here.

After deleting all these features I’m now ready to extrude new pipes in the direction and depth that I want. and om man, that was some crazy wild ride! just selectiong hole boudarties and extruding. Such a simple task, look how many workarounds it takes…

Video 2. Extruding mesh holes seems daunting:

Video 3. Hardest mesh pipes I’ve ever built:

I hope this is helpful for you all to see how poorly the current tools work when you have anything more complex than a developer’s sample file.

cc. @BrianJ @theoutside

Please let me know if you want me to share any files. Thanks, for watching.


Actually, EdgeLoops are what you want. I prefer SelEdgeLoop myself, and then use gumball to extrude from the selection like this. ExtrudeMesh using EdgeLoop works similar, except the extrusion bit is a bit more elaborate (as in there are more buttons and options to choose from once in the extrusion phase)

OTOH, I do see that edge loops are pretty much harder when the mesh isn’t ‘nice’, which is clear if you use directly render mesh from a (poly)surface with holes in.

1 Like

Ok, so after a bit more testing this is indeed quite… you know. Better selection tools for meshes, like these edge boundaries would be great indeed.

Yeah, welcome to the real world of production work. This mesh was used for STL export. So we did mesh it with triangles. There are no loops here.

QuadRemesh is too unreliable, error prone and out of tolerance to use in this case. We need a way to easily select mesh boundaries to we can cap/extrude/etc.


The best part I guess is that for instance on the mesh geometry class there is a GetNakedEdges() that gives exactly all the boundaries. “Just” need a way to pick those quickly.

1 Like

Hi Nathan, just be careful there. On video 3, at 2min 10sec you will see rhino is making a lot of baker edges that should not be there and are NOT boundaries. so you all need to make all those process a lot more reliable before you can trust those are inputs for desirable outputs. Also marque select all boundaries to select only the naked edges we need would be helpful.

Hey @gustojunk,

here a quick prototype in a Python script that you can drop in a toolbar button. The GitHub page for the script is, and direct load link (copy/paste into EditPythonScript for quick test, remember to save, and/or put in toolbar):

This first asks to select an open mesh (mesh that has naked edges), then an already created solid polysurface. All naked edges fully contained in the volume will be selected. There are many improvements to be made, but this may already alleviate your selecting anxiety.

See Running Python scripts from aliases or toolbar buttons with instructions how to put Python script in a button

hi Nathan,

Thanks for sending this. The bounding brep makes sense in some cases, but in others it will be too hard to make a brep/solid that follows a non-blocky area of desired naked edges. Do you think we can have another script that select all naked edges?

Look at this example:

it would be easier to unselect what I did not want selected that having to construct a bounding geometry.

Another option would be, clicking in just one edge of the naked edge and that selects all the shared edges with that same naked edge. Similar to what ! _DupMeshHoleBoundary does, but instead of duplicating that naked edge hole, it just selects in?

I think Rhino should have a select boundary edge, for both meshes and SubDs. Why not even for surfaces/polysurfaces?



Sure, that should be no problem.

I would think it should be possible.

Agreed. As mentioned this is a prototype script I whipped up last night while I should’ve been sleeping (: (well, the sleeping part I didn’t mention before)

My main focus for the near future will be on native decals in Raytraced though, but I’ll chip away on this when I get the chance.

thanks! Yeah I think this even as current is super useful. I tried to hack your script to give me all edges, but I cannot macro a _NamedSelection. So I cannot save to later retrieved the selected naked edges:

_-NamedSelections should let me list,save,restore selections with macros, just like namedviews, namedClanes, namedAnything…aaaah