Maya Python API は C++ Maya API の正確なコピーではありません。統合のため、Python のバインドには変更を加えています。
Maya Python API から MString
クラスと MStringArray
クラスを削除しました。Python には既に非常に堅牢な文字列の実装があるため、独自のものは必要ないからです。
MString を予期する API メソッドに Python オブジェクトを渡した場合、MString への内部変換は Python の呼び出し unicode(param)
と同じように動作します。つまり、param が **str タイプの場合、デフォルトのコーデックを使用してデコードされます。一般に、非 ASCII 文字を使用する場合は、unicode オブジェクトを渡す方が安全です。
MStatus
クラスを削除しました。MStatus
の代わりに Python の例外を使用する必要があります。詳細については、エラー条件および例外と MStatusを参照してください。
Maya API では、メッセージを含む数箇所で void* ポインタを使用しています。Maya Python API では、void* ポインタの代わりに任意の Python オブジェクトを渡すことができます。
creator()
関数またはその他任意の関数でプロキシ クラスを作成してそのクラスを Maya に返す場合、新しいオブジェクト上で OpenMayaMPx.asMPxPtr()
を呼び出す必要があります。このコールにより、オブジェクトの所有権が Mayaに移行します。このコールを行わなければ、Python がそのまま所有権を保持し、Maya がオブジェクトへのポインタを持っていても、オブジェクトのリファレンスを解除して破棄する可能性があります。
コマンドが MArgList
メソッドに渡された doIt()
から直接フラグを解析しようと試みたとき、コマンドが Python から使用されていると、これらのフラグは使用できません。これは、コマンドの記述が Python でも C++ でも同じです。
フラグを Python から使用できるようにするには、コマンドで MSyntax
オブジェクトを使用して構文を指定して MArgParser
クラスまたは MArgDatabase
クラスを使用してフラグを解析します。
Maya Python API コールと Maya コマンド コールは同一のスクリプトで混在させることができます。Maya Python API 呼び出しでモデルを修正した後、MPxCommand
を使用した「元に戻す」操作が適切にサポートされない場合、このようなスクリプトの「元に戻す」操作は正しく行われません。
これらのインタフェースを C++ Maya API 用に出荷している共有ライブラリと比較すると、唯一の違いは新しい OpenMayaMPx
モジュールです。このモジュールには Maya が提供する任意のプロキシまたは MPx
クラスへのバインドが含まれます。
Maya Python API のバインドは、Maya API の C++ インクルード ファイルを使用して生成しています。インクルード ファイルは Maya Python API でのプログラミングには必要ありませんが、バインドに含まれている機能と含まれていない機能を確認するのには便利です。C++ API のすべての項目がスクリプト可能なわけではありません。