スクリプト ユーティリティ パネル
 
 
 
 

   

ユーザ インタフェースの作成 - クイック ナビゲーション

スクリプト ユーティリティ パネルは、MAXScript の utility 定義構文を使用して作成します。

トップレベルの構文は、次のとおりです。

utility <var_name> <description_string> [rolledUp:<boolean> ] [silentErrors:<boolean> ]
( 
<utility_body> 
)

<var_name>は、スクリプト ユーティリティ パネルを表す値を保持するために、自動的に作成されたグローバル変数の名前です。

<description_string>は、MAXScript ロールアウトの[ユーティリティ]リスト内のユーティリティの説明に使用される文字列です。

オプションの rolledUp: パラメータには、ユーティリティ ロールアウトが最初にロール アップされるかどうかを指定します。 true に設定すると、ユーティリティ ロールアウトは最初にロール アップされます。既定値は false です。

オプションの silentErrors: パラメータは、スクリプト ユーティリティの実行時に MAXScript ランタイム エラーのメッセージを表示するかどうかを制御します。このパラメータを false に設定すると、エラーメッセージがリスナーに、場合によってはポップアップ エラー ダイアログ ボックスに表示され、ユーティリティの続行は停止されます。このパラメータを true に設定すると、エラーメッセージは表示されず、ユーティリティの続行が許可されます。 true に設定すると、ユーザが MAXScript エラー メッセージと混同する可能性のある配布されたスクリプト プラグインの場合に便利です。既定値は false です。

<utility_body>は、括弧で囲まれている必要があり、ユーザ対話を処理する関数およびイベント ハンドラとともに、ユーティリティに表示されるユーザ インタフースを定義する一連の句です。詳細は、「ユーティリティ句」を参照してください。

ここでは、現在選択したものにオブジェクトの位置を展開するユーティリティを実装する簡単な例を挙げます。この例では、 Spread objects エントリを[ユーティリティ]リストにインストールします。 Spread objects ロールアウトを開くと、3 つのチェック ボックスと 1 つのスプレッド量スピナーがあります。スプレッド スピナー イベント ハンドラは、ユーザがスピナーを調整するときは必ず呼び出されます。イベント ハンドラ式では選択したオブジェクトの新しい位置が計算され、スプレッドを制御するために各チェック ボックスの状態がテストされます。

例:

utility spread "Spread objects" -- ユーティリティ名と説明文字列を定義します。
(
locallast_amt = 0 -- ローカル変数を定義し、初期化します。
checkbox x "Spread in x" -- 3 つのチェック ボックスを作成します。
checkbox y "Spread in y"
checkbox z "Spread in z"
spinner spread "Spread amount:" range:[-1000,1000,0] -- スピナーを作成します。
on spread changed amt do -- スピナー値の変更時に...
(
delta = amt - last_amt -- 選択したオブジェクトごとに現在
for obj in selection do -- および前回の値の差を計算します。
(
-- 現在の位置と選択の中心に基づいた新しい位置を計算します。
p = obj.pos + normalize (obj.pos - selection.center) * delta
if x.checked then obj.pos.x = p.x -- チェックボックスに x が表示される場合は、X の位置を適用します。
if y.checked then obj.pos.y = p.y -- チェックボックスに y が表示される場合は、Y の位置を適用します。
if z.checked then obj.pos.z = p.z -- チェックボックスに z が表示される場合は、Z の位置を適用します。
)
last_amt = amt -- スピナー値を前回の値として格納します。
) -- "on spread changed" の終了
) -- ユーティリティ定義の終了

このスクリプトで書かれた[ユーティリティ]パネル ロールアウトは、次の図のようになります。[閉じる]ボタンは、ユーティリティ ロールアウトの MAXScript によって自動的に作成され、ロールアウトを閉じます。

スプレッド オブジェクト ロールアウト

ユーティリティ定義の評価により、いくつかのことが実行されます。ロールアウト クラスのインスタンスであり、ユーティリティ定義を含む新しい値が作成されます。この値は名前付きグローバル変数に割り当てられ、ユーティリティの説明が MAXScript ロールアウトの[ユーティリティ]リストにインストールされます。この時点で、ユーザはユーティリティを[ユーティリティ]リストから選択でき、ユーティリティのロールアウトが開きます。

注:

同じ説明のあるスクリプト ユーティリティが既に存在する場合は、古いロールアウトが [ユーティリティ]パネルで開かれていても、新しいロールアウトに置き換えられます。これにより、ユーティリティを順次部分開発できます。定義を修正して評価するたびに、古いバージョンは新しいものに置き換えられます。

関連事項