他の.ms(MAXScript)を読み込む方法


概要

メインのmaxscriptで他のmaxscript内に書いてある関数を利用したい!
等といった際にどうすればいいのか。

他の言語では include import とか言ったりするやつです。
(厳密に同じわけではないです。)

include と fileIn の2つがある

maxscriptでは上の2つのコマンドが読み込むコマンドとして準備されている。

include : スクリプト内へのスクリプトの組み込み
ヘルプから引用

MAXScript には、コンパイル時ソースファイル組み込み機能があり、大きいスクリプトを小さいファイルに分割して、スクリプトの任意の位置に組み込むことができます。
include <file>構文を使って、その位置にファイルの内容を効果的に挿入できます。

fileIn : スクリプトの実行
ヘルプから引用

次のようにリスナーから、または他のスクリプト内から fileIn() メソッドを使用してスクリプトを実行することもできます。

何を言っているかは3dsMaxを立ち上げてMAXScript Listenerで実際に走らせてみると分かりやすい。

include では...
書いてあるスクリプトの文章が書き出されて最後に OK と出てくる。

fileIn では...
スクリプトが実行されて処理が行われる。

結局 includeとfileInは何が違う?

公式サイトの双方の説明、特にincludeの方を見たことをま大雑把にまとめる。

fileIn

  • スクリプトの内容がグローバル スコープ コンテキスト内にコンパイルされる

include

  • 名前付きファイルの内容に効果的に置換
  • MAXScript スコープは組み込まれたファイル内に保持
  • include は、名前、リテラル、句読点などの新しいトークンが必要とされる位置であれば、どこにでも入れることができる

まとめ

  • スコープの違い
  • 実行か、読み込みか

これを覚えておけばとりあえず問題なさそう。
エラーが起きる場合の検証は機会と時間があればやってみます。