访问和修改Maya撤消队列

2024-06-26 13:30:12 发布

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

有什么方法可以访问/编辑撤消队列吗?在

我问这个问题的原因是,在我当前的工具中,我在我的一个重命名函数中创建了以下内容(双击QListWidgetItem,输入一个新名称并命令重命名将使用新的输入名称):

cmds.undoInfo(chunkName='renameChunk', openChunk=True)
# do cmds.rename operations
cmds.undoInfo(chunkName='renameChunk', closeChunk=True)

但是,如果我尝试使用撤消函数(ctrl+z)来恢复命名,则需要按几次组合键,而不是预期的1次。当打印出撤消队列时,我注意到有很多“空白”条目可能是导致多个撤消的原因。在

^{pr2}$

Tags: 工具方法函数命令名称true编辑队列
1条回答
网友
1楼 · 发布于 2024-06-26 13:30:12

我要提供一个答案,因为你所做的有点冒险。现在,您假设cmds.undoInfo(chunkName='renameChunk', closeChunk=True)将运行,但是如果在这两行之间发生错误,将永远不会执行该行,您将留下一个打开的undo块。在

更安全的方法是打开一个撤消块,然后将代码包装在tryfinally中。这样无论发生什么情况,都可以确保块将在finally块中关闭:

cmds.undoInfo(chunkName='renameChunk', openChunk=True)
try:
    raise RuntimeError("Oops!")
finally:
    cmds.undoInfo(closeChunk=True)  # This will still execute.

或者,您可以更喜欢创建自己的撤消类,并使用其__enter____exit__特殊方法:

^{pr2}$

只要你这样做,你不应该有所有这些空白撤销调用(至少我没有!)。尽管要尽量保持它的紧凑,所以打开一个undo块,完成工作,然后立即关闭它。避免误入歧途去做其他事情,比如管理你的gui之类的事情。在

相关问题 更多 >