Переопределение контекста

Некоторые операторы в Blender можно вызывать только в той рабочей области, для которой они предназначены.

Если вызывать, например, оператор, предназначенный только для работы в области 3D вьюпорта в Python-консоли, оператор или просто не выполнится:

или вернет сообщение о неверном контексте:

Однако выполнить операторы в “не родной” рабочей области все же можно. Для этого в любой оператор можно передать первым неявным параметром указание на контекст рабочей области, в которой должен быть выполнен этот оператор. Этот параметр обычно называют “переопределенный контекст”.

Данный метод подходит для Blender версии 3.1 и более ранних. Для версии Blender 3.2 и более поздних необходимо использовать метод temp_override().

Собственно, переопределенный контекст – это словарь с набором элементов, описывающих нужную рабочую область.

Например, для рабочей области 3D вьюпорта переопределенный контекст нужно составить следующим образом:

Главное здесь – указать нужную рабочую область – area, в нашем случае это область 3D вьюпорта “VIEW_3D”. Конечно, как минимум одна такая рабочая область должна быть открыта в окнах Blender.

Получив структуру переопределенного контекста, можно вызвать оператор, передавая ее первым параметром:

Полный код, который будет корректно исполняться из текстового редактора Blender:

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

0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии