Чтение онлайн

на главную - закладки

Жанры

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

Larsson Thomas

Шрифт:

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

# с помощью вызова 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')

row = layout.row

row.alignment = 'RIGHT'

row.operator("my.button", text="8").row=3

row.operator("my.button", text="9", icon='SCENE').row=3

row.operator("my.button", text="10", icon='BRUSH_INFLATE').row=3

layout.label("Fourth row", icon='ACTION')

row = layout.row box = row.box

box.operator("my.button", text="11", emboss=False).loc="4 11"

box.operator("my.button", text="12", emboss=False).loc="4 12"

col = row.column subrow = col.row

subrow.operator("my.button", text="13").loc="4 13"

subrow.operator("my.button", text="14").loc="4 14"

subrow = col.row(align=True)

subrow.operator("my.button", text="15").loc="4 15"

subrow.operator("my.button", text="16").loc="4 16"

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

box.separator

box.operator("my.button", text="18")

box.operator("my.button", text="19")

layout.label("Fifth row")

row = layout.row split = row.split(percentage=0.25)

col = split.column

col.operator("my.button", text="21").loc="5 21"

col.operator("my.button", text="22")

split = split.split(percentage=0.3)

col = split.column

col.operator("my.button", text="23")

split = split.split(percentage=0.5)

col = split.column

col.operator("my.button", text="24")

col.operator("my.button", text="25")

#
Кнопка

class OBJECT_OT_Button(bpy.types.Operator):

bl_idname = "my.button"

bl_label = "Button" number = bpy.props.IntProperty

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

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9