Id иконок инструментов соответствуют называниям файлов, в которых они хранятся и их можно получить просто посмотрев в соответствующую папку Blender. Однако идентификаторы иконок можно получить и через Blender Python API при помощи класса ToolSelectPanelHelper.
После его импортирования
1 |
from bl_ui.space_toolsystem_common import ToolSelectPanelHelper |
мы можем получить указатель на все классы инструментов в нужной нам рабочей области. Например, для 3D вьюпорта.
1 |
cls = ToolSelectPanelHelper._tool_class_from_space_type('VIEW_3D') |
Теперь мы можем получить указатель на инструмент по контексту.
1 |
item_group = cls.tools_from_context(bpy.context): |
Если инструмент не входит в группу инструментов, мы можем получить его название и id иконки следующим образом:
1 |
print(item_group.label, item_group.icon) |
Если инструмент объединяет несколько инструментов – был зарегистрирован в API с опцией group = True, мы получим указатель на кортеж, каждый элемент которого является отдельным инструментом.
Мы можем получить их имена и id иконок пройдя по кортежу:
1 2 |
for sub_item in item_group: print(sub_item.label, sub_item.icon) |
Полный код, который выведет название и id иконки для всех инструментов в рабочей области 3D вьюпорта:
1 2 3 4 5 6 7 8 9 10 11 12 |
import bpy from bl_ui.space_toolsystem_common import ToolSelectPanelHelper cls = ToolSelectPanelHelper._tool_class_from_space_type('VIEW_3D') for item_group in cls.tools_from_context(bpy.context): if type(item_group) is tuple: for sub_item in item_group: print(sub_item.label, sub_item.icon) else: if item_group is not None: print(item_group.label, item_group.icon) |