Получаем значение свойства в Blender через контекст

Для определения текущего активного объекта в сцене в Blender мы обычно используем контекст и его свойство context.object (или context.active_object). Точно так же и при работе с интерфейсом мы можем обратиться к контексту, чтобы получить текущее активное свойство – значение поля в Blender UI над которым мы позиционируем курсор или по которому мы сделали клик мышкой. Для этого служит свойство context.property.

Рассмотрим для примера, как можно получить значение текущего активного свойства из N-панели интерфейса Blender.

Для начала определим простейший класс для вывода в системную консоль значения context.property.

В исполняемой функции execute мы прописываем вывод в консоль значение context.property.

Зарегистрируем его в Blender Python API.

При выполнении оператора будет использован текущий контекст, то есть контекст того элемента UI, над которым пользователь совершает текущее действие. Пусть, для примера, это будет вызов контекстного меню – которое открывается по клику правой кнопкой мышки.

Добавим в контекстное меню новый пункт, нажатие на который вызовет наш оператор. Для этого определим функцию extend_menu.

И добавим ее вызов в хендлер UI_MT_button_context_menu:

Теперь при клике правой кнопкой мышки на поле любого свойства в N-панели в меню будет отображаться новый пункт “Context Property”.

При нажатии на этот пункт меню будет выполнен наш оператор.

Кликнем правой кнопкой мышки по свойству Location – X и выберем наш новый пункт “Context Property” в открывшимся меню. В системную консоль будет выведен следующий кортеж:

Первым элементом кортежа всегда будет ссылка на блок данных, которому принадлежит данное свойство.

На втором месте будет имя этого свойства.

А на третьем – порядковый индекс элемента, если свойство имеет тип массива.

Немного расширим выводимые нашим оператором данные, добавив в функцию execute еще несколько строчек:

Здесь мы дополнительно получаем собственно данные активного свойства и, если оно имеет тип массива, конкретно значение текущего элемента.

Наш вывод в консоль теперь имеет следующий вид:

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

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