Maya:推迟脚本直到VRay注册后?

时间:2016-07-27 00:00:32

标签: python maya

我试图延迟我的管道工具的一部分(在Maya启动期间运行)在VRay注册后运行。

我目前在userSetup.py中推迟了工具的初始化,如下所示:

def run_my_tool():
    import my_tool
    reload(my_tool)

mc.evalDeferred("run_my_tool()")

我尝试在工具中使用evalDeferred来延迟执行render_settings脚本,但它在VRay注册之前一直运行。有关如何为VRay注册事件创建监听器的任何想法,或者是什么事件?谢谢!

修改

制作一个新主题,以弄清楚如何正确使用theodox' s condition / scriptJob命令建议here

1 个答案:

答案 0 :(得分:0)

在tech-artists.com上的Uiron告诉我如何正确地做到这一点。这是一个link to the thread

以下是uiron的帖子:

“除非必须,否则不要将python代码作为字符串传递。无论在哪里接受python回调(在Maya的api中都不是,但主要是在所有地方),请尝试以下方法之一:

# notice that we're passing a function, not function call
mc.scriptJob(runOnce=True, e=["idle", myObject.myMethod], permanent=True)
mc.scriptJob(runOnce=True, e=["idle", myGlobalFunction], permanent=True)

# when in doubt, wrap into temporary function; remember that in Python you can 
# declare functions anywhere in the code, even inside other functions
open_file_path = '...'
def idle_handler(*args):
   # here's where you solve the 'how to pass the argument into the handler' problem - 
   # use variable from outer scope
   file_manip_open_fn(open_file_path)
mc.scriptJob(runOnce=True, e=["idle", idle_handler], permanent=True)