![]() |
|
Твій плагін складається з 5 ключових частин:
Tools_Manager_Installer.py – автоінсталятор через .mod
userSetup.py – автозапуск при старті Maya
main_menu.py – ядро (створення меню з XML)
autopath.py – робота з шляхами
menu_items.xml – опис структури меню
p4.py – клієнт Perforce (окремий модуль, не пов'язаний із меню напряму)
📄 Tools_Manager_Installer.py
Що робить:
Створює .mod файл у:
Documents/maya/modules/
Додає:
PYTHONPATH +:= .
MAYA_SCRIPT_PATH +:= .
Після встановлення:
додає tools_root в sys.path
імпортує main_menu
одразу запускає main_menu.main()
Це правильний сучасний спосіб встановлення через module system Maya.
✔ Добре зроблено
✔ Працює без ручного копіювання
✔ Підтримує автостарт
📄 userSetup.py
import main_menu
importlib.reload(main_menu)
main_menu.main()
Це гарантує автозапуск меню при старті Maya, якщо tools_root у MAYA_SCRIPT_PATH.
✔ Простий
✔ Надійний
✔ Обгорнутий у try/except
📄
Функції:
getpath() → повертає папку tools
getsyspath() → повертає Maya/icons (для splash)
Це використовується в:
change_splash_screen(...)
Все логічно.
Це найсильніша частина плагіна.
Читає menu_items.xml
Підтримує:
Реалізовано:
{TOOLS} замінуЦе дуже професійний рівень.
Підтримує:
exec(open(...).read())
bare path .py
bare path .mel
чистий Python-код
mel.eval()
І головне — без проблем із кодуванням (utf-8, cp1251 fallback).
Це дуже круто.
Ти правильно використовуєш:
cmds.menuItem(optionBox=True)
Maya-style help кнопка справа.
change_splash_screen()
Копіює файл у Maya/icons.
Працює, але є нюанс (про це нижче).
Меню повністю декларативне.
Це дуже правильний підхід.
Ти можеш: