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。
我有一堆多边形组件 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。