以下のようなフラグをもったlineUpというコマンド名の球体を横に並べるMELコマンドを、コマンドプラグインによって作成してみます。
import sys
import maya.cmds
import maya.OpenMaya
import maya.OpenMayaMPx
kPluginCmdName = 'lineUp'
kRepeatFlag = '-n'
kRepeatLongFlag = '-number'
kRadFlag = '-rad'
kRadLongFlag = '-radius'
class LineUp(maya.OpenMayaMPx.MPxCommand):
def __init__(self):
maya.OpenMayaMPx.MPxCommand.__init__(self)
def doIt(self, args):
rep = 1
rad = 1.0
argData = maya.OpenMaya.MArgDatabase(self.syntax(), args)
if argData.isFlagSet(kRepeatFlag):
rep = argData.flagArgumentInt(kRepeatFlag, 0)
if argData.isFlagSet(kRadFlag):
rad = argData.flagArgumentDouble(kRadFlag, 0)
for i in range(rep):
maya.cmds.sphere()
maya.cmds.scale(rad, rad, rad)
maya.cmds.move(2*rad*i, 0, 0)
def creator():
return maya.OpenMayaMPx.asMPxPtr(LineUp())
def syntaxCreator():
syntax = maya.OpenMaya.MSyntax()
syntax.addFlag(kRepeatFlag, kRepeatLongFlag, maya.OpenMaya.MSyntax.kLong)
syntax.addFlag(kRadFlag, kRadLongFlag, maya.OpenMaya.MSyntax.kDouble)
return syntax
def initializePlugin(mObject):
mPlugin = maya.OpenMayaMPx.MFnPlugin(mObject)
try:
mPlugin.registerCommand(kPluginCmdName, creator, syntaxCreator)
except:
sys.stderr.write('Failed load plugin : %s' % kPluginCmdName)
raise
def uninitializePlugin(mObject):
mPlugin = maya.OpenMayaMPx.MFnPlugin(mObject)
try:
mPlugin.deregisterCommand(kPluginCmdName)
except:
sys.stderr.write('Failed unload plugin : %s' % kPluginCmdName)
raise