Python control Maya Layer Editor

透過Python寫出的Maya小工具來設定Display layer的visibility

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import pymel.core as pm
import maya.cmds as cmds
import maya.OpenMayaUI as apiUI
def toggleDisplayLayer(*arg):
displayLayerName=pm.textScrollList('displayLayer',query=True,selectItem=True)
val=cmds.getAttr('%s.visibility'%displayLayerName[0])
if val:
cmds.setAttr('%s.visibility'%displayLayerName[0],0)
else:
cmds.setAttr('%s.visibility'%displayLayerName[0],1)
pm.window(title='demo',width=200)
pm.columnLayout(adjustableColumn=True)
displayLayerList =cmds.ls(type='displayLayer')
pm.textScrollList('displayLayer',append=displayLayerList)
pm.button(label='On/Off Display Layout',command=toggleDisplayLayer)
pm.showWindow()

下面GIF Demo,左邊是Maya主視窗,右上角的Attribute Editor可以從Maya的Display layer按右鍵打開,右下角就是我們所寫的小工具。

可以看到,不管是Attribute Editor或是我們的小工具,改變了visibility屬性,原本Maya主視窗的UI並不會更新,不過如果是從Maya主視窗更改設定的話,Attribute Editor卻會同時更新改變。

所以還要找一下有沒有方法能夠讓我們的小工具設定了visibility屬性後,更新Maya UI的方法。

參考

https://www.youtube.com/watch?v=3iNNVrCuxME