Python, PyMELはとても便利ですが、どうしてもMELコマンドが必要になる場合があります。
特に多いのが、標準仕様として実装されたコマンドではなく、後から.melとして実装された追加コマンドが必要になるパターンです。

また、過去に自分で作ったプロシージャをPythonから呼び出す事もあるかと思います。

そういった時、通常であれば以下のようなコードを書くことになります。
import pymel.core as pm
# myProcはグローバルプロシージャ
cmd = "myProc -n \"test\" -a 24 -b 0.15 \"arg string\"";
pm.mel.eval(cmd)

MELコマンドを文字列として作成し、evalメソッドで実行します。既に汚いです。

この例では引数の数が少ないのでまだマシですが、コマンドが長くなると更に鬱陶しくなります。

こういう場合、もっと綺麗に書く方法があります。
pm.melクラスにコマンドをメソッドとして渡します。
import pymel.core as pm

pm.mel.myProc("arg string", n="test", a=24, b=0.15)

非常にスッキリしました。
pm.melクラスは、コマンドを動的に生成しているのでこのような使い方ができます。

ちなみに、pm.Melクラスでは動作しません。(何故?)

この方法では、globalとして定義された全てのMELプロシージャを呼び出す事が出来るので、maya.cmdsやPyMELに定義されていないコマンドを呼び出すのに非常に便利です。

ついでにMELプロシージャを定義する機能を探したのですが、私の方では見つかりませんでした。
PyMELを作る上で実装しているような気がするのですが・・・。
もし知っている方がいれば教えて頂けると幸いですm(_ _)m


自分で作りました。 >> PythonからMELプロシージャを定義する