Maya Python - 如何查询选择以检查是否只有 polyVerts 或不同?

Maya Python - How do I query the selection to check if only polyVerts or different?

我有一堆多边形组件 selected。但有时用户可能会 select 其他东西(关节,另一个网格等)。我试图找到一种方法来测试所有 selected 以验证它确实是一个顶点。但是我找不到这样的东西。

是否有 python 命令可以直接执行此操作?

不完全是。您可以使用 cmds.ls(hl=True) 找到准备好选择组件的对象。您可以找到不是 cmds.ls(o=True) 组件的选定对象。这意味着您可以像这样间接隔离组件选择:

 set (cmds.ls(sl=True, o=False)) - set(cmds.ls(sl=True, o=True))

这是一组整个选择,然后是只有对象的一组,最后从第一个中减去第二个,只留下组件选择(请注意,如果有的话,也会通过属性选择)。

使用 filterExpand 并将 selectionMask 标志设置为 31 到 return 只是多边形顶点组件可能对您的用例有用已被选中。

以下是一个简单示例(带有一些注释): 选择不同类型的对象和组件进行尝试。

import maya.cmds as cmds

# Will return EVERYTHING selected
all_selected = cmds.ls(sl=True)

# Will filter out and return just the verts
# from everything selected
just_the_selected_verts = cmds.filterExpand(sm=31)

查看 docs here 中的 filterExpand。