python:polySplitRing在多个边上插入边缘流

时间:2017-10-28 07:49:39

标签: python maya mel

我是一个真正的Python noob(现在已经玩了大约一个星期)但我真的很喜欢简化我的一些Maya工具。我现在有点卡在以下; 我正在尝试使用带边缘流的插入来获得polySplitRing以处理多个边缘的选择。我可以让它在一个边缘上工作,但我不能让它在多个边缘上工作。我正在尝试使用列表,但我需要更好的东西。尝试过搜索相同的问题,但没有找到任何东西(也不确定要搜索什么)。如果有一个设置这样的东西的文档,请链接!

这是单边选择的正常工作:
单边选择:

import maya.cmds as cmds
import maya.mel as mm

mm.eval("polySelectSp -ring;")
cmds.polySplitRing(ief=True, cch=1)

以下是我正在为多边缘解决方案工作的内容

import maya.cmds as cmds
import maya.mel as mm

sel=cmds.ls(sl=1)
edgeCount = cmds.polyEvaluate(ec=True)
print edgeCount
edgeList = [edgeCount]
print edgeList

for each in edgeList:
    mm.eval("polySelectSp -ring;")
    cmds.polySplitRing(ief=True, cch=1)


mm.eval("polySelectSp -ring;")
cmds.polySplitRing(ief=True, cch=1)

polySplitEdgeRing Insert with Edge Flow working on a single edge

desired end result after selecting multiple edges

干杯!

1 个答案:

答案 0 :(得分:1)

首先,您不需要使用mel模块,您可以在Python中执行相同的操作(更好)。

然后,只需创建一个选定边的列表,然后在每个边上应用分割。

import maya.cmds as cmds

selEdges = cmds.ls(selection = True)

for edge in selEdges:
    # Find edge Id
    edgeId = int(edge.split('[')[-1][:-1]) # Should be better with a regex, I know...
    # Apply split on this particular edge thanks to edge Id
    cmds.polySelect(edgeRing = edgeId)
    cmds.polySplitRing(ief = True)