Скрипт Blender для создания панели инструментов не дает никаких результатов.
Я нашел этот учебник и продолжал пытаться создать свою собственную панель на инструментальной полке, но моя не будет работать без видимой причины.
Я использую Blender 2.63, и я также попробовал точно такой же скрипт в Blender 2.58 и 2.56, оба с одинаковым результатом. НИЧЕГО ТАКОГО.
Я прошел через сценарий больше раз, чем могу сосчитать, и я не видел ни опечаток, ни неправильных слов, но он все равно ничего не делает. Что еще хуже, я не получаю никаких сообщений об ошибках.
Когда я нажимаю кнопку "Выполнить сценарий" в текстовом редакторе, я получаю только сообщение о том, что запустил сценарий. На полке инструментов он отображает его внизу так же, как если бы вы добавляли куб, только с кубом вам предоставляются некоторые параметры, такие как местоположение / масштаб и т. Д. Куба. Он также отображается в информационном окне как:
bpy.ops.text.run_script()
Вот как выглядит мой код:
import bpy
class customToolshelfPanel(bpy.types.Panel):
bl_space_type = "VIEW_3D"
bl_region_type = "TOOLS"
bl_context = "objectmode"
bl_label = "Custom Toolshelf Panel"
def draw(self, context):
layout = self.layout
col = layout.column(align=True)
col.label(text="Add:")
col.operator("mesh.primitive_plane_add", icon="MESH_PLANE")
col.operator("mesh.primitive_cube_add", icon="MESH_CUBE")
Буду признателен за любую помощь, так как Блендер не дает мне никакого представления, если что-то не так.
3 ответа
Вам нужно зарегистрировать класс.. добавить это в конец скрипта
bpy.utils.register_class(customToolshelfPanel)
и чтобы гарантировать, что скрипт будет удален после закрытия блендера, нужно также отменить его регистрацию
bpy.utils.unregister_class(customToolshelfPanel)
Вы также можете нажать T несколько раз, чтобы обновить интерфейс после запуска скрипта.
Я еще не работал с новым API 2.5 / 2.6 (к сожалению), но документация никогда не бывает плохой, чтобы посмотреть: http://www.blender.org/documentation/blender_python_api_2_57_release/bpy.types.Panel.html
Пример кода:
import bpy
class HelloWorldPanel(bpy.types.Panel):
bl_idname = "OBJECT_PT_hello_world"
bl_label = "Hello World"
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "object"
def draw(self, context):
self.layout.label(text="Hello World")
bpy.utils.register_class(HelloWorldPanel)
Вы пытались добавить эту строку в конец?
bpy.utils.register_class(customToolshelfPanel)
Создание класса - это одно, но вам также необходимо зарегистрировать его в пользовательском интерфейсе.
Вы определили класс, но никогда не создавали его. Если вы хотите, чтобы ваш скрипт что-то делал, вам нужно что-то сделать с этим классом. Тем не менее, не ясно, что это будет. Похоже, ваш класс ничего не делает; кажется, это какая-то "панель", которая будет добавлена к большему интерфейсу.
Вы должны изучить документацию, чтобы найти примеры того, что вы пытаетесь сделать. Предположительно, вам нужно будет создать не только одну панель.