大多数时候,maya 将命令的结果作为字符串列表返回。它们是 unicode 字符串 (u'xxx') 但没关系 - Maya 可以与常规字符串互换接受这些字符串:您可以放心地忽略字符串的 Unicode 特性,并且无需费心制作自己的字符串成 Unicode。 Maya 将交替处理 ['xxx'] 和 [u'xxx']。
选择面孔支持几种形式:
#lists
my_faces = ['pCube1.f[1]', 'pCube1.f[2]']
cmds.select(my_faces)
# tuples
more_faces = ('pCube1.f[3]', 'pCube1.f[4]')
cmds.select(more_faces, add=True)
# direct selection:
cmds.select('pCube1.f[5]', 'pCube1.f[6]')
要获取对象中的所有面,您可以使用快捷方式
cmds.select('pCube1.f[*]')
或一个范围:
cmds.select('pCube1.f[2:4]')
Maya 有时也会返回压缩名称,例如 pCube1.f[2:4]。您可以使用 filterExpand 命令将它们拆分为单独的项目:
print cmds.filterExpand('pCube1.f[1:5]', sm=34)
# [u'pCube1.f[1]', u'pCube1.f[2]', u'pCube1.f[3]', u'pCube1.f[4]', u'pCube1.f[5]']
('sm = 34' 是玛雅语中的“仅限面孔”)。
需要注意的最重要的事情是返回 None 的命令,您会在其中看到一个空列表。如果您遇到像 NoneType is not iterable 这样的错误,可能是 Maya 返回 None 而不是 []。您通常可以通过使用“或”来摆脱这种情况:
item = cmds.ls("your_name_here") or []
返回并清空列表。