6
$\begingroup$

Organizing the objects under empties, I'm used to select the empties and all the objects under it by Ctrl+Shift+LeftMouse on the "Groups" I want to select.

With the release of 2.81 this no longer works: you can right-click on the empty and select all the objects under it ("Select Hierarchy"), but you can't add to the current selection this way (ie. select multiple hierarchies/groups).

Does anyone know about an easy way to select several empties and their underlying hierarchies?

$\endgroup$

6 Answers 6

3
$\begingroup$

Quick workaround:

  1. In the viewport Shift select any children objects form the hierarchies that you want to select.

  2. Press Crtl + "Numpad +" to select upper levels of your hierarchy until you reach the parent objects.

  3. Done!
$\endgroup$
1
  • $\begingroup$ nice one. I didn't know the Ctrl+ combination also worked in the Outliner. Thanks! $\endgroup$
    – Warner
    May 11, 2020 at 15:21
3
$\begingroup$

Looks like it's gone, but you can still right click the parent object and hit "Select hierarchy" But that won't work for de-selecting it :(

Edit: And it's quite impossible to select couple of parent object with their hierarchies.

$\endgroup$
1
  • $\begingroup$ Indeed.. Well, guess the big improvement in the outliner had to come with a couple of drawbacks in the beginning.. :) $\endgroup$
    – Warner
    Nov 22, 2019 at 11:42
1
$\begingroup$

This is a bit of a setback. I need to select multiple assemblies with all their children and move them to various collections every day. It was easy to shift/ctl click them one by one and add them in one go...now they have to be done individually. The only workaround I can think of till it is fixed is to select each of the parents by shift clicking or ctl clicking on them ....then use shift plus ] IN THE 3d VIEWPORT to select all the children (keep clicking til they are all selected as each click is one level of the hierarchy.

$\endgroup$
2
  • $\begingroup$ Sounds like a good workaround! Only.. when I do this (linux) I get an error: Traceback (most recent call last): File "/snap/blender/34/2.81/scripts/startup/bl_operators/object.py", line 217, in execute obj.select_set(True) RuntimeError: Error: Object 'Apartment_Ceiling.A' can't be selected because it is not in View Layer 'RenderLayer'! location: <unknown location>:-1 $\endgroup$
    – Warner
    Nov 29, 2019 at 11:12
  • $\begingroup$ I get that error occasionally because of something to do with collections. ie the child of something you're selecting is turned off in a different collection. Is your mouse pointer in the 3D window (not the Outliner) when you use shift + ] $\endgroup$
    – Dave.Maak
    Nov 30, 2019 at 17:52
0
$\begingroup$

In v2.90, one can first Select Hierarchy on the first group, then in the Outliner ctl-LMB on another parent and in the 3D View, Select -> Grouped -> Children, and then ctl-LMB on the parent again :-(

$\endgroup$
0
$\begingroup$

Similar to James in v2.9, When you select a parent in a viewport or in the outliner. Move your mouse to a viewport and press ⇧ Shift + G This will give you a selection window that lets you easily extend your selection. By children or other options.

*If you want to extend your selection keep the extend box checked.

$\endgroup$
0
$\begingroup$

you can use this rough code snippet to solve exactly your problem. This code can multiselect hierachys and collections

#create operator class
class multiSelector(bpy.types.Operator):
bl_idname = "multi_selector.1"
bl_label = "multi select object hierachies or collection hierachies"

def execute(self, context):
    selection = bpy.context.selected_ids
    collection = False
    
    for item in selection:
        
        if str(type(item)) == "<class 'bpy_types.Collection'>":
            collection = True
            pass
        else:
            pass
        
    if collection == True:
        print("Collection true")
        
        for item in selection:
            for obj in bpy.data.collections[item.name].all_objects:
                isSelect = obj.select_get()
                if isSelect == False:
                    obj.select_set(True)
                else:
                    obj.select_set(False)
    
    else:
        sel_objects = []
        
        for item in selection:
            bpy.context.view_layer.objects.active = item 
            bpy.ops.object.select_grouped(type='CHILDREN_RECURSIVE')
            sel = bpy.context.selected_objects
            
            sel_objects.append(item.name)
            for obj in sel:
                sel_objects.append(obj.name)
        
        for obj in sel_objects:
            obj = bpy.data.objects[obj]
            isSelect = obj.select_get()
            if isSelect == False:
                obj.select_set(True)
            else:
                pass
        
    return {'FINISHED'}   

# register operator and create keybinding
def register():
    bpy.utils.register_class(multiSelector)
  
    #add keymap for shortcuts     
    wm = bpy.context.window_manager
    kc = wm.keyconfigs.addon
    if kc:
        km = kc.keymaps.new(name='Outliner', space_type= 'OUTLINER')
        kmi = km.keymap_items.new("multi_selector.1", type='Y', value='PRESS', shift=False, alt =False, ctrl=True)
        addon_keymaps.append((km,kmi))
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.