【发布时间】:2016-08-31 14:42:11
【问题描述】:
我正在创建一个在 Maya 启动期间加载的 UI 工具,并在 VRay 初始化后执行一些模块(否则会引发错误)。
来自我更广泛的问题here 的建议使我尝试了 condition 和 scriptJob 命令。
下面的 listener.py 代码在 Maya 的脚本编辑器中运行时有效,但是当我导入 listener 模块并使用 launcher.py 代码运行它时,我收到此错误:
Error: line 1: name 'is_vray_loaded' is not defined
Traceback: (most recent call last):
File "<maya console>", line 1, in <module>
NameError: name 'is_vray_loaded' is not defined
注意条件命令需要mel命令语法(好像是个bug),所以只调用普通函数是行不通的,会报找不到过程的错误)。
这是听众:
# vray_listener.py
import os
import maya.cmds as mc
import maya.mel as mel
vray_plugin_path_2016 = os.path.join('C:', os.sep, 'Program Files', 'Autodesk', 'Maya2016', 'vray', 'plug-ins', 'vrayformaya.mll')
#-----------------------------------------------------------------------
def is_vray_loaded():
return mc.pluginInfo(vray_plugin_path_2016, q=1, l=True)
#-----------------------------------------------------------------------
def hey():
print 'hey'
mc.condition('vray_initialized', initialize=True, d='idle', s='python("is_vray_loaded()");')
mc.scriptJob(ct=['vray_initialized', 'hey()'])
这是启动器:
# launcher.py
import sys
vray_listener_path = 'S:/path/to/module'
if vray_listener_path not in sys.path:
sys.path.append(vray_listener_path)
import vray_listener
reload(vray_listener)
【问题讨论】:
标签: python conditional-statements maya