選択されているオブジェクトのリストを得て、 リストの中から 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()