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

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

Жанры

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

Larsson Thomas

Шрифт:

from bpy.props import *

#

# Оператор сообщения об ошибке. При вызове, всплывает

# диалоговое окно с переданным сообщением.

#

class MessageOperator(bpy.types.Operator):

bl_idname = "error.message"

bl_label = "Message"

type = StringProperty

message = StringProperty

def execute(self, context):

self.report({'INFO'}, self.message)

print(self.message)

return {'FINISHED'}

def invoke(self, context, event):

wm = context.window_manager

return wm.invoke_popup(self, width=400, height=200)

def draw(self, context):

self.layout.label("A message has arrived")

row = self.layout.split(0.25)

row.prop(self, "type")

row.prop(self, "message")

row = self.layout.split(0.80)

row.label("") row.operator("error.ok")

#

#
Кнопка ОК в диалоге ошибки

#

class OkOperator(bpy.types.Operator):

bl_idname = "error.ok"

bl_label = "OK"

def execute(self, context):

return {'FINISHED'}

#

# Открывает диалог выбора файла и начинает сканирование выбранного файла.

#

class ScanFileOperator(bpy.types.Operator):

bl_idname = "error.scan_file"

bl_label = "Scan file for return"

filepath = bpy.props.StringProperty(subtype="FILE_PATH")

def execute(self, context):

scanFile(self.filepath)

return {'FINISHED'}

def invoke(self, context, event):

context.window_manager.fileselect_add(self)

return {'RUNNING_MODAL'}

#

# Сканирование файлов. Если строка содержит слово "return",

# вызывается диалоговое окно ошибки и производится выход.

# Если достигнут конец файла, отображается другое сообщение.

#

def scanFile(filepath):

fp = open(filepath, "rU")

n = 1

for line in fp:

words = line.split

if "return" in words:

bpy.ops.error.message('INVOKE_DEFAULT',

type = "Error",

message = 'Found "return" on line %d' % n)

return

n += 1

fp.close

bpy.ops.error.message('INVOKE_DEFAULT',

 type = "Message",

 message = "No errors found in %d lines" % n)

return

#
Регистрация классов и автоматический запуск сканирования

bpy.utils.register_class(OkOperator)

bpy.utils.register_class(MessageOperator)

bpy.utils.register_class(ScanFileOperator)

bpy.ops.error.scan_file('INVOKE_DEFAULT')

Аддоны Блендера

До сих пор мы рассматривали только автономные скрипты, которые выполняются из окна текстового редактора. Для конечных пользователей более удобно, если скрипт — это аддон (add-on, надстройка) Блендера, который может быть включен в окне Пользовательских настроек. Также можно автоматически загружать скрипт каждый раз при запуске Блендера

Для того, чтобы скрипт был аддоном, он должен быть написан по-особому. Там должна быть структура

bl_info
в начале файла, а также в конце должны быть определены функции
register
(регистрации) и
unregister
(отмены регистрации). Кроме того, скрипт должен быть размещен в месте, в котором Блендер ищет аддоны при запуске. Оно включает в себя каталоги
addons
и
addons-contrib
, которые расположены в подкаталоге
2.57/scripts
каталога, в котором находится Блендер.

Прикрепление ключей формы

Этот скрипт может быть выполнен, как обычно, из окна текстового редактора. Тем не менее, он также может быть доступен как аддон Блендера. Информация аддона указывается в словаре

bl_info
в начале файла.

bl_info = {

'name': 'Shapekey pinning',

'author': 'Thomas Larsson',

'version': (0, 1, 2),

'blender': (2, 5, 7),

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

Как я строил магическую империю 4

Зубов Константин
4. Как я строил магическую империю
Фантастика:
боевая фантастика
постапокалипсис
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 4

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Попаданка 3

Ахминеева Нина
3. Двойная звезда
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Попаданка 3

Муж на сдачу

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Муж на сдачу

Призыватель нулевого ранга. Том 3

Дубов Дмитрий
3. Эпоха Гардара
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Призыватель нулевого ранга. Том 3

На границе империй. Том 10. Часть 5

INDIGO
23. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 5

Адвокат

Константинов Андрей Дмитриевич
1. Бандитский Петербург
Детективы:
боевики
8.00
рейтинг книги
Адвокат

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Чужбина

Седой Василий
2. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужбина

Бестужев. Служба Государевой Безопасности. Книга четвертая

Измайлов Сергей
4. Граф Бестужев
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга четвертая

Локки 5. Потомок бога

Решетов Евгений Валерьевич
5. Локки
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Локки 5. Потомок бога

На границе империй. Том 10. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 4