MAXScript から Python を実行

MAXScript で Python ライブラリを使用

Python.Import() を使用すると、Python ライブラリを読み込んで、MAXScript 内で使用することができます。 この例では、Python の組み込みメソッドおよび定数を読み込んで、pow() 関数を使用します。

bi = Python.Import "builtins"
--> <module 'builtins' (built-in)>
bi.pow 2 3
--> 8

モジュールがダーティになった場合は(キーワードが再定義された場合など)、Python.Reload() を使用して再度読み込むことができます。

Python.Reload bi
--> <module 'builtins' (built-in)>

int、bool、float、str などのシンプルな Python の型は、対応する MAXScript の型にコピーされます。リスト、タプル、辞書、クラスなどの複雑な型は、ラッパー オブジェクトによってマーシャリングされます。型のプロパティおよび関数には名前でアクセスできます。リストなどのシーケンス型の場合は、インデックスを使用して繰り返すことができます。MAXScript に渡された Python のリストは 1 をベースとします。

たとえば、Python タプルを作成してアクセスするには、以下を実行します。

bi = Python.Import "builtins"
tp = bi.tuple(#(1,2,3)) --(1, 2, 3)
print tp[1] -- output: 1
print tp[0] -- output: 3, same as tp[3]
bi.type(tp) -- output: <class 'tuple'>

Python 辞書を作成してアクセスするには、以下を実行します。

d = bi.dict one:1 two:2 three:3 -- {'one': 1, 'two': 2, 'three': 3}
d["four"] = 4
bi.print(d["four"]) -- 4

次に、Python から MAXScript に渡された、1 をベースとするリストの例を示します。

mystrlist = bi.str.split "an example string"
-- ['an', 'example', 'string']
mystrlist[1]
-- prints "an"

制限事項

Python にバインドされた MAXScript、メソッド、および関数における Python のラッピング方法が原因で、実行フレームは予測どおりに機能しなません。次に、Python.import() で機能しない呼び出しの例をいくつか示します。

MAXScript から Python を実行

MAXScript 内部から、Python のコマンドとステートメント(単一のコマンド/式または一連のステートメント)、または Python スクリプト(.py スクリプトなど)を実行できます。次のように python.Execute コマンドと python.ExecuteFile コマンドをそれぞれ使用します。

python.Execute "print('hello')"
python.ExecuteFile "demoBentCylinder.py"

たとえば次のように ExecuteFile コマンドを使用して完全パスを指定すると、3ds Max は、指定パスから Python ファイルを探します。

python.ExecuteFile @"C:\Program Files\Autodesk\3ds Max 2015\scripts\Python\demoBentCylinder.py"

そうでない場合は、3ds Max は次のディレクトリ以下から Python スクリプトを探します。

たとえば、3ds Max は、userscripts\\pythonuserscripts\\startup\\pythonscripts\\pythonscripts\\startup\\python のディレクトリ以下の Windows パスを検索します。

スクリプト結果は、[MAXScript リスナー](MAXScript Listener)ウィンドウに出力されます。

注: MAXScript で実行される Python スクリプトはスレッドセーフではありません。Python コマンドは必ず、メインの 3ds Max スレッドで実行されます。スクリプト内で個別のスレッドを生成すべきではありません(たとえば、Python スレッド モジュールを使用して)。

Python インタフェース メソッド

MAXScript の Python インタフェースには、MAXScript で Python を使用するためのメソッドが含まれています。 MAXScript で

showinterface python

を実行すると、MAXScript リスナーに、使用可能なメソッドのリストが表示されます。以下、これらのプロパティ、メソッド、引数について説明します。

注:

これらは Python インタフェースのプロパティとしてリストされますが、引数(Python モジュールの名前)を取り、読み込まれたモジュールへの参照を返すという点では、メソッドと同様に動作します。上記の例を参照してください。