Создание и отладка скрипта. Вызов в Maya

import NAME as NICKNAME
reload(NICKNAME)
NICKNAME.main()

Конструкция специально для ситуации когда вы работаете со скриптом и постоянно его изменяете (создание, отладка и т.д).

Все это в Script Editor на вкладке Python. Потом перетягиваем средней кнопкой на Shelf — создаем кнопку для запуска этого скрипта.

Примерно так. Где NAME — имя скрипта в папке, а NICKNAME — псевдоним. релоад — как понятно из названия, это перезагрузка скрипа (после обновдения наеример.

Процедура main() — опциональная, у меня такой вызов, у вас может быть другой.

Python. Custom UI in 3ds Max

Тут все проще чем в Maya. Причем работало и без import pysideuic

import pysideuic
from PySide import QtCore, QtGui

fname = "scripts/python/example.ui"

formt, btype = MaxPlus.LoadUiType(fname)
class TestWidget(btype, formt):
def __init__(self, parent=None):
btype.__init__(self)
formt.__init__(self)
self.setupUi(self)

form = TestWidget()
form.show()

Ссылки:

https://help.autodesk.com/view/3DSMAX/2017/ENU/?guid=__developer_using_pyside_html
https://help.autodesk.com/view/3DSMAX/2017/ENU/?guid=__py_ref_demo_py_side_loader_8py_example_html
http://help.autodesk.com/view/3DSMAX/2017/ENU/?guid=__py_ref_namespace_max_plus_extend_html
http://help.autodesk.com/view/3DSMAX/2017/ENU/?guid=__developer_what_s_new_in_3ds_max_python_api_what_s_new_in_the_3ds_max_2017_p_html

Python. Custom UI in Maya

Возникла идея сделать PolygonTools для Maya.

Решил делать на Python.

Самая первая проблема и задача загрузить интерфейс из ui-файла. Делал я его в QtDesigner, кстати.

Сложно найти простой и понятный не для программиста фрагмент кода, который бы это делал. Но в результате решение было найдено. Все оказалось очень просто — по этому делюсь этим с не программистами)


import maya._OpenMayaUI as omui
import maya.cmds as cmd
import sys

from PySide2 import QtCore, QtGui, QtWidgets, QtUiTools

from shiboken2 import wrapInstance

#obtain the Maya main window widget as a PySide2 widget
mayawin = omui.MQtUtil_mainWindow()
ptwidget = wrapInstance(long(mayawin), QtWidgets.QWidget)

#file with UI
ptguifile = 'd:/polygon_tools_gui.ui'

#Widget with GUI
ptui = QtUiTools.QUiLoader().load(ptguifile, parrent=ptwidget)

#Show widget
ptui.show()

Имена файлов и переменных на ваше усмотрeние. Импорты там могут тоже быть лишние, для дальнейшей работы они будут нужны.

Успехов!