Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Шрифт:
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),
Поделиться:
Популярные книги
Идеальный мир для Лекаря 21
21. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Книга пяти колец. Том 4
4. Книга пяти колец
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Не отпускаю
Любовные романы:
современные любовные романы
эро литература
8.44
рейтинг книги
Брак по-драконьи
Фантастика:
фэнтези
8.60
рейтинг книги
Князь
3. Варяг
Фантастика:
альтернативная история
9.15
рейтинг книги
Столичный доктор
1. Столичный доктор
Фантастика:
попаданцы
альтернативная история
8.00
рейтинг книги
Камень. Книга 4
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Темный Охотник 2
2. Темный охотник
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Измена. Не прощу
1. Измены
Любовные романы:
современные любовные романы
4.00
рейтинг книги
Перерождение
9. Real-Rpg
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Право налево
Любовные романы:
современные любовные романы
8.38
рейтинг книги
Истребители. Трилогия
Фантастика:
альтернативная история
7.30
рейтинг книги
Барон меняет правила
2. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мастер 7
7. Мастер
Фантастика:
фэнтези
боевая фантастика
попаданцы
технофэнтези
аниме
5.00