Python Maya 检查选定项

0 投票
1 回答
2815 浏览
提问于 2025-04-18 01:12

我想知道怎么检查变量'curSel'中的选中项,看看它们是不是“顶点”。我在想应该用一个if/then语句。这样我就可以避免出现更多的错误。

我在猜,我可以先检查列表中的第一个项是不是顶点。如果是顶点,那就继续,如果不是,那就不做任何事情。可是我该怎么写这个呢?

import maya.cmds as cmds

# collect the selected verts
curSel = cmds.ls(sl=1, fl=1)

有效的代码:为每个选中的顶点创建定位器

import maya.cmds as cmds

selectedVerts = [v for v in cmds.ls(sl=True, fl=True) if '.vtx' in v]

print selectedVerts

for v in selectedVerts:
    pos = cmds.xform( v, query=True, translation=True, worldSpace=True )
    cmds.spaceLocator( p=(pos) )

1 个回答

1

你可以用filteExpand命令来代替ls,这样可以更方便地获取信息。FilterExpand这个命令如果不带任何参数,默认会作用于当前选中的内容,而selectionMask选项则可以让你限制只针对特定类型的组件进行操作。所以

cmds.filterExpand(sm=31)

这个命令只会返回你选中的顶点,其他的都不会返回。如果没有选中任何顶点,它会返回None,也就是啥都没有。

另外一种方法是检查选中的内容中是否包含字符串'.vtx',这个字符串就是你从选中的顶点中得到的。

selected_verts = [v for v in cmds.ls(sl=True, fl=True) if '.vtx' in v]

撰写回答