[PYTHON] Erstes Befehls-Plug-In

Überblick

Beschreibt den Inhalt für Anfänger über das Maya-Befehls-Plug-In.

--Was ist ein Befehls-Plug-In? ――Wie können Sie das Befehls-Plug-In verwenden? ――Welchen Referenzartikel haben Sie?

Motivation

Sie sehen nicht viele Informationen zu Befehls-Plug-Ins. Übrigens habe ich es überhaupt nicht benutzt ... Mein Ziel ist es also, einen Einführungsartikel für mich zu schreiben. Wie auch immer, der Inhalt ist leicht, weil ich denke, ich werde die Anzahl der Artikel über Maya Python erhöhen.

** Was ist ein Befehls-Plug-In? ** ** **

Offizielle Hilfe sagt:

Definieren Sie einen neuen benutzerdefinierten MEL-Befehl und reagieren Sie entsprechend maya.cmds Fügen Sie dem Python-Modul Funktionen hinzu, damit diese in Skripten verwendet werden können.

Kurz gesagt, Sie können Ihr eigenes Python-Modul direkt von cmds aus aufrufen.

** Befehls-Plug-In für cmds.ls (sl = True) **

Wie auch immer, es ist schnell zu schreiben und zu benutzen. Schreiben wir also die Funktion von cmds.ls (sl = True) mit einem Befehls-Plug-In. Der folgende Code basiert auf (oder kopiert) aus Maya Help.

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'] # 

Code-Inhalt

* Über den Rückgabewert *

Der Rückgabewert des Befehls ist keine return-Anweisung! (Vorurteil) Wenn ich Hilfe überprüfe, heißt es setResult (), also rufe ich es mit doIt () auf.

Als ich versuchte, meine eigene Klasse aufResult () zu setzen, um sie ein wenig zu verbessern, Bei "# Befehlsergebnisse müssen Zeichenfolge oder numerisch sein" tritt ein Fehler auf. Ich habe den Fall anderer übergeordneter Klassen nicht untersucht, aber ich frage mich, ob das Befehls-Plug-In nur Zeichenfolgen oder Zahlen zurückgeben kann.

* Über Elternklasse *

Klassen mit dem Präfix> ** MPx ** werden als Proxy-Klassen bezeichnet.

Dient zum Erstellen verschiedener Plug-In-Typen.

Also habe ich mir die Referenz angesehen, um zu sehen, welche anderen Klassen verfügbar sind. Welches Elternteil sollte gemäß dem Plug-In geerbt werden, das Sie erstellen möchten? Ich brauche mehr Studium.

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.

** Eindruck **

Wenn Sie ein Befehls-Plug-In für die Verarbeitung verwenden, das anscheinend sehr häufig verwendet wird, wird die Codemenge reduziert und ist möglicherweise einfacher. Es kann auch als MEL-Befehl verwendet werden, sodass es für MELer-Künstler nützlich sein kann. Ich möchte weiter studieren und auf Ratschläge und Ratschläge aus verschiedenen Bereichen warten.

** Referenzseite **

Recommended Posts

Erstes Befehls-Plug-In
Linux-Befehl Nr. 4
Linux-Befehl Nr. 3
Erste Flasche
Befehlsmemorandum
nkf Befehl
Eingabeaufforderung
Erster Entwurf
vim Befehl
sed Befehl
Erster Python-Review-
Linux-Befehl Nr. 5
grep Befehl
Befehlsnotiz
Erste gdb
oberster Befehl
Befehlsmemorandum
mv Befehl
Befehl seq