Question

Je dois appeler une fonction (Maya-Python) basé sur le cube rotationX. Pour cela, je dois capturer l'événement, programmation.

J'essayé d'utiliser en boucle mais il stucks dans la boucle, ne peut rien faire en ce moment-là. J'ai essayé theading (python), toujours même.

Peut-on faire cela ou d'une autre façon? Si oui, comment?

Maya 2009 dans Windows XP

Quelques références de code forfait:

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

Voici Python sage:

#!/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
Était-ce utile?

La solution

On dirait un scriptJob peut être ce que vous êtes après. Voici un exemple de simples ci-dessous. Cependant, dans cet exemple, le rappel ne sera appelée lorsque vous relâchez la souris de tourner.

import maya.cmds

def myRotateCallback():
    print 'do something'

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

Si vous souhaitez recevoir en continu callbacks tout en faisant tourner le cube, vous pouvez le faire au niveau de l'API avec MAYA MNodeMessage :: addNodeDirtyPlugCallback.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top