2017-10-28 161 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)