請耐心等待 - 我對這一切都很陌生。我嘗試了搜索,只找到了我正在尋找的東西,但不是我需要將它們連接起來。使用setAttr和頻道框選擇的正確方法
基本上,我正在嘗試創建一個Python腳本,它允許用戶在Maya的Channel框中簡單地「排除」多個選定的屬性。
到目前爲止,我有:
import maya.cmds as cmds
selObjs = cmds.ls(sl=1)
selAttrs = cmds.channelBox("mainChannelBox", q=1, sma=1)
print selObjs # returns [u'pCube1']
print selAttrs # returns [u'ty']
如果我想設置的屬性:
cmds.setAttr(selObjs + "." + selAttrs, '0')
這當然是不對的,所以我怎麼正確地在這個sceneario執行SETATTR命令? (如果我在頻道框中有多個選定的屬性,則意圖包括設置它們)。
我發現在MEL中,它是這樣工作的。所以我真的只需要幫助搞清楚如何創造這個蟒蛇對方:
string $object[] = `ls -sl`;
string $attribute[] = `channelBox -q -sma mainChannelBox`;
for ($item in $object)
for($attr in $attribute)
setAttr ($item + "." + $attr) 0;
後搬家,我需要一個if循環的地方,如果選擇的屬性是一個規模屬性值應爲1 - 但這是我稍後會研究的內容,但不會介意提供建議。
謝謝!
如果你使用你說的「錯誤」的代碼會發生什麼?你有例外嗎?我看到的顯而易見的事情是,你試圖把你的單項清單看作是字符串。您可能想嘗試'cmds.setAttr(selObjs [0] +「。」+ selAttrs [0],'0')',或者只是像寫在MEL代碼中那樣寫'for'循環。 – Blckknght
是的,我學到了一個艱難的方法,那就是我在那裏做的是連接列表(而不是它們的內容)XD - 學習的痛苦 – Gogo