説明された Python API 2.0 Hello World のサンプル

Hello World のサンプルは、Maya Python API 2.0 を使用するプラグイン開発の重要な構成要素をいくつか示します。

Python 関数とプラグインの詳細については、「Maya Python API」セクションを参照してください。また、Python API リファレンスを参照することもできます。

プラグインが Python API 2.0 を使用することを示します。

def maya_useNewAPI():
    pass

コマンド プラグインは MPxCommand から継承されます。

class Py2HelloWorldCmd(om.MPxCommand):
    kPluginCmdName = "py2HelloWorld"

コマンドをインスタンス化する

コマンドは、cmdCreator() を使用してインスタンス化されます。doIt() はコマンドのアクションを実行します。より複雑なコマンド プラグインでは、doIt() を使用して引数を解析し、内部データを設定し、その他のハウスキーピング処理を行ってから、redoIt() 関数を呼び出します。その後、redoIt() 関数はコマンドのアクションを実行します。

詳細については、「doIt() 関数と redoIt() 関数」を参照してください。

@staticmethod
def cmdCreator():
    return Py2HelloWorldCmd()

def doIt(self, args):
    print ("Hello World!")

プラグインを初期化する

すべてのプラグインは、initializePlugin() 関数を実装する必要があります。次に、この関数が registerCommand() を呼び出します。initializePlugin() が実装されていない場合、プラグインのロードは失敗します。詳細については、「プラグインの初期化と初期化解除」を参照してください。

def initializePlugin(plugin):
    pluginFn = om.MFnPlugin(plugin)
    try:
        pluginFn.registerCommand(
            Py2HelloWorldCmd.kPluginCmdName, Py2HelloWorldCmd.cmdCreator
        )
    except:
        sys.stderr.write(
            "Failed to register command: %s\n" % Py2HelloWorldCmd.kPluginCmdName
        )
    raise

プラグインの初期化を解除する

すべてのプラグインは、uninitializePlugin() 関数を実装する必要があります。次に、この関数が deregisterCommand() を呼び出します。uninitializePlugin() が実装されていない場合、プラグインのロードは失敗します。詳細については、「プラグインの初期化と初期化解除」を参照してください。

def uninitializePlugin(plugin):
    pluginFn = om.MFnPlugin(plugin)
    try:
        pluginFn.deregisterCommand(Py2HelloWorldCmd.kPluginCmdName)
    except:
        sys.stderr.write(
            "Failed to unregister command: %s\n" % Py2HelloWorldCmd.kPluginCmdName
        )
    raise