其实我是api的新手,我正在尝试获取翻译值(x,y,z),但问题是当我只指定“translate”而不是“translateX”,“translateY”,“ translateZ“在每个单独的行中。有没有办法得到我真正想要的东西?
这是代码:
import maya.OpenMaya as om
selected = om.MSelectionList()
om.MGlobal.getActiveSelectionList(selected)
obj = om.MObject()
selected.getDependNode(0,obj)
print(om.MFnDependencyNode(obj).findPlug("translateX").asFloat())
print(om.MFnDependencyNode(obj).findPlug("translateY").asFloat())
print(om.MFnDependencyNode(obj).findPlug("translateZ").asFloat())
谢谢......
答案 0 :(得分:1)
translate属性是复合属性。在Maya API中,您必须单独查询复合属性的每个子属性,以便检索复合属性的完整值。
但MEL getAttr()命令可以一次性检索translate属性的值。由于您使用的是Python,因此可以在同一脚本中将MEL命令和调用混合到Maya API中:
import maya.OpenMaya as om
import maya.cmds as cmds
selected = om.MSelectionList()
om.MGlobal.getActiveSelectionList(selected)
obj = om.MObject()
selected.getDependNode(0,obj)
depNodeName = om.MFnDependencyNode(obj).name()
print(cmds.getAttr(depNodeName + '.translate')[0])