2010-05-28 6 views
3

Je suis en train de instancier un programme via un script python comme suitComment vérifier si MAX a terminé le chargement

os.startfile (« "C:/Program Files/Autodesk/3ds Max 2010/3dsmax.exe" ')

depuis que Max prend un peu de temps à charger, je veux attendre que le chargement soit terminé. Je vérifie le gestionnaire de tâches pour voir si "3dsmax10.exe" est dans la liste, mais c'est dans la liste dès que le processus démarre (évidemment). Alors, y a-t-il un moyen de savoir s'il est complètement chargé ou non?

Toute aide est appréciée

Merci

Répondre

1

chargement complet est un peu subjectif. Autant que je m'en souvienne, 3DS MAX effectue le chargement du plug-in, qui est une partie essentielle du temps de chargement, en vous montrant un écran d'accueil. Et seulement après le chargement, il affiche sa fenêtre principale.

Vous pouvez utiliser ce fait et surveiller en permanence les fenêtres existantes en utilisant WinAPI pour savoir quand la fenêtre principale est apparue. Utilisez le texte du titre ou wnd-class pour le trouver parmi d'autres.

1

Vous pouvez mettre un simple script maxscript dans maxhome \ Scripts \ Startup qui sera démarré lorsque le démarrage est terminé. Ce script pourrait créer un fichier, ou parler à votre script python via com ou tcp.

2

Voici un peu une solution hackish (pas robuste). Starti 3ds Max avec un script MAXScript sur la ligne de commande. Par exemple

c:\3dsmax\3dsmax -U MAXScript myscript.ms 

Comme Parseval suggère, ce script peut créer un nouveau fichier en utilisant la commande MAXScript:

createFile c:\tmp\myfile.txt 

Suivant en Python attendre jusqu'à ce que le fichier existe (ne pas oublier de le supprimer en premier) . Donc tout à fait:

while not os.path.exists(c:\tmp\myfile.txt): 
    time.sleep(1) 
+0

Peut-être pas supprimer - il suffit de «toucher» pour mettre à jour l'horodatage. – Rekin

+0

Bonne alternative. – cdiggins

Questions connexes