Переопределение списка выбранных объектов для оператора transform.translate

Для того чтобы оператор, вызванный из непредназначенного для него контекста, правильно выполнил свою работу, для него необходимо переопределить контекст при помощи bpy.context.temp_override.() Однако при помощи temp_override можно переопределять не только контекст вызова оператора, но и, например, стек выбранных объектов.

Список всех выделенных объектов сцены хранится в bpy.context.selected_objects.

Если теперь мы вызовем оператор transform.translate()

все выделенные объекты передвинутся на единицу вдоль глобальной оси X.

Мы можем использовать этот же самый оператор transform.translate() для того чтобы передвинуть нужные нам объекты, а не выделенные. Для этого нужно перед вызовом оператора переопределить  для него список выделенных объектов.

Соберем указатели на нужные объекты в список:

И воспользуемся функцией temp_override для временного переопределения списка выделенных объектов, указав вместо него созданный нами список.

Теперь повторно вызовем оператор transform.translate

В результате его выполнения будут передвинуты не выделенные объекты, а только те, что мы указали в списке при переопределении.

Полный код:

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии