【发布时间】:2018-07-04 02:25:37
【问题描述】:
感谢您抽出时间阅读本文!所以,我的第一个问题是我正在尝试创建一个函数“selectionData()”,以获取对象的平移、旋转和缩放值,然后将它们作为字典返回,但发现自己有点挣扎。使用下面列出的代码,我得到的只是对象的名称。如何修改它以使其平移、旋转和缩放值作为字典返回?
我的第二个问题是我正在尝试创建一个函数“setData(data)”,该函数将上述使用 selectionData() 构建的字典作为输入,并将字典中的数据恢复到所选对象。我该怎么做?
如果这些问题中的任何一个问题很愚蠢,我深表歉意,但无论如何,感谢您的宝贵时间!干杯!
当前代码如下:
from maya import cmds
sel = cmds.ls(sl = 1)
meshes =[]
for s in sel :
shape = cmds.listRelatives(s , shapes = 1 )
if shape :
if cmds.nodeType(shape[0]) == "mesh" :
meshes.append(s )
meshData = {}
for m in meshes :
pos = cmds.xform ( m , q =1 , ws = 1 , t = 1)
rot = cmds.xform( m , q =1 , ws = 1 , rotation = 1 )
scl = cmds.getAttr ( m + '.s' )[0]
currentDict = {
"pos" : pos ,
"rot" : rot ,
"scl" : scl ,
}
meshData[m] = currentDict
def selectionData( selectionDict):
for k in selectionDict :
print k
selectionData(meshData)
【问题讨论】:
-
最后一个打印语句出现错误。应该是
print(selectionDict[k])吗? -
嵌套字典是故意的吗?在您的示例中应该像这样使用 selectionDict : for k in selectionDict.keys() : ///// print( selectionDict[k]['pos'] ) #### 其中 k 将是网格名称
-
哎呀,感谢您的保存!您可能还知道如何将平移、旋转和缩放值作为字典返回吗?
标签: python dictionary scripting maya