[PYTHON] Premier plug-in de commande

Aperçu

Décrit le contenu du plug-in de commande Maya pour les débutants.

motivation

Vous ne voyez pas beaucoup d'informations sur les plug-ins de commande. Au fait, je ne l'ai pas du tout utilisé ... Mon objectif est donc d'écrire un article d'introduction pour moi-même. Quoi qu'il en soit, le contenu est léger car je pense que je vais augmenter le nombre d'articles sur Maya Python.

** Qu'est-ce qu'un plug-in de commande? ** **

Aide officielle dit comme ça.

Définissez une nouvelle commande MEL personnalisée et répondez en conséquence maya.cmds Ajoutez des fonctions au module Python à utiliser dans les scripts.

En bref, vous pouvez appeler votre propre module Python directement à partir de cmds.

** Plug-in de commande pour cmds.ls (sl = True) **

Quoi qu'il en soit, il est rapide de l'écrire et de l'utiliser. Alors, écrivons la fonction de cmds.ls (sl = True) avec un plug-in de commande. Le code suivant est basé sur (ou copié) de l 'Aide Maya.

command_select.py


# -*- coding: utf-8 -*-
import maya.api.OpenMaya as OpenMaya


def maya_useNewAPI():
    pass

class CommandSelection(OpenMaya.MPxCommand):
    kPluginCmdName = "selection"

    def __init__(self):
        OpenMaya.MPxCommand.__init__(self)

    @staticmethod
    def cmdCreator():
        return CommandSelection()

    def doIt(self, args):
        self.setResult(list(OpenMaya.MGlobal.getActiveSelectionList().getSelectionStrings()))
 
def initializePlugin(mobject):
    plugin = OpenMaya.MFnPlugin(mobject)
    plugin.registerCommand(CommandSelection.kPluginCmdName, CommandSelection.cmdCreator)

def uninitializePlugin(mobject):
    pluginFn = OpenMaya.MFnPlugin(mobject)
    pluginFn.deregisterCommand(CommandSelection.kPluginCmdName)

command_select_doit.py


cmds.selection()
>>> # Result: [u'pPlane2', u'pPlane1'] # 

Contenu du code

* À propos de la valeur de retour *

La valeur de retour de la commande n'est pas une instruction de retour! (Préjudice) Quand je vérifie Help, il dit setResult (), donc je l'appelle avec doIt ().

Quand j'ai essayé de setResult () ma propre classe pour l'améliorer un peu, Une erreur se produit avec «# Les résultats de la commande doivent être des chaînes ou des nombres.». Je n'ai pas étudié le cas d'autres classes parentes, mais je me demande si le plug-in de commande ne peut renvoyer que des chaînes ou des nombres.

* À propos de la classe parentale *

Les classes préfixées par> ** MPx ** sont appelées classes proxy.

Utilisé pour créer différents types de plug-ins.

J'ai donc regardé la Reference pour voir quelles autres classes sont disponibles. Quel parent doit être hérité en fonction du plug-in que vous souhaitez créer? J'ai besoin de plus d'études.

Class Description
MPxAttributePatternFactory Base class for custom attribute pattern factories.
MPxCommand Base class for custom commands.
MPxData Base Class for User-defined Dependency Graph Data Types.
MPxGeometryData Base Class for User-defined Dependency Graph Geometry Data Types.
MPxGeometryIterator Base class for user defined geometry iterators.
MPxNode Base class for user defined dependency nodes.
MPxSurfaceShape Parent class of all user defined shapes.

** Impression **

Si vous utilisez un plug-in de commande pour le traitement qui semble être utilisé très souvent, la quantité de code sera réduite et cela peut être plus facile. Elle peut également être utilisée comme commande MEL, elle peut donc être utile aux artistes MELer. J'aimerais continuer à étudier en attendant des astuces et des conseils issus de domaines variés.

** Site de référence **

Recommended Posts

Premier plug-in de commande
Commande Linux n ° 4
Commande Linux n ° 3
Premier flacon
Mémorandum de commandement
commande nkf
invite de commande
Premier essai
commande vim
commande sed
Premier examen de python-
Commande Linux n ° 5
commande grep
mémo de commande
Premier gdb
commande supérieure
Mémorandum de commandement
commande mv
commande seq