Создание свойств для аддона

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

Основное преимущество определения таких глобальных свойств аддона в том, что они не сбрасываются при перезапуске Blender. Пользователю не нужно каждый раз производить настройку аддона, достаточно один раз установить нужные параметры, персонализировав аддон для удобной работы.

Создадим простейший аддон и добавим ему глобальный параметр, поместив его в панель свойств аддона:

Для начала создадим простейший аддон, который по нажатию на кнопку в N-панели 3D-окна будет создавать дефолтный куб.

Код аддона:

Здесь мы создали аддон с именем “test” для Blender версии 2.8.

В нем мы определяем класс-оператор с именем “addCubeSample”, который вызывается по идентификатору “mesh.add_cube_sample”.

В методе  “execute” класса-оператора мы просто вызываем системный оператор “mesh.primitive_cube_add”, который и создает дефолтный куб.

Так же мы определили панель с именем “TEST” в окне 3D Viewport и разместили на ней кнопку вызова нашего оператора “mesh.add_cube_sample”, создав класс “addCubeSamplePanel” для панели UI.

В функциях register и unregister мы управляем подключением аддона в Blender API.

Можно установить получившийся аддон и проверить его работу – по нажатию на кнопку “Add Cube” в сцену будет добавлен дефолтный куб.

Для того, чтобы добавить в аддон глобальные параметры, нужно создать новый класс, наследовав его от bpy.types.AddonPreferences:

Весь наш аддон размещается в одном файле (модуле), поэтому в качестве идентификатора bl_idname указывается имя текущего модуля аддона “__name__”.

Если вы создаете параметры для многофайлового аддона, вместо имени модуля нужно указывать имя пакета аддона:

Для примера определим параметр, который будет влиять на общий ход работы аддона – при активации его пользователем на созданный куб будет автоматически накладываться модификатор Bevel.

Для этого внутри класса-свойства опишем сам параметр. Параметры создаются точно так же, как и для классов-операторов, используя типы, описанные в bpy.props: StringProperty, IntProperty, BoolProperty и т.д.

Для наглядности сделаем переключатель вида “RadioButton” с двумя вариантами выбора: “Add Bevel” – добавлять модификатор на создаваемый куб, и “No Bevel” – не добавлять.

Имя параметра “add_bevel”, предустановленное значение – модификатор не добавляется.

Для того, чтобы отобразить параметр в панели свойств аддона, нужно переопределить функцию “draw” на отрисовку созданного параметра. Отрисовка пользовательского интерфейса для панели свойств аддона производится точно так же, как и для обычных панелей.

Здесь мы добавили текстовое поле “label” с описанием параметра и вывели сам параметр “add_bevel” в виде переключателя.

Класс панели свойств аддона так же нужно зарегистрировать в функции “register” и разрегистрировать в функции “unregister”.

Для того, чтобы в классе-операторе получить текущее значение параметра из панели свойств аддона, нужно обратиться к нему, указав имя аддона и имя параметра. Следующий код вернет текущее значение свойства “add_bevel” нашего аддона.

Добавим дополнительное условие для создания модификатора при нужном значении параметра “add_bevel” в классе-операторе “addCubeSample:

Окончательный код аддона теперь имеет следующий вид:

После его установки в окне “Preferences” под панелью аддона появится дополнительная панель с его свойствами.

Если пользователь установит значение переключателя в “Add Bevel” и сохранит настройки, нажав на кнопку “Save Preferences”, дефолтный куб, созданный при помощи нашего аддона по умолчанию будет создаваться с модификатором “Bevel”.

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии