Для того чтобы выделить все объекты, находящиеся в одной коллекции, при помощи Blender Python API, нужно пройти по списку этих объектов и для каждого из них вызвать метод select_set, указав в параметре значение True.
Если нужная коллекция активна, обратиться к ней можно через указатель на активную коллекцию:
1 |
bpy.context.collection |
В ином случае к коллекции можно обратиться по ее имени:
1 |
bpy.data.collections['_COLLECTION_NAME_'] |
Получить список всех объектов, которые содержатся в нужной коллекции можно через ее список objects:
1 2 3 |
bpy.context.collection.objects[:] # [bpy.data.objects['Cube.006'], bpy.data.objects['Cube.007'], ...] |
Пройдя по списку мы можем выделить все объекты коллекции:
1 2 |
for obj in bpy.context.collection.objects: obj.select_set(True) |
Однако, такой способ выделит только объекты, находящиеся непосредственно в активной коллекции. Если внутри нее есть еще коллекции и в них есть объекты – они выделены не будут.
Выделить все объекты, находящиеся в коллекции и на всех вложенных в нее коллекциях на всех уровнях, можно через список коллекции all_objects:
1 2 |
for obj in bpy.context.collection.all_objects: obj.select_set(True) |