選択されているオブジェクトのリストを得て、 リストの中から 1 つずつノードを取り出すためには、 以下のメソッドを使用します。
選択されているオブジェクトの移動Xアトリビュートをスクリプトエディタに表示するコマンドプラグインです。
import sys import maya.OpenMaya import maya.OpenMayaMPx kPluginCmdName = 'selectionList' class selectionList(maya.OpenMayaMPx.MPxCommand): def __init__(self): maya.OpenMayaMPx.MPxCommand.__init__(self) def doIt(self, args): dependNode = maya.OpenMaya.MObject() slist = maya.OpenMaya.MSelectionList() maya.OpenMaya.MGlobal.getActiveSelectionList(slist) iter = maya.OpenMaya.MItSelectionList(slist) while not iter.isDone(): iter.getDependNode(dependNode) fnDependNode = maya.OpenMaya.MFnDependencyNode(dependNode) txAttr = fnDependNode.attribute('translateX') txPlug = maya.OpenMaya.MPlug(dependNode, txAttr) tx = txPlug.asDouble() print ("tx " + str(tx)) iter.next() def creator(): return maya.OpenMayaMPx.asMPxPtr(selectionList()) def initializePlugin(mObject): mPlugin = maya.OpenMayaMPx.MFnPlugin(mObject) try: mPlugin.registerCommand(kPluginCmdName, creator) 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
selectionList クラスの doIt メソッドの部分だけを解説します。
dependNode = maya.OpenMaya.MObject()
slist = maya.OpenMaya.MSelectionList()
maya.OpenMaya.MGlobal.getActiveSelectionList(slist)
iter = maya.OpenMaya.MItSelectionList(slist)
while not iter.isDone():
iter.getDependNode(dependNode)
fnDependNode = maya.OpenMaya.MFnDependencyNode(dependNode)
txAttr = fnDependNode.attribute('translateX')
txPlug = maya.OpenMaya.MPlug(dependNode, txAttr)
tx = txPlug.asDouble()
print ("tx " + str(tx))
iter.next()