Оператор wm.context_toggle предназначен для переключения состояния чекбоксов в интерфейсе Blender. С его помощью можно настроить быстрое переключение любых чекбоксов в любых окнах и панелях.
Для примера настроим включение/выключение отображения сетки (wireframe) во вьюпорте.
Оператор “wm.context_toggle” принимает в качестве первого аргумента текстовый указатель на свойство, описываемое чекбоксом, в Blender Python API.
Для чекбокса включающего и выключающего отображение сетки во вьюпорте этот путь выглядит следующим образом:
1 |
bpy.context.space_data.overlay.show_wireframes |
Обращение к нему при помощи оператора wm.context_toggle:
1 |
bpy.ops.wm.context_toggle(data_path='space_data.overlay.show_wireframes') |
Оператор контекстный, поэтому для правильной работы с чекбоксом окна 3D Viewport, он должен вызываться только из окна 3D Viewport. Также поэтому в пути к свойству нет необходимости указывать полный путь с контекстом bpy.context.space_data.overlay.show_wireframes, а достаточно указать лишь часть, после указания контекста.
В таком виде этот оператор можно назначить, например, на кнопку в пользовательской панели. Однако гораздо удобнее при помощи этого оператора назначать комбинации клавиш для быстрого переключения нужных чекбоксов.
Для того, чтобы связать включение/выключение сетки с нажатием клавиши на клавиатуре, в окне “Preferences” в разделе “KeyMap” в списке “3D View – Object Mode – Object Mode(Global)” создайте новый шорткод на подходящую комбинацию клавиш.
В поле “Identifier” нужно указать вызов самого оператора “wm.context_toggle”, а в появившемся поле для аргумента “Context Attribute” ввести API-путь к нужному свойству “space_data.overlay.show_wireframes”.
Теперь при нажатии указанной клавиши в окне вьюпорта будет включаться/выключаться отображение сетки на объектах.