Maya: executer un fichier python en le glissant dans le viewport
- mercredi 18 juin 2014
- Ecrire commentaire
Si vous êtes un du genre à vouloir utiliser des modules python comme des fichiers MEL, à vouloir juste drag and drop un .py dans le viewport maya pour le charger (oui, j’ai souvent eu droit à des « Eh mais python c’est de la *****, c’est pas reconnu par maya sauf si c’est dans le script editor, c’est ******! »), utiliser des petits scripts sans dépendances, tous regroupés dans un fichier, si vous avez peur de vouloir gérer des modules/packages et que vous ne voulez pas vous prendre la tête avec les « import », cet article est fait pour vous!
Enregistrez le code ci-dessous dans un fichier « .py », dans le plugin manager de maya (Window->Settings/Preferences->Plug-in manager), allez chercher le plugin précédemment créé (où placez le dans un des répertoire de plugins que maya va lancer au démarrage) et le tour est joué!
Vous pouvez maintenant drag&drop des fichiers .py (attention, pas .pyc) dans maya!
# -*- coding: utf-8 -*- import sys import maya.OpenMayaMPx as mpx class PyDrop(mpx.MPxFileTranslator): registeredName = "pyDrop" def __init__(self): mpx.MPxFileTranslator.__init__(self) @classmethod def canBeOpened(cls): return False @classmethod def haveReadMethod(cls): return True @classmethod def filter(cls): return "*.py" @classmethod def defaultExtension(cls): return "py" def reader(self, file_, optionsString, mode): execfile(file_.rawFullName()) def translatorCreator(): return mpx.asMPxPtr(PyDrop()) def initializePlugin(mobject): mplugin = mpx.MFnPlugin(mobject) try: mplugin.registerFileTranslator(PyDrop.registeredName, None, translatorCreator) except: sys.stderr.write("Failed to register translator: %s" % PyDrop.registeredName) raise def uninitializePlugin(mobject): mplugin = mpx.MFnPlugin(mobject) try: mplugin.deregisterFileTranslator(PyDrop.registeredName) except: sys.stderr.write("Failed to deregister translator: %s" % PyDrop.registeredName) raise