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

Larsson Thomas

Шрифт:

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'}

#

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

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

# случае они не появятся. Самый простой путь зарегистрировать всё в файле -

# с помощью вызова bpy.utils.register_module(__name__).

#

bpy.utils.register_module(__name__)

Планировка панели и несколько аргументов

Эта программа иллюстрирует, как организовать размещение объектов на панели. Когда скрипт выполнится, будет создана панель в области tool props, с кнопками, расположенными нетривиальным способом.

Сценарий также показывает один метод отсылания нескольких аргументов оператору. Класс OBJECT_OT_Button имеет два свойства, number (номер) и row (строка) и печатает величины этих свойств в окне терминала. Будучи целочисленными свойствами, они оба возвращают 0 по-умолчанию, если не заданы. Таким образом, если мы нажимаем кнопки 7, 8 и 23, скрипт выведет

Row 0 button 7

Row 3 button 0

Row 0 button 0

Но что, если мы хотим задать свойства как number, так и row, то есть вызвать оператор с двумя аргументами? Это нельзя сделать непосредственно, но мы можем создать третье свойство loc, которое является строкой, и которое анализируется оператором, если не нуль. Если мы нажимаем кнопку 13, скрипт выведет

Row 4 button 13

Этот метод можно также использовать, чтобы посылать более сложные структуры данных оператору. Кроме того, мы можем использовать глобальные переменные с этой целью, смотрите подраздел A popup dialog

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

# File layout.py

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

import bpy 

# Планировка панели

class LayoutPanel(bpy.types.Panel):

bl_label = "Panel with funny layout"

bl_space_type = "VIEW_3D"

bl_region_type = "TOOL_PROPS"

def draw(self, context):

layout = self.layout

layout.label("First row")

row = layout.row(align=True)

row.alignment = 'EXPAND'

row.operator("my.button", text="1").number=1

row.operator("my.button", text="2", icon='MESH_DATA').number=2

row.operator("my.button", icon='LAMP_DATA').number=3

row = layout.row(align=False)

row.alignment = 'LEFT'

row.operator("my.button", text="4").number=4

row.operator("my.button", text="", icon='MATERIAL').number=5

row.operator("my.button", text="6", icon='BLENDER').number=6

row.operator("my.button", text="7", icon='WORLD').number=7

layout.label("Third row", icon='TEXT')

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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