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

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

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

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

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

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

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

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

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

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

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

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

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