При создании аддонов для Blender практически всегда разработчик предоставляет пользователю панель UI с инструментами, обеспечивающими основной функционал аддона. Обычно такие пользовательские панели размещаются в блоке N-панели, вызываемой по нажатию клавиши N. Однако если предполагается, что пользователь будет вызывать панель с инструментами аддона часто, ее вызов можно привязать на сочетание клавиш и вызывать панель с клавиатуры.
Для примера создадим простую пользовательскую панель с двумя кнопками, на которые привяжем вызов базовых операторов добавления в сцену куба и Сюзанны.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class TEST_PT_panel(from bpy.types.Panel): bl_idname = 'TEST_PT_panel' bl_label = 'TEST' bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_category = 'TEST' def draw(self, context): self.layout.operator( operator='mesh.primitive_cube_add', icon='MESH_CUBE', text='' ) self.layout.operator( operator='mesh.primitive_monkey_add', icon='MESH_MONKEY', text='' ) |
Зарегистрируем класс нашей панели в Blender API
1 |
register_class(TEST_PT_panel) |
Теперь в N-панели появилась вкладка с названием нашей пользовательской панели TEST. Кликнув на нее можно открыть панель и нажатием на кнопки операторов добавлять в сцену меши.
Для того чтобы вызывать эту панель по нажатию на определенные клавиши на клавиатуре, для начала получим указатель на keymap:
1 2 3 4 |
km = bpy.context.window_manager.keyconfigs.addon.keymaps.new( name='Window', space_type='EMPTY' ) |
Создадим новый элемент keymap, в котором инициируем выполнение оператора wm.call_panel. Здесь же укажем сочетание клавиш, при нажатии которых он будет вызываться – в нашем примере пусть это будет сочетание Shift + T:
1 2 3 4 5 6 7 8 9 |
kmi = km.keymap_items.new( 'wm.call_panel', 'T', 'PRESS', ctrl=False, alt=False, shift=True, repeat=False ) |
Укажем для этого keymap элемента bl_idname панели, которая будет вызываться:
1 |
kmi.properties.name = 'TEST_PT_panel' |
И дополнительно выключим параметр keep_open, чтобы панель закрывалась сразу после нажатия кнопок на ней.
1 |
kmi.properties.keep_open = False |
Теперь при нажатии сочетания клавиш Shift + T отдельным всплывающим окошком будет открываться наша панель.