切换隔离脚本未更新

0 投票
1 回答
1175 浏览
提问于 2025-04-18 06:13

我写了一个脚本,用来切换当前视图的“只显示选中对象”功能。可是为什么这似乎没有只显示我选中的对象呢?我觉得我的方法是对的,但总感觉哪里出了问题,就是找不到具体是什么。

import maya.cmds as cmds

viewports = cmds.getPanel( type='modelPanel' )
curPanel = cmds.getPanel( withFocus=True )

if curPanel in viewports:
    curState = cmds.isolateSelect( curPanel, q=True, state=True )
    notState = not curState

    if notState:
        cmds.isolateSelect( curPanel, addSelected=True)

    cmds.isolateSelect( curPanel, state=notState)

解决了:

import maya.cmds as mc 
import maya.mel as mel

isoPnl = mc.getPanel(wf=True)
isoCrnt = mc.isolateSelect(isoPnl, q=True, s=True)
mel.eval('enableIsolateSelect %s %d' % (isoPnl,not isoCrnt) )

1 个回答

0

你的代码确实可以正确地打开和关闭隔离视图,但它并没有做任何事情来添加选中的对象到这个视图里,这就是为什么你看到的视口是空的。

要添加选中的对象,你需要使用这个命令:

cmds.isolateSelect(modelPanel, addSelected=True)

最合理的做法是在notState为真时运行这个命令:

if curPanel in viewports:
    curState = cmds.isolateSelect( curPanel, q=True, state=True )
    notState = not curState

    cmds.isolateSelect( curPanel, state=notState)

    if notState:
        cmds.isolateSelect(modelPanel, addSelected=True)

撰写回答