1

有没有办法从 Pymel/Maya API 函数中正确获取索引?

我知道 Pymel 有一个函数,getEdges()但是根据他们的文档,这可以从选定的面上获取它们,但是我只需要从选定的边缘获取它们。

这可能吗?

4

2 回答 2

4

虽然您的答案适用于正统,但经过一番认真的挖掘,我确实找到了一个更简单的解决方案!

事实证明,隐藏并且没有很好的记录,是一个具有讽刺意味的函数indices(),我确实搜索了这个,但文档中没有出现任何内容。

皮梅尔

selection[0].indices()[0]

以上将为我们提供所选边缘的整数。简单优雅!

于 2013-09-07T04:17:27.273 回答
3

你的意思是你只是选定边缘的扩展列表?这只是边缘选择上的 FilterExpand -sm 32 或 cmds.filterExpand(sm=32) 或 pm.filterExpand(sm=32) 。这些命令始终是字符串,您可以使用正则表达式获取索引:

# where objs is a list of edges, for example cmds.ls(sl=True) on an edge selection
cList = "".join(cmds.filterExpand( *objs, sm=32))
outList = set(map ( int, re.findall('\[([0-9]+)\]', cList ) ) ) 

这会给你一个包含边缘整数索引的集合(我使用集合,所以它很容易做一些事情,比如在没有 for 循环或 if 测试的情况下找到两组共有的边缘)

于 2013-09-06T05:14:43.380 回答