使用PythonScript将Maya显示层设置为禁用

2024-04-19 16:53:27 发布

您现在位置:Python中文网/ 问答频道 /正文

这应该行得通,但是不行……我需要替换变量还是什么

import maya.cmds as cmds
def setLayerTo(attrib, value, selected=False):
    layers = cmds.ls(long=True, type='displayLayer')
    for l in layers[1:]:
        selectionStatus = cmds.layerButton(l, query=True, select=True)
        if(not selected or selectionStatus): 
            cmds.setAttr( '%s.%s' % (l, attrib), value)

setLayerTo('visibility', value=0, selected=True)

Tags: importfalsetruevaluelayersdefasls
2条回答

事实上,它可以工作,它只是不更新图层的可见性按钮。你可以检查它,如果你把一个geometry到层和应用你的脚本。在我的场景中,如果应用脚本,对象将消失

我不知道如何进行ui更新

根据注释,使用以下方法可以切换命名显示图层的可见性:

import maya.cmds as cmds

def toggleLayer(name, on):
    '''Toggle display layer visibility

    Args:
        name (str): Display layer name
        on (bool): True to enable layer, False to disable
    '''

    cmds.setAttr('{}.visibility'.format(name), on)
    cmds.layerButton(name, edit=True, layerVisible=on)
    

# Example usage
toggleLayer('OrangePeel', False)

与原始文章中的方法不同,这是专门为显示层按钮及其关联的显示层设计的

编辑:实际上,我的缺点是阅读能力差,原来的方法也是专门处理显示层,只是忽略了标记按钮的检查状态

相关问题 更多 >