2010-04-17 1 views
1

Мне нужно вызвать функцию (майя-питон) на основе вращения куба X. Для этого я должен программно сделать это событие.В MAYA 2009, возможно ли захватить событие поворота куба?

Я пробовал использовать цикл while, но он застревает в цикле, за это время ничего не может быть сделано. Я пробовал теадинг (python), все тот же.

Можно ли это сделать так или иначе? Если да, то как?

Maya 2009 в Windows XP

Некоторые ссылки не удалось кода:

import maya.cmds as cmds  
while (count < 90): 
    lock = cmds.getAttr('pCube1.rotateX',lock=False) 
    print lock 
    count = count + 1 

Вот Python мудр:

#!/usr/bin/python 

    import thread 
    import time 

# Define a function for the thread 
def cubeRotateX(threadName, delay): 
    count = 0 
    while count < 5: 
     time.sleep(delay) 
     count += 1 
try: 
    thread.start_new_thread(cubeRotateX, ("Thread-1", 2,)) 
except: 
    print "Error: unable to start thread" 

while 1: 
    pass 

ответ

1

Это звучит как scriptJob может быть то, что вы после , Ниже приведен простой пример. Однако в этом примере обратный вызов будет вызываться только тогда, когда вы отпустите мышь от вращения.

import maya.cmds 

def myRotateCallback(): 
    print 'do something' 

maya.cmds.scriptJob(attributeChange=['pCube1.rotateX', myRotateCallback]) 

Если вы хотите получить непрерывные функции обратного вызова при вращении куба, вы можете сделать это на уровне API майа с MNodeMessage :: addNodeDirtyPlugCallback.

+0

Спасибо, я поработаю над этим (в субботу (21 апреля'10)). – Rick2047

+0

Работал красиво .. есть ли какой-то учебник для этих видов деятельности. (Если он есть в Maya Docs, тогда это нормально). – Rick2047