簡単なPySideプログラム
# -*- coding: utf-8 -*- import maya.cmds as cmds import maya.mel as mel from PySide.QtCore import * from PySide.QtGui import * from shiboken import wrapInstance from maya import OpenMayaUI as omui from maya.app.general.mayaMixin import MayaQWidgetBaseMixin from pprint import pprint import maya.OpenMaya as OpenMaya import maya.OpenMayaMPx as OpenMayaMPx mayaMainWindowPtr = omui.MQtUtil.mainWindow() mayaMainWindow = wrapInstance(long(mayaMainWindowPtr), QWidget) class CreatePolygonUI(QWidget): def __init__(self, *args, **kwargs): super(CreatePolygonUI, self).__init__(*args, **kwargs) #Parent widget under Maya main window self.setParent(mayaMainWindow) self.setWindowFlags(Qt.Window) #Set the object name self.setObjectName('CreatePolygonUI_uniqueId') self.setWindowTitle('Create polygon') self.setGeometry(50, 50, 250, 150) self.initUI() self.cmd = 'polyCone' def initUI(self): #Create combo box (drop-down menu) and add menu items self.combo = QComboBox(self) self.combo.addItem( 'Cone' ) self.combo.addItem( 'Cube' ) self.combo.addItem( 'Sphere' ) self.combo.addItem( 'Torus' ) self.combo.setCurrentIndex(0) self.combo.move(20, 20) self.combo.activated[str].connect(self.combo_onActivated) #Create 'Create' button self.button = QPushButton('Create', self) self.button.move(20, 50) self.button.clicked.connect(self.button_onClicked) #Change commmand string when combo box changes def combo_onActivated(self, text): self.cmd = 'poly' + text + '()' #Execute MEL command when button is clicked def button_onClicked(self): mel.eval( self.cmd ) class HelloWorld(OpenMayaMPx.MPxCommand): def __init__(self): OpenMayaMPx.MPxCommand.__init__(self) def doIt(self, argList): ui = CreatePolygonUI() ui.show() return def creator(): return OpenMayaMPx.asMPxPtr( HelloWorld() ) def initializePlugin(obj): plugin = OpenMayaMPx.MFnPlugin(obj, 'plugin', '1.0', 'Any') try: plugin.registerCommand('helloWorld', creator) except: raise RuntimeError def uninitializePlugin(obj): plugin = OpenMayaMPx.MFnPlugin(obj) try: plugin.deregisterCommand('helloWorld') except: raise RuntimeError
プラグインとしてロードして、MELスクリプトからhelloWorldで呼び出すと、ダイアログが表示されプリミティブを作れます。