首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Maya (Python):从模块中运行条件命令和scriptJob命令

Maya (Python):从模块中运行条件命令和scriptJob命令
EN

Stack Overflow用户
提问于 2016-08-31 14:42:11
回答 1查看 1.1K关注 0票数 0

我正在创建一个UI工具,它在Maya启动时加载,并在VRay初始化后执行一些模块(否则会引发错误)。

来自我更广泛的问题here的一个建议使我尝试了条件和scriptJob命令。

当从Maya的脚本编辑器中运行时,下面的listener.py代码可以工作,但是当我导入侦听器模块并使用launcher.py代码运行它时,我会得到以下错误:

代码语言:javascript
运行
复制
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),因此只调用普通函数就不起作用,从而导致找不到过程的错误)。

下面是听众:

代码语言:javascript
运行
复制
# 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()'])

这是发射器:

代码语言:javascript
运行
复制
# 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)
EN

回答 1

Stack Overflow用户

发布于 2016-08-31 15:22:01

试试这个,

代码语言:javascript
运行
复制
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(*args):
    return mc.pluginInfo(vray_plugin_path_2016, q=1, l=True)

#-----------------------------------------------------------------------
def hey(*args):
    print 'hey'

mc.condition('vray_initialized', initialize=True, d='idle', s=is_vray_loaded)

mc.scriptJob(ct=['vray_initialized', 'hey'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39252664

复制
相关文章

相似问题

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