2
$\begingroup$

I have created a collection of objects that includes archimesh objects.

I want to duplicate, move and rotate the collection.

Since archimesh objects have some of its properties locked, I have to unlock every property of every one of them.

I tried locking and unlocking all the properties of the selection set, but did not work. Only selecting one sub object at a time worked.

Is there a way to select all objects in the collection and have all objects properties unlocked?

$\endgroup$

2 Answers 2

7
$\begingroup$

In Blender if you want to change the same property on multiple objects you have to press (and keep pressed) the ALT modifier key beforehand, otherwise only the active object (Yellow outline) will update.

enter image description here

$\endgroup$
3
  • 3
    $\begingroup$ What the actual heck. Since when has this been a thing!?! $\endgroup$
    – Will Chen
    Commented May 22, 2021 at 14:21
  • 3
    $\begingroup$ @WillChen Sshh... Do like everybody else and pretend it went out in the last patch and you didn't lose part of your sanity because you thought that was not possible ;) $\endgroup$
    – Gorgious
    Commented May 22, 2021 at 17:11
  • 1
    $\begingroup$ Very useful feature Gorgious. Thanks for sharing. :) $\endgroup$
    – RPaladin
    Commented May 23, 2021 at 18:52
1
$\begingroup$

I'm still learning BPY myself, but here is a script I whipped up to assign off a stated collection's object's transform locks (location, rotation, scale). Run the script vie the text-editor. Enjoy.

Assigning individual transform-locks

import bpy

COLLECTION_NAME = "Collection 1"

for collection in bpy.data.collections:
   if collection.name == COLLECTION_NAME:
       for obj in collection.all_objects:
            obj.lock_location[0] = False
            obj.lock_location[1] = False
            obj.lock_location[2] = False
            obj.lock_rotation[0] = False
            obj.lock_rotation[1] = False
            obj.lock_rotation[2] = False
            obj.lock_scale[0] = False
            obj.lock_scale[1] = False
            obj.lock_scale[2] = False

Assigning group transform-locks

import bpy

COLLECTION_NAME = "Collection 1"

for collection in bpy.data.collections:
   if collection.name == COLLECTION_NAME:
       for obj in collection.all_objects:
           for i in range(len(obj.lock_location)):
               obj.lock_location[i] = False
           for i in range(len(obj.lock_rotation)):
               obj.lock_rotation[i] = False
           for i in range(len(obj.lock_scale)):
               obj.lock_scale[i] = False
$\endgroup$

You must log in to answer this question.

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