2016-08-31 4 views
0

Ich erstelle ein UI-Tool, das während Mays Start geladen wird und einige Module nach der Initialisierung von VRay ausführt (andernfalls wird ein Fehler ausgelöst).Maya (Python): Befehl running condition und scriptJob aus einem Modul

Ein Vorschlag aus meiner breiteren Frage here hat mich dazu gebracht, die Bedingung und scriptJob Befehle auszuprobieren.

Der listener.py Code unten funktioniert, wenn sie von Script-Editor innerhalb Mayas laufen, aber wenn ich den Hörer Modul und führen Sie es mit dem launcher.py Code importieren, bekomme ich diesen Fehler:

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 

Hinweis dass der Bedingungsbefehl eine mel-Befehlssyntax benötigt (scheint ein Fehler zu sein), so dass nur der Aufruf der normalen Funktion nicht funktioniert und ein Fehler auftritt, dass die Prozedur nicht gefunden werden kann).

Hier ist der Zuhörer:

# 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()']) 

Hier ist der Launcher:

# 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) 

Antwort

1

dass versuchen,

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']) 
+0

willkommen, lesen Sie bitte, dass, http://stackoverflow.com/questions/24616757/maya-python-cmds-button-mit-ui-passing-variables-und-calling-a-function –

+0

Vielen Dank für die Hilfe und den Link ! Ich dachte, es funktionierte, aber es sieht so aus, als gäbe es eine Variable im Cache, die es so aussehen ließ, als würde es funktionieren. Ich kann die Arbeitsergebnisse nicht auf einem neuen Open von Maya reproduzieren. –

+0

lassen Sie mich bitte Ihre Lösung kennen, für das nächste Mal ...... der gleiche Fehler? –

Verwandte Themen