2
$\begingroup$

I want to go from this:enter image description here

To This:

enter image description here

Ideally, in one single operation. There appears to be a straightforward way to do this if the selection happens to be Edges. From the Select Menu, I can choose Select > Select Loops > Select Loop Inner Region. However, if the selection is originally Faces, the feature breaks, removing some of the original face selections, while adding no new ones. I realize that I could make my initial selection in Edges, then choose Select Loop Inner Region, and after it creates the selection, simply use the 3 key to switch back to Faces, and that would give me the result I am after. But this means extra steps that shouldn't be necessary. It seems to me that since there is something called an edge loop, as well as something called a face loop, and also, since this Select Menu doesn't specify edges nor faces in its wording, that the feature should work with either edges or faces. But it doesn't. So what does? What works to select all inner faces of a selection of faces?

$\endgroup$
2
  • $\begingroup$ The tooltip specify "...inside of a selected loop of EDGES". But yes, the name of the feature is misleading. And yes, such a tool would be useful. Maybe try to suggest it on blender.community/c/rightclickselect $\endgroup$
    – thibsert
    Commented May 27, 2020 at 12:18
  • $\begingroup$ I believe you about the tooltip. I learned to stop reading them because they are often useless, usually merely restating the menu item's name. I guess I was misled by the fact that there is an Edge Menu, as well as a Face menu. Presumably, operations specific to edges are under the Edge Menu, and faces under the Face menu. And then there's this Select menu, which, presumably, contains operations related to selection. Since both edges and faces can be selected, a select menu function should work with either, OR ELSE list such a function exclusively under the Face's/Edge's respective menus. $\endgroup$
    – R-800
    Commented May 27, 2020 at 13:07

3 Answers 3

6
$\begingroup$

It's not one operation, but it is quick, and Blenderish, (no faffing with menus, no operations on things you can't see)..

  • H hide the selected boundary faces...
  • Hover over the interior with L to pick them all up...
  • Alt H to bring the boundary back.

... thanks to @Arda for noting an important and often-missed feature of H and Alt H:

To include/exclude the border in the final selection, check/uncheck "Select" in the "Reveal Hidden" options that come up after you press Alt H

$\endgroup$
3
  • $\begingroup$ The principle of hiding parts of the mesh while editing is very general .. it's useful to all sorts of operations while editing.. IMO, while it's slightly strange, it helps keep the interface minimal, which is one of the reasons I'm fond of modeling in Blender, $\endgroup$
    – Robin Betts
    Commented May 27, 2020 at 14:04
  • 1
    $\begingroup$ Great answer. To include/exclude the border in the final selection, check/uncheck "Select" in the "Reveal Hidden" options that come up after you press Alt-H. $\endgroup$
    – Arda
    Commented Feb 1, 2022 at 17:51
  • $\begingroup$ @RobinBetts I'm confused why not just Ctrl+Shift+Click? :D EDIT: but yeah would only work for squarish selection. But your solution will work for even irregular selections :) $\endgroup$
    – Harry McKenzie
    Commented Jul 3 at 10:37
1
$\begingroup$

Building up on the idea from @Robin Betts:

bl_info = {
    "name": "Select inside face loop",
    "blender": (4, 0, 0),
    "category": "Mesh",
}

import bpy

class MESH_OT_select_inside_face_loop(bpy.types.Operator):
    bl_idname = "mesh.select_inside_face_loop"
    bl_label = "Select inside face loop"
    bl_options = {'REGISTER', 'UNDO'}

    event: bpy.types.Event
    location: tuple[int,int]


    def execute(self, context):
        ops = bpy.ops
        mesh = ops.mesh

        mesh.hide()
        ops.view3d.select(location = self.location)
        mesh.select_linked()
        mesh.reveal()
        return {'FINISHED'}


    def invoke(self, context, event):
        self.event = event
        self.location = (event.mouse_region_x, event.mouse_region_y)
        return self.execute(context)


def register():
    bpy.utils.register_class(MESH_OT_select_inside_face_loop)


def unregister():
    bpy.utils.unregister_class(MESH_OT_select_inside_face_loop)

if __name__ == "__main__":
    register()

Can be easily bound to a key/mouse shortcut and parametrized further as needed. Tested in Blender 4.0.x, I guess it should work for earlier and later versions as well.

$\endgroup$
1
$\begingroup$

Why not just Ctrl+Click then Ctrl+Shift+Click?

enter image description here

Or just directly Click one face at one corner and then Ctrl+Shift+Click the opposite corner.

enter image description here

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .