2016-07-27 1 views
0

Я пытаюсь отложить часть моего инструмента конвейера (который запускается во время запуска майя) для запуска после регистрации VRay.Maya: Отложить сценарий до тех пор, пока VRay не будет зарегистрирован?

Я в настоящее время задержки инициализации инструмента в userSetup.py так:

def run_my_tool(): 
    import my_tool 
    reload(my_tool) 

mc.evalDeferred("run_my_tool()") 

Я попытался с помощью evalDeferred в инструменте, чтобы задержать выполнение сценария render_settings, но он держит пока не зарегистрирован VRay. Любые мысли о том, как создать слушателя для события регистрации VRay или какого события? Благодаря!

EDIT:

Сделана новая тема, чтобы понять, как правильно использовать условие theodox в/scriptJob команды предложения here.

ответ

0

Uiron over at tech-artists.com показал мне, как это сделать должным образом. Вот link to the thread

Вот пост по uiron:.

«не передают код питона в виде строки, если Вы не должны Везде, где питон обратный вызов принимается (что не везде в апи майя, но в основном везде) попробуйте один из них:

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

"

+1

Это довольно распространенный способ отложить, пока все нагрузки не выполняются. Вы также можете создать настраиваемое условие, которое проверяет плагин и срабатывает при его загрузке с помощью команды 'condition' и' scriptJob (ct = True) ' – theodox

+0

Это здорово, я тоже дам это, спасибо! –

+0

@theodox Я пытаюсь предложить ваше предложение, но у меня возникают проблемы при запуске моего сценария условия из модуля. Он отлично работает, когда я запускаю его из редактора сценариев. Я опубликовал код в своем оригинальном посте по EDIT –