Hi McNeel
Is there a way to either
a) invert the sub-object selection of an object, eg. using Lasso to select some faces on a mesh or sub-d and then inverting that selection? Or
b) make it possible for SelBoundary, Lasso etc. to recognize if a selection filter is active. What I’m looking for specifically, is to use Lasso or SelBoundary to select all the faces outside the selected area (or to invert the selected, as mentioned in a).
TIA, Jakob
at the moment, this is not possible, but I’d be curious if @pierrec has any ideas on how to do this-
a) Not possible currently, but maybe @BrianJ has a solution coming up in his selector plugin? RH-98496 Subobject selection: Have a way to invert a subobject selection
b) Lasso, SelRectangular, and SelBoundary both already work with selecting subojects / selection filters. They also both have a InvertWindows and InvertCrossing option, but these do not work with selection filters (specifically, InvertWindow is the same as Crossing when a selection filter is active, and InvertCrossing is the same as Window). RH-98494 Lasso + SelBoundary + SelRectangular: InvertWindow / InvertCrossing not working with selection filters
great and thanks @pierrec i wanted to point exactly to the same issue _selBoundary + InvertWindow + Selection Filter… hopefully this can be fixed.
workaround:
sub-Select beyond the blue circle:
do a fake closed curve with a minimal gap ( make it document tolerance * 2 or * 10).
just for demonstration much wider:
now _selBoundary with Selection Mode Crossing and Selection-Filter-SubObject does the job:
(for selecting the curve, you need cmd+shift / ctrl + shift click it)
if you need “window” style selection - use the option and do an additional rectangular selection in the area of the gap.
empower named selection
i still have this wish:
@Normand would be a selection of all sub-objects → named selection “1st-all”
a second selection → named selection “2nd not me”
now a logic combination of “1st-all” combined by logic not with “2nd not me”
… my 2 cents - best -tom
Love that creative workaround!
Cool ideas, I’m investigating where the implementation stopped.
Hi @BrianJ
Thanks for the suggestion, but not really. It’s usually working with scanned meshes, where clean topology that lends itself to chaining selections is not really a thing
A typical situation would be using lasso to select a small area and using Smooth to, well, smooth out a particularly messy area. Often I then need to smooth the rest of the model as well, but with fewer steps or a smaller factor, and inverting the sub-object selection would be handy. I have similar work flows that involve other commands, but generally they’are all “select area, do one command, invert selection, do other command”. What I do now is to copy the selection, delete the selected faces, paste the selection back in, re-apply material, do command 1, select other object, do command 2, rejoin meshes. I’d love a InvertSubobjectSelection command.
BR, Jakob
i would love to see those logic AND; OR; NOT; …
… which would basically be a
SubSelect-All NOT MyNamedselection
this would be a more general approach (and then maybe a InvertSubobjectSelection would internally rely on the same Code)
Hi @Tom_P
I agree - and what I’m looking for would be easily scriptable with a temporary named selection. Basically anything that would enable modifying subobject selections beyond manual add/subtract would be nice ![]()
-Jakob
Understood. I added a note to the request Pierre filed above. It might make sense as part of Invert. Named Selections work on this scale would be in the v10 timeframe I think. I filed the named selection Booleans requests as https://mcneel.myjetbrains.com/youtrack/issue/RH-98678
Thank you SO much! Can’t wait to test it ![]()
Kind regards, Jakob
Hi @BrianJ and @mikko
Initial thoughts: Works great but a minor papercut could be (at least for some users) that it does not limit the inversion to the selected subobject type. Say I have a 5x5x5 sub-d cube and select 2 loops of faces. If I InvertSubObjects on that, I’d expect the 2 bands to be left out of the inversion, but the command selects the edges and vertices of those faces, so if I eg. hit delete, the whole object’s gone; unless you have the subobject selection filter set to faces - then it does what I’d expect it to do. See if the video makes more sense than I do ![]()
Maybe it’s possible to check what kind of subobject type(s) are in the selection (maybe even pr. object) and limit the inversion to that type(s)? As an alternative, there could be switches on the prompt to set which type of subobjects to “include”.
But this is still a major step forward for me - I’m gonna use this every single day, and already have it set as an alias (i=Invert, ii=InvertSubObjects) ![]()
-Jakob





