Как добавить кнопку в хедер окна в Blender

С помощью Python API в Blender можно кастомизировать интерфейс, настроив его удобным для себя образом. Например, можно вынести наиболее часто используемые операторы в хедер (верхнее меню) любой рабочей области Таким образом можно собрать собственный риббон из “быстрых” кнопок.

Хедер каждой рабочей области (окна) в Blender описывается в API собственным типом. Например, хедер 3D вьюпорта описана в bpy.types.VIEW3D_HT_header.

Проще всего определить тип хедера у нужного окна, кликнув по любой кнопке на нем правой кнопкой мышки, в выпадающем меню выбрав “Edit Source” (должны быть включены Developer Extras в настройках) и открутив открывшийся в текстовом редакторе код вверх до определения класса.

Для основных рабочих областей Blender типы хедеров следующие:

3D Viewport – VIEW3D_HT_header
Image Editor – IMAGE_HT_header
UV Editor – IMAGE_HT_header
Compositor – NODE_HT_header
Texture Node Editor – NODE_HT_header
Geometry Node Editor – NODE_HT_header
Shader Editor – NODE_HT_header
Video Squiencer – SEQUENCER_HT_header
Movie Clip Editor – CLIP_HT_header
Dope Sheet – DOPESHEET_HT_header
Time Line – DOPESHEET_HT_header
Graph Editor – GRAPH_HT_header
Drivers – GRAPH_HT_header
Nonlinear Animation – NLA_HT_header
Text Editor – TEXT_HT_header
Python Console – CONSOLE_HT_header
Info – INFO_HT_header
Outliner – OUTLINER_HT_header
Properties – PROPERTIES_HT_header
File Browser – FILEBROWSER_HT_header
Asset Browser – FILEBROWSER_HT_header
Spreadsheet – SPREADSHEET_HT_header
Preferences – USERPREF_HT_header
Для того, чтобы добавить какие-либо элементы интерфейса в хедер, определим функцию для их отрисовки, аналогично функции “draw” для пользовательских панелей.
Например, кнопка для оператора, вставляющего в сцену дефолтный куб “bpy.ops.mesh.primitive_cube_add”:

Чтобы функция не терялась при перезагрузке сцены, мы обернули ее в декоратор @persistent.

Теперь для размещения кнопки вызова этого оператора в хедере 3D вьюпорта, добавим нашу функцию в хедер командой “prepend”.

При использовании “prepend” все элементы интерфейса, определенные в нашей функции, будут отрисовываться в хедере перед его основными кнопками. Можно так же использовать функцию “append”, в этом случае все элементы из нашей функции будут отрисованы в хедере после его базовых кнопок.

Для того, чтобы убрать добавленные нами кнопки из хедера, нужно удалить нашу функцию, вызвав метод хедера “remove”:

5 1 голос
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии