Читаем Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода полностью

bl_idname должно быть строкой, содержащей маленькие буквы, цифры и подчеркивания, плюс ровно одна точка; hello.hello удовлетворяет этим критериям. За исключением этого, по-видимому, у bl_idname нет никаких ограничений.

Вид и поведение кнопки по-умолчанию могут быть модифицированы. Давайте вызовем кнопку следующим образом:

self.layout.operator("hello.hello", text='Hej').country = "Sweden"

Текст на этой кнопке - Hej, и значение свойства country является "Sweden" (Швеция). Когда мы нажимаем эту кнопку, Блендер выводит в окне терминала.следующее:

Hello world from Sweden!

В конце файла всё регистрируется с помощью вызова

bpy.utils.register_module(__name__)

Наш вновь определенный оператор кнопки можно теперь использовать как любой другой оператор Блендера. Вот сеанс в консоли Питона Блендера:

>>> bpy.ops.hello.hello(country = "USA")

Hello world from USA!

{'FINISHED'}

Другой путь вызвать наш новый оператор — нажать Пробел. Появится селектор со всеми доступными операторами в позиции курсора мыши. Сократите выбор, набрав подстроку bl_label нашего оператора в поле редактирования. Оператор с параметрами по-умолчанию выполнится, и Hello world! будет выведено в окне терминала.




#----------------------------------------------------------

# File hello.py

#----------------------------------------------------------

import bpy


#

# Меню в районе tools

#

class ToolsPanel(bpy.types.Panel):

    bl_label = "Hello from Tools"

    bl_space_type = "VIEW_3D"

    bl_region_type = "TOOLS" 


    def draw(self, context):

        self.layout.operator("hello.hello")


#

# Меню в районе toolprops

#

class ToolPropsPanel(bpy.types.Panel):

    bl_label = "Hello from Tool props"

    bl_space_type = "VIEW_3D"

    bl_region_type = "TOOL_PROPS" 


    def draw(self, context):

    self.layout.operator("hello.hello", text='Hej').country = "Sweden"


#

# Меню в районе UI

#

class UIPanel(bpy.types.Panel):

    bl_label = "Hello from UI panel"

    bl_space_type = "VIEW_3D"

    bl_region_type = "UI" 


    def draw(self, context):

        self.layout.operator("hello.hello", text='Servus')  


#

# Меню в районе окна Properties, контекст объектов

#

class ObjectPanel(bpy.types.Panel):

    bl_label = "Hello from Object context"

    bl_space_type = "PROPERTIES"

    bl_region_type = "WINDOW" bl_context = "object" 


    def draw(self, context):

self.layout.operator("hello.hello", text='Bonjour').country = "France"  


#

# Меню в районе окна Properties, контекст материалов

#

class MaterialPanel(bpy.types.Panel):

    bl_label = "Hello from Material context"

    bl_space_type = "PROPERTIES"

    bl_region_type = "WINDOW" bl_context = "material" 


    def draw(self, context):

    self.layout.operator("hello.hello", text='Ciao').country = "Italy"  


#

# Кнопка Hello выводит сообщение в консоли

#

class OBJECT_OT_HelloButton(bpy.types.Operator):

    bl_idname = "hello.hello"

    bl_label = "Say Hello"

    country = bpy.props.StringProperty()  


    def execute(self, context):

        if self.country == '':

            print("Hello world!")

        else:

            print("Hello world from %s!" % self.country)

        return{'FINISHED'}  


#

# Регистрация

# Все панели и операторы должны быть зарегистрированы в Блендере; в противном

Перейти на страницу:

Похожие книги