2017-10-28 110 views
2

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

下面是对单个边选择正常工作:
单边的选择:

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

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

这里就是我在多个EDGE解决方案的工作

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

首先,你并不特别需要使用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)