我正在编写一个脚本,可以在对象上找到三个和一个nGon并选择它们。但是当我将面部存储在列表中并尝试选择它们时,我得到了这个结果。
[U' pCube1.f [2]']
如何更改它才能使其成为
[pCube1.f [2]]
答案 0 :(得分:1)
大多数情况下,maya会将命令的结果作为字符串列表返回。它们是unicode字符串(u' xxx')但是没关系 - Maya可以接受那些与常规字符串互换的字符串:你可以放心地忽略字符串的Unicode-ness并且你不需要不遗余力地将自己的字符串转换为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' Maya代表'仅面对')。
需要注意的最重要的事情是返回None
的命令,在这些命令中您会看到一个空列表。如果您遇到NoneType is not iterable
之类的错误,可能是Maya返回None
而不是[]
的情况。您通常可以使用'或':
item = cmds.ls("your_name_here") or []
返回并清空列表。