Создание многофайлового аддона

При разработке сложных аддонов с большим количеством кода, хранить весь код в одном файле нецелесообразно. Когда в одном файле присутствуют несколько классов, наборов функций и данных, часто логически не связанных между собой, это затрудняет чтение, отладку, поиск нужных фрагментов кода, его повторное использование. Подобная компоновка кода считается очень плохим тоном программирования.

Blender на уровне Python поддерживает модульную систему компоновки кода, что позволяет разносить логические части аддона по отдельным файлам, после чего подключать их для использования там, где необходимо. Даже если вы ни разу не задумывались об использовании модулей, создавая скрипты или аддоны, вы с ними уже сталкивались — любой код, сохраненный в файл *.py, представляет из себя отдельный самостоятельный модуль. Просто ваш аддон состоял всего лишь из одного модуля. Сложные же аддоны могут состоять из нескольких десятков подключенных модулей.

Мультифайловый аддон
Мультифайловый аддон

Итак, модуль — это отдельный файл с расширением *.py, содержащий исполняемый код Python.

Для того, чтобы сформировать аддон из нескольких модулей, их объединяют в пакет. Пакет — это просто директория (папка), в которой собраны необходимые для работы аддона модули. Отличительным признаком пакета модулей является наличие в нем файла с именем __init__.py. Для того, чтобы такой аддон был правильно установлен в Blender, необходимо заархивировать в архив *.zip весь пакет (всю директорию целиком, а не только содержащиеся в ней файлы) и при установке аддона — Install from file — указать созданный архив.

 Рассмотрим пример создания простейшего многофайлового аддона:

  1. Создадим пакет:
    1. В любом удобном менеджере файлов создать директорию с нужным именем. Для примера — d:/Python/TestMultifile/
  2. Для написания кода удобнее использовать внешнюю IDE, но можно писать код и во встроенном редакторе Blender.
    1. Создать новый проект в PyCharm
    2. В качестве рабочей директории указать созданный пакет.
  3. Создадим первый модуль:
    1. Создать новый файл.
    2. Назвать его addCube.py

Важно помнить, что имена модулей (файлов) не должны в точности повторять имя пакета (директории), чтобы не было проблем с их дальнейшем подключением в аддоне.

Не заостряясь на содержании, возьмем простейший код оператора для добавления в сцену дефолтного куба, куда же без него ).