Pythonの関数でMelプロシージャを生成する
pymelを見ていたら少し面白いものを見つけたので紹介
py2melProcというものです。
簡単に紹介するとPythonの関数をラップしてmelプロシージャを生成するというものだそうです。
ごちゃごちゃ言っても僕がわかりにくいので試してみます。
まず、生成したいプロシージャのもととなるPythonコードを用意します。
import maya.cmds as cmds
def ObjList():
obj = cmds.ls(sl=True)
for i in range(len(obj)):
print obj[i]
ObjList()
上のコードを実行すると現在選択しているオブジェクトがリストされるというような単純なpythonです
よく使うコードです
次にpy2melProcの用意をします。先ほどのコードに付け加えていきます。
import maya.cmds as cmds
import pymel.tools.py2mel as py2mel
def ObjList():
obj = cmds.ls(sl=True)
for i in range(len(obj)):
print obj[i]
py2mel.py2melProc(ObjList, procName='Py_ObjList', evaluateInputs=True)
Maya
Python
MEL
【Python】Pythonの関数でMelプロシージャを生成する【Mel】
October 20, 2017
PyMel見ていたら少し面白いものを見つけたので紹介
py2melProcというものです。
何かというとPythonの関数をラップしてmelプロシージャを生成するというものだそうです。
ごちゃごちゃ言ってもわかりにくいので試してみます。
まず、生成したいプロシージャのもととなるPythonコードを用意します。
上のコードを実行すると下の画像のように現在選択しているオブジェクトがリストされます
まあよく使うコードですね。
次にpy2melProcの用意をします。先ほどのコードに付け加えていきます。
py2melProcの簡単な説明は
MayaがPythonコールバックをサポートしていないとき
Pythonスクリプトを呼び出すのに便利なもの
Pythonのargsはデフォルトの値がなく、デフォルトでは文字列になります。
unction
呼び出し可能なPythonオブジェクト
Pythonオブジェクトを表す文字列が渡された場合は、
すべてのパッケージとサブモジュールを含める必要があります。procName
作成するメルプロシージャの関数名
Noneの場合は関数の名前がそのまま使用されます。evaluateInputs
Trueの時、複雑なPythonオブジェクトを引数として渡すことができます。*args
実装はされていない**kwargs
実装されていない可能性がある?
この状態で一度実行し、melのタブに移動します。
今回はPy_ObjListという名前でprocNameを設定したので
ディスカッション
コメント一覧
まだ、コメントがありません