选择列表中的Faces,maya python

时间:2015-09-06 21:26:02

标签: python maya

我正在编写一个脚本,可以在对象上找到三个和一个nGon并选择它们。但是当我将面部存储在列表中并尝试选择它们时,我得到了这个结果。

[U' pCube1.f [2]']

如何更改它才能使其成为

[pCube1.f [2]]

1 个答案:

答案 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 []

返回并清空列表。