Python 如何从选择中获取边索引?

Python 如何从选择中获取边索引?,python,api,maya,mel,pymel,Python,Api,Maya,Mel,Pymel,有没有办法从Pymel/Maya API函数中正确获取索引 我知道Pymel有一个名为getEdges()的函数,但是根据他们的文档,这会从选定的面获取它们,但是我只需要从选定的边获取它们 这是可能的吗?您的意思是您只需要选定边的扩展列表?这只是边缘选择上的FilterExpand-sm 32或cmds.FilterExpand(sm=32)或pm.FilterExpand(sm=32)。这些命令始终是字符串,您可以使用正则表达式从中获取索引: # where objs is a list of

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

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


这是可能的吗?

您的意思是您只需要选定边的扩展列表?这只是边缘选择上的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测试)

您的意思是只需要选定边的扩展列表吗?这只是边缘选择上的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测试)

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

事实证明,隐藏并且没有很好的文档记录,是一个被讽刺地称为
index()
的函数,我确实搜索了这个函数,但文档中没有任何内容

Pymel

选择[0]。索引()[0]


上面将给出所选边的整数。简单而优雅

虽然你的答案对theodox有用,但经过认真的挖掘,我确实找到了一个更简单的解决方案

事实证明,隐藏并且没有很好的文档记录,是一个被讽刺地称为
index()
的函数,我确实搜索了这个函数,但文档中没有任何内容

Pymel

选择[0]。索引()[0]


上面将给出所选边的整数。简单而优雅

如果你投了反对票,你能至少告诉我为什么吗?我不明白…如果你投票反对,你能至少告诉我为什么吗?我不明白…我还发现我可以这样做
self.edgeIndex1=int(选择[0].split(“[”)[1].split(“]”)[0])
,但是对于这么简单的东西来说,这很难看,对吧<代码>选择[0]。getEdgeIndex()您确定没有其他内容吗?hahaApart从进行集合测试(此处支持)开始,整数索引在组件上没有多大用处:使用maya执行的任何操作都需要同时了解对象和组件,这是通过ls或filterexpand获得的。我确实找到了更好的解决方案,但我给出了您的答案!请看我的答案!:)我还发现我可以这样做
self.edgeIndex1=int(选择[0].split('[')[1].split(']')[0])
,但是对于如此简单的东西来说,它是相当丑陋的,对吗<代码>选择[0]。getEdgeIndex()您确定没有其他内容吗?hahaApart从进行集合测试(此处支持)开始,整数索引在组件上没有多大用处:使用maya执行的任何操作都需要同时了解对象和组件,这是通过ls或filterexpand获得的。我确实找到了更好的解决方案,但我给出了您的答案!请看我的答案!:)