1 回答

TA貢獻(xiàn)1827條經(jīng)驗 獲得超9個贊
您可能需要閱讀一些基本函數(shù)教程,以基本了解如何通過函數(shù)參數(shù)傳遞值。另外,函數(shù)cmds.setAttr中的命令setColor沒有傳遞給它的對象,所以...我不確定您期望它如何神奇地工作。
解決方案非常簡單。查詢內(nèi)部的顏色索引setAttributes,然后調(diào)用setColor每個對象,將對象和顏色索引傳遞給函數(shù)。
import maya.cmds as cmds
if cmds.window("buildWin", exists =True):
cmds.deleteUI("buildWin", window = True)
myWindow = cmds.window("buildWin",t='DS_colorChanger',rtf=1,w=100, h=100, toolbox=True)
column = cmds.columnLayout(adj=True)
def gui(*args):
cmds.columnLayout()
cmds.button(w=300,label='build example curves',c=exampleShapes)
cmds.colorIndexSliderGrp('controlColor',
label='Control Color',
min=1,
max=31,
value=1,
columnWidth=[( 1, 80 ),( 2, 40 ), ( 3, 150 )])
cmds.button(w=300,label='Set Curve Color',c=setAttrbutes)
cmds.showWindow(myWindow)
def exampleShapes(*args):
cmds.circle(n='exampleCirc1',ch=False,nr = (0,0,0))
cmds.circle(n='exampleCirc2',ch=False,nr = (0,0,0))
cmds.circle(n='exampleCirc3',ch=False,nr = (0,0,0))
cmds.setAttr('exampleCirc1.translateX',-2)
cmds.setAttr('exampleCirc3.translateX',2)
def setAttrbutes(*args):
colorPref = cmds.colorIndexSliderGrp('controlColor',query=True,value=True) - 1 # Query color index here.
setColor('exampleCirc1', colorPref) # Call set color here with the object and color index.
setColor('exampleCirc2', colorPref)
setColor('exampleCirc3', colorPref)
def setColor(obj, colorPref): # Requires an object, and the color index to set it as.
cmds.setAttr(obj + '.overrideEnabled', 1) # Need to pass an object!!
cmds.setAttr(obj + '.overrideColor', colorPref)
順便說一下,你確實應(yīng)該打破按名稱對對象進(jìn)行硬編碼的習(xí)慣,并 100% 地使用變量。它將為您省去很多長期的痛苦,并使您的工具更加防彈。
添加回答
舉報