我需要根据当前选择的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/

10-12 18:10