-观看Python For Maya Artist Friendly Programming
#from maya import cmds
import maya.cmds as cmds
#变量selection为选择的物体。
selection = cmds.ls(selection=True)
#如果没有选择,则变量selection显示DAG物体的完整路径名。
if len(selection) == 0:
selection = cmds.ls(dag=True, long=True)
#selection列表进行由长到短排序
selection.sort(key=len, reverse=True)
#用for循环一行行列出所选的列表中的内容(Unicode 字符串)
#然后把字符串通过split函数进行拆分,然后索引取最后一位。
for obj in selection:
shortName = obj.split('|')[-1]
#因为maya模型是由shape节点和Transform节点组成
#选择模型时,只选中的是Transform节点,子项中的shape节点没选中,这里就涉及到了子项的选择。
#通过listRelatives命令得到变量obj中带完整路径的子项。
#maya中骨骼和组是没有子项的,会返回None。所以后面有加了个空[]列表,获取空。
children = cmds.listRelatives(obj,children=True, fullPath=True) or []
#如果子项有内容,则得到子类的类型。如果没有则得到变量obj的类型
#因为obj是列出了所有大纲中的内容,所以不会漏掉。
#注意这里,children是列表,child为Unicode字符串。具体不清楚为啥要有转换?
#这里有个bug,如果组里面有(joint)其它东西,则不能正确显示组的类型。
if len(children) == 1:
child = children[0