Скрипт 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)

Создание класса - это одно, но вам также необходимо зарегистрировать его в пользовательском интерфейсе.

Вы определили класс, но никогда не создавали его. Если вы хотите, чтобы ваш скрипт что-то делал, вам нужно что-то сделать с этим классом. Тем не менее, не ясно, что это будет. Похоже, ваш класс ничего не делает; кажется, это какая-то "панель", которая будет добавлена ​​к большему интерфейсу.

Вы должны изучить документацию, чтобы найти примеры того, что вы пытаетесь сделать. Предположительно, вам нужно будет создать не только одну панель.

Другие вопросы по тегам