1

How can I move/transform a whole collection of objects, including invisible objects? I have invisible objects to facilitate boolean modifiers.

The popular advice to move a collection is to select all objects and then transform. However, this doesn't select invisible objects. Another suggestion is to select all objects in the collection using SHIFT. However, I have nested collections with some levels of child collections, and it would be cumbersome to expand everything.

Is there a better way of grouping objects together, in order to use them as one in the scene?

Janos
  • 123
  • 5
  • 1
    Use a collection instance? – lemon Sep 13 '20 at 18:09
  • 2
    Hey :). Yeah, the fact that hidden objects cannot be selected is a bit frustrating... – jachym michal Sep 13 '20 at 19:03
  • Ah yeah collection instances seem to be the way to go! Then, I'd usually hide the original collection and place them somewhere far away in the scene? Or what would you recommend where to place the collection items themselves? – Janos Sep 14 '20 at 18:20
  • Well, collection instances solves a whole spectrum of things - but it doesn't really solve the "hidden objects" problem. Objects invisible in the collection are still visible in the collection instance! I found visibility settings under the object properties -> Visibility. If I deselect "Viewports", the object will be invisible everywhere. But that's quite cumbersome if I want to edit a hidden object anyway. Blender 2.9 by the way. – Janos Sep 14 '20 at 18:43

1 Answers1

0

One way to overcome such a thing is this;

bpy.data.collections['target_coll'].objects.link(bpy.data.objects['issued_obj'])
bpy.data.collections['source_coll'].objects.unlink(bpy.data.objects['issued_obj'])

Object needs to be link to new than unlink from old but this is applicable if the source and target collections are known and to get this info;

source_coll = bpy.data.objects['issued_obj'].users_collection[0]

Additionally, if one want to use built in "Scene Collection" as source or target;

bpy.data.scenes['Scene'].collection.objects.link('issued_obj')
bpy.data.scenes['Scene'].collection.objects.unlink('issued_obj')

working on 3.6