首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >玛雅。有没有办法通过更改视口来激活脚本作业?

玛雅。有没有办法通过更改视口来激活脚本作业?
EN

Stack Overflow用户
提问于 2020-03-01 07:46:08
回答 2查看 682关注 1票数 0

有一个名为“ActiveViewChanged”的事件,但它不起作用。我知道另一种方法,只需在maya中切换视口即可启动操作。示例:

代码语言:javascript
运行
复制
import maya.cmds as cmds 
def clix():
    print "you have clicked on another view" 
cmds.scriptJob (event=["ActiveViewChanged","clix()"])
EN

回答 2

Stack Overflow用户

发布于 2020-03-01 23:24:27

我可以证实,"ActiveViewChanged"似乎没有任何效果。在四处搜索后,似乎许多其他人也有同样的问题。

您可以尝试使用以下代码:cmds.scriptJob(event=["ModelPanelSetFocus", "clix()"])

尽管它似乎不会在您期望的时候触发(单击一个视口!)相反,它会在视口中按键时触发。

使用OpenMaya,可以通过api添加回调。我找到的唯一一条是:

OpenMaya.MEventMessage.addEventCallback("ActiveViewChanged", clix)

虽然这与"ModelPanelSetFocus"具有完全相同的行为。

我想你也可以设置一个计时器来查询当前面板,以检测它是否已更改,如果已更改则触发。这对于临时计时器来说是可以接受的,比如在工具打开期间,但是如果它在整个Maya会话中运行,我就会反对,因为这会增加额外的开销。

票数 1
EN

Stack Overflow用户

发布于 2020-03-03 05:25:07

最后,我使用了ModelPanelSetFocus。事实上,没有键盘我就不能工作:)

代码语言:javascript
运行
复制
try:
    lastActiveView
except NameError:
    global lastActiveView
    lastActiveView = None

def AVC():
    global lastActiveView
    if lastActiveView == None:
        lastActiveView = cmds.lookThru(q=True)
    if lastActiveView == cmds.lookThru(q=True):
        pass
    else:
        lastActiveView = cmds.lookThru(q=True)
        print "the view has changed ..."
jobAVC = cmds.scriptJob(e=('ModelPanelSetFocus', AVC))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60470709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档