Maya 搭建PyCharm 插件开发环境

在新版本的maya安装目录是包含了Pymel库,路径:D:\Autodesk\Maya2019\Python\Lib\site-packages,在配置Pycharm的第三方lib的时候可以直接添加这个路径。

1.在Pycharm编辑器添加扩展工具,QtDenginer 和 生成Qtpy的pySide2_uic

Maya 搭建PyCharm 插件开发环境

 

1.1Qt Designers的配置

Name:QtDesiginer

Program:  D:\Autodesk\Maya2019\bin\designer.exe

Arguments:$FileDir$\$FileName$

Wording directory:$ProjectFileDir$

1.2 PyUIC的配置

pyuic是Qt提供的一个吧.ui的界面文件,转成python的文件。

Name:PyUIC

Program:  “C:\Program Files\Autodesk\Maya2019\bin\mayapy.exe”

Arguments:"C:\Program Files\Autodesk\Maya2019\bin\pyside2-uic" -o $FileDir$\$FileNameWithoutExtension$.py $FileDir$\$FileName$

Wording directory:$ProjectFileDir$

这里由于是Maya2019,通过mayapy来启动一个pyside2-uic 这个DLL文件来执行命令,如果有pyside2-uic.exe 就把执行程序换成pyside2-uic.exe

-o 后面接输出文件名字 

$FileName$ 选择的源文件名字

 

ps:如果路径有空格,使用引号括起来

2.编辑一个界面

Maya 搭建PyCharm 插件开发环境

 

然后使用PyUIC对保存的cone.ui进行处理生成cone.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'cone.ui'
#
# Created: Mon Jul 22 12:21:47 2019
#      by: pyside2-uic  running on PySide2 2.0.0~alpha0
#
# WARNING! All changes made in this file will be lost!

from PySide2 import QtCore, QtGui, QtWidgets

class Ui_ar_conePtrWindow(object):
    def setupUi(self, ar_conePtrWindow):
        ar_conePtrWindow.setObjectName("ar_conePtrWindow")
        ar_conePtrWindow.resize(376, 188)
        self.label = QtWidgets.QLabel(ar_conePtrWindow)
        self.label.setGeometry(QtCore.QRect(30, 30, 111, 41))
        font = QtGui.QFont()
        font.setPointSize(15)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.inputRotation = QtWidgets.QLineEdit(ar_conePtrWindow)
        self.inputRotation.setGeometry(QtCore.QRect(140, 40, 113, 20))
        self.inputRotation.setObjectName("inputRotation")
        self.pushButton = QtWidgets.QPushButton(ar_conePtrWindow)
        self.pushButton.setGeometry(QtCore.QRect(140, 130, 75, 23))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(ar_conePtrWindow)
        QtCore.QMetaObject.connectSlotsByName(ar_conePtrWindow)

    def retranslateUi(self, ar_conePtrWindow):
        ar_conePtrWindow.setWindowTitle(QtWidgets.QApplication.translate("ar_conePtrWindow", "Form", None, -1))
        self.label.setText(QtWidgets.QApplication.translate("ar_conePtrWindow", "Y-Rotation", None, -1))
        self.pushButton.setText(QtWidgets.QApplication.translate("ar_conePtrWindow", "Create Cone", None, -1))
        

这就是生成的cone.py。相当于工具自动把界面代码生成出来了,然后只需要引入调用即可。

3.代码控制界面

#-*- coding: UTF-8 -*-
import sys
from PySide2.QtWidgets import *
import os
sys.path.append(os.path.expanduser('~/maya/scripts'))
import Cone
reload(Cone)

class AR_QtConePtrWindow(QWidget):
    def __init__(self):
        super(AR_QtConePtrWindow, self).__init__()
        self.ui = Cone.Ui_ar_conePtrWindow()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.onCreateCone)

    def onCreateCone(self):
        rotaVale = self.ui.inputRotation.text()
        print("Rota Value:%f" % rotaVale)

if __name__ == "__main__":
    # app = QApplication(sys.argv)

    window = AR_QtConePtrWindow()
    window.show()

    # sys.exit(app.exec_())

 

Qt界面的内容,可以Google查PySide2找到类的说明,如果是信号,在Python 就可以通过connect来连接一个函数,如上面的clicked就是一个信号。如果是虚函数,可以在这里直接重写。

如果Py带中文内容,加上#-*- coding: UTF-8 -*-

 

代码拷贝到插件目录,也就是Documents下面的Maya目录:C:\Users\Dell\Documents\maya\scripts

然后在MAYA命令窗口执行窗口那个文件的代码:

Maya 搭建PyCharm 插件开发环境

 

reload 很关键,自己写的代码都要用这个,否则修改的内容不能再当前状态下生效,只能退出Maya编辑器再打开来重新加载。有了reload执行重新打开下我们开发的工具界面就又重新加载了