我需要根据当前选择的PYMEL基本查询并执行一些任务,例如:
from pymel.core import *
s = selected()
if (s.selType() == 'poly'):
#do something
if (s.selType() == 'surface'):
#do something
if (s.selType() == 'cv'):
#do something
if (s.selType() == 'vertex'):
#do something
if (s.selType() == 'face'):
#do something
if (s.selType() == 'edge'):
#do something
if (s.selType() == 'curve'):
#do something
我知道
selType()
不是真正的pymel函数,我也想利用pymels api命令,如果有意义的话,不要使用标准的mel命令。 最佳答案
PyMEL会将为您选择的列表转换为节点(与MEL不同,在MEL中,一切都是简单的数据类型。)至少对于ls
和相关命令(selected
只是ls(sl=True)
),这是正确的。
该列表中的所有内容都是PyNode
的子类,因此您可以依靠它们使用方法nodeType
。
从那里开始,很容易根据其类型来处理每个选择。
组件从pymel.core.Component
继承,每种组件类型都有一个类。例如MeshVertex
。
您可以使用isinstance(obj, type_sequence)
过滤掉组件:
filter(lambda x: isinstance(x, (pm.MeshVertex, pm.MeshEdge, pm.MeshFace)), pm.selected())
您可以在PyMEL文档的
general
部分下找到它们。关于python - 如何获取选定的对象类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15310302/