Вход/Регистрация
Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
вернуться

Larsson Thomas

Шрифт:

Оператор кнопки может быть вызван без аргументов, как на первой панели:

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

Блендер затем будет искать оператор со значением bl_idname, равным

hello.hello
, и установит его на панели. Текст на кнопке устанавливается по умолчанию в его bl_label, то есть,
Say Hello
. Класс
OBJECT_OT_HelloButton
имеет также заказное свойство строкового типа (custom property) с именем
country
(страна). Оно может быть использовано для передачи аргументов кнопке. Если оператор вызывается без аргумента, свойство
country
устанавливается по умолчанию в пустую строку.

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"

  • Читать дальше
  • 1
  • ...
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: