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ние. Импорты там могут тоже быть лишние, для дальнейшей работы они будут нужны.

Успехов!