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

Larsson Thomas

Шрифт:

В отличие от других скриптов в этой книге, многофайловый пакет не может быть выполнен из текстового редактора. Он должен быть скопирован в место, которое входит в путь поиска в Блендере, например,

addons
или
addons-contrib
, см. раздел аддоны Блендера. К счастью, вам не нужно перезагружать весь Блендер для перезагрузки файлов после каждой модификации. Нажатие F8 на клавиатуре перезагружает все активированные аддоны в Блендере.

Простой пример

Этот пакет разнесён на четыре файла. Три из них создают меши: куб, цилиндр и сферу, соответственно. Это файлы автономных скриптов, которые можно выполнять в окне текстового редактора для отладочных целей. Условие

(__name__ == "__main__")
истинно, если файл был запущен в автономном режиме.

mycube.py

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

# File mycube.py

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

import bpy

def makeMesh(z):

bpy.ops.mesh.primitive_cube_add(location=(0,0,z))

return bpy.context.object

if __name__ == "__main__":

ob = makeMesh(1)

print(ob, "created")

mycylinder.py

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

# File mycylinder.py

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

import bpy

def makeMesh(z):

bpy.ops.mesh.primitive_cylinder_add(location=(0,0,z))

return bpy.context.object

if __name__ == "__main__":

ob = makeMesh(5)

print(ob, "created")

mysphere.py

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

# File mysphere.py

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

import bpy

def makeMesh(z):

bpy.ops.mesh.primitive_ico_sphere_add(location=(0,0,z))

return bpy.context.object

if __name__ == "__main__":

ob = makeMesh(3)

print(ob, "created")

__init__.py

Четвертый файл содержит словарь

bl_info
и код регистрации, необходимый для аддона и пользовательского интерфейса. В нем также содержится следующий фрагмент кода для импорта других файлов пакета.

# Для поддержки правильной перезагрузки, пробуем обратиться

# к переменной пакета, если она есть, перезагрузить всё

if "bpy" in locals:

import imp imp.reload(mycube)

imp.reload(mysphere)

imp.reload(mycylinder)

print("Reloaded multifiles")

else:

from . import mycube, mysphere, mycylinder

print("Imported multifiles")

Этот код работает следующим образом.

• Если

__init__.py
запускается в первый раз, т.е. при запуске Блендера с включенным аддоном в вашем файле default.blend,
"bpy" in locals
возвращает Ложь. Другие файлы в пакете импортируются и в терминале выводится "Imported multifiles".

• Если

__init__.py
запускается в первый раз после запуска Блендера с выключенным аддоном в вашем файле default.blend, и вы нажали включение аддона,
"bpy" in locals
возвращает Ложь. Другие файлы в пакете импортируются и в терминале выводится "Imported multifiles".

• После того, как дополнения включены, в любое время вы нажимаете F8, чтобы перезагрузить аддоны,

"bpy" in locals
возвращает Истину. Другие файлы в пакете перезагружаются, а в терминал выводится "Reloaded multifiles".

  • Читать дальше
  • 1
  • ...
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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