スクリプト化されたマウス ツール

スクリプト化されたマウス ツールは、3ds Max のビューポートで、マウスのクリックに基づいて一連のアクションを実行するために使用します。ツールは、スクリプト オブジェクト作成プラグインに便利です。詳細は「スクリプト プラグイン」を参照してください。

次に簡単な例を示します。

tool foo
(
local b
on mousePoint clickno do
if clickno == 1 then b = box pos:worldPoint else #stop
on mouseMove clickno do b.pos = worldPoint
)

このツールを使用すると、ユーザはビューポート内で点をクリックして、ボックスを作成できます。マウスをドラッグするとボックスが配置され、マウス ボタンを放すとツールが終了します。

このツールは、次のコマンドで開始できます。

startTool foo

ツールの構文は、ユーティリティ定義構文に似ています。ユーティリティ定義構文にはローカル変数、関数、およびイベント ハンドラがありますが、ツールにはユーザ インタフェース項目はありません。

ツールは、MAXScript の tool 定義構文を使用して作成されます。トップレベルの構文は、次のとおりです。

tool <tool_name> [ prompt:<string> ] [ numPoints:<number> ]( <tool_body> )

<tool_name> は、ツールを表す値を保持するために自動的に作成される変数の名前です。この変数のスコープは、現在の MAXScript スコープになります。またこの値は、 tool 宣言の結果として返されます。この値のクラスは MouseTool です。

オプションの prompt: キーワード引数で、ツール実行中に 3ds Max のプロンプト ラインに表示するプロンプト文字列を指定します。

オプションの numPoints: キーワード引数で、ツールで使用するポイント(マウス クリック)の最大数を指定します。ツールがまだ実行中にマウス クリックの numPoints 数に達した場合、ツールは停止して #stop 値を返します。

<tool_body> は、指定のカッコに囲まれています。これは、マウスのクリックを処理する関数やイベント ハンドラを定義する一連の句です。これらの句の詳細は「マウス ツール句」を参照してください。

次のメソッドでツールを呼び出します。

startTool <tool_name> [prompt:<string>] [snap:#3D|#2D] [numPoints:<number>]

<tool_name> は、ツールの定義で使用したツール名です。

オプションの prompt: キーワード引数で、ツール実行中に 3ds Max のプロンプト ラインに表示するプロンプト文字列を指定します。この文字列を指定した場合、ツールの定義で指定したプロンプト文字列は無視されます。

オプションの snap: キーワード引数では、スナッピングに対する上限を指定します。 snap パラメータを指定してもスナップはオンにならず、ユーザだけがインタフェースでスナップをオンにできます。ユーザが 2.5D または 3D スナッピングをオンにすると、 snap パラメータによってスナッピングが指定されたレベルに制限されます。

オプションの numPoints: キーワード引数で、ツールで使用するポイント(マウス クリック)の最大数を指定します。この値を指定すると、ツールの定義で指定したポイント数は無視されます。

startTool() から返される値は、 #stop (呼び出された変更ハンドラが #stop 値を返す場合や numPoints に到達した場合)または #abort (右クリックまたは[Esc]でツールが中断された場合)になります。

実行中のツールは、次のメソッドでも終了できます。

stopTool <tool_name>

ここで、

<tool_name> は、ツールの定義で使用したツール名です。

一般にこのメソッドは、コールバック関数や変更ハンドラ(「変更ハンドラおよびコールバック」を参照)、またはロールアウト内のタイマ イベント ハンドラ(「タイマ」を参照)で呼び出されます。