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?
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.
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.
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'] #
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.
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. |
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.
Recommended Posts