2016-09-20 3 views
2

Мне нужно зарегистрироваться на обратный вызов майки MSceneMessage и запросить пути к сценам. Мне нужно пройти как до, так и после майя. (открыть, сохранить файл)maya kBeforeSave callback

Вот что у меня есть.

def before(*args, **kwargs): 
    print 'BEFORE: ' + cmds.file(query = True) 

def after(*args, **kwargs): 
    print 'AFTER: ' + cmds.file(query = True) 

om.MSceneMessage.addCallback(om.MSceneMessage.kBeforeOpen, before) 
om.MSceneMessage.addCallback(om.MSceneMessage.kAfterOpen, after) 

om.MSceneMessage.addCallback(om.MSceneMessage.kBeforeSave, before) 
om.MSceneMessage.addCallback(om.MSceneMessage.kAfterSave, after) 

Сценарий случая1; В сцене test_01.ma, OPEN scene test_02.ma

Работает как и ожидалось.

ДО: ../../test_01.ma

ПОСЛЕ: ../../test_02.ma

Case scenario2; В сцене test_01.ma, SAVE scene test_02.ma

НЕ РАБОТАЕТ, как ожидалось.

ДО: ../../test_02.ma

ПОСЛЕ: ../../test_02.ma

Я также попробовал обратный вызов 'kBeforeSaveCheck', с тем же результатом.

+0

я удивляюсь, что результат запроса будет (кроме RuntimeError :: флаг не может быть запрошен !!), что информация, которую вы хотите запрос, scenename? включительно дорожка? –

ответ

0

получить scenename

def scene_id(*args): 
    return cmds.file(query=True, scenename=True) 

def before(*args, **kwargs): 
    print 'BEFORE: {0}'.format(scene_id()) 

def after(*args, **kwargs): 
    print 'After: {0}'.format(scene_id()) 
+0

Пожалуйста, всегда добавляйте некоторые пояснения к вашему коду ... – andreas