2019年5月20日月曜日

mayaLTでPythonを実行する

mayaLT では Python スクリプトが使えない事になっています。
が、MEL には Python を実行するためのコマンドが存在していたりするのです。

その名も pythoncallPython

mayaLT の MELコマンドドキュメントには記載されていませんが、python コマンドの方は問題なく使えるようです。
まぁ callPython は値を返さないコマンドらしいので使えなくても問題ないですけどね。



で、ビルトイン関数であれば普通に結果を取得できます。
以前作成した四捨五入とか16進数変換とか.melファイルをインストールしなくても計算してくれます。
記述方法はこんな感じ。

{
    // 四捨五入
    float $v=1.2354678;
    $v=python("round("+$v+",2)");
    print("round: "+$v+"\n");
    
    // 16進数変換
    int $num=128;
    string $hex=python("hex("+$num+")");
    print("hex: "+$hex+"\n");
    
    // 10進数変換
    $hex="0xAA";
    $num=python("int("+$hex+")");
    print("num: "+$num+"\n");
    
}

しかも、こんな風にすると関数定義も出来てしまうというね。

{
     string $py;
     $py = "import maya.cmds as mc\n"
         + "def myFunc():\n"
         + "    mc.polyCube()\n";

    python($py);
    python("myFunc()");

}

ただし Python の print は反応しないっぽいので Hello Python. は作れません。
LT には mayapy.exe が無いから scriptEditor が標準エラー出力を受け取れないとかかな?

そして Python2.7 にはビルトイン関数に execfile() というのがあるのです。
試しに、こんな感じのスクリプトファイルを任意の場所(D:\pythonフォルダ)に作って、

import maya.cmds as cmds

cmds.polySphere(r=10)


スクリプトエディタで、こんな風に実行。


なんかうまくいったみたいです。


さすがにクラス定義まd・・・おや?誰か来たようだ。

0 件のコメント:

コメントを投稿