<rcmenu_body> は、次に示すようにスクリプト化された右クリック メニュー句のシーケンスで構成されています。
スクリプト化された右クリック メニュー句は、スクリプト化された右クリック メニューのコンポーネントを定義し、次の 3 つの基本的な項目のいずれかになります。
ローカル変数、関数、および構造体定義は、範囲がスクリプト化された右クリック メニューの変数、関数、および構造体です。これらのローカルは、スクリプト化された右クリック メニューの値が存在する限り存在します。スクリプト化された右クリック メニューの値は、スクリプト化された右クリック メニューの値が再定義または削除されるまで存在します。ローカル変数は、選択オブジェクトなどの右クリック メニューに関連付けられた作業データの保存に特に便利です。
は、メニュー項目、区切り記号、サブメニューなどの右クリック メニューに表示されます。ユーザがユーザ インタフェース項目を操作したとき(メニュー項目を押す、サブメニューを開くなど)に発生させる処理を指定するために使用します。これらのユーザ アクションは名前付きイベントを生成し、ユーザ アクションが発生すると指定したオプションのイベント ハンドラが呼び出されます。
ローカルの可視性、スクリプト化されたローカルの右クリック メニューへの外部コードからのアクセスについては、ユーティリティ ロールアウトの場合と同様です。詳細は、「ロールアウト コード内のローカル、関数、構造体、ユーザ インタフェース項目の可視性」および「外部コードからロールアウトのローカルおよび他の項目へのアクセス」を参照してください。ユーティリティ ロールアウトおよびスクリプト化された右クリックメニューにおいて、ユーザ インタフェース項目に付けられた名前は、項目を表す値を保持するローカル変数の名前として自動的に使用されます。また、イベント ハンドラ関数を項目に関連付けるためにも使用されます。これらの変数における範囲の違いとして、ユーティリティ ロールアウトではロールアウトのローカルとなり、スクリプト化された右クリック メニューではスクリプト化されたクリック メニューのローカルとなることが挙げられます。つまり、スクリプト化された右クリック メニュー内のすべてのユーザ インタフェース項目の名前は、 subMenu に存在する項目を含め、スクリプト化された右クリック メニュー内で一意でなければなりません。
<rcmenu_clause> は、次のように定義されます。
<rcmenu_clause> ::= <local_variable_decl> | <local_function_decl> | <local_struct_decl> | <user_interface_item> | <event_handler>
<local_variable_decl> 、 <local_function_decl> 、 <local_struct_decl> は、MAXScript 内のローカル変数、関数、構造体の定義とまったく同義です。
<local_variable_decl> ::= local <decl> { , <decl> } <decl> ::= <name> [ = <expr> ] -- optional initial value
<local_struct_decl> ::= struct <name> ( <member> { , <member> })<member> ::= ( <name> [ = <expr> ] | <local_function_decl> )
グローバル変数は、スクリプト化された右クリック メニュー句としては宣言できませんが、イベント ハンドラのスクリプト内では宣言できます。変数名がグローバル変数を確実に参照するようにするには、変数名をスクリプト内で右クリック メニューを定義する直前にグローバルとして宣言します。
スクリプトを作成するときは、ローカル変数およびグローバル変数を明示的に宣言することをお勧めします。暗示的な宣言は簡易的に提供されるものであり、通常、リスナーでインタラクティブに作業する場合や短いスクリプトを作成する場合に使用します。長いスクリプトを作成する場合は、変数を明示的に宣言するとエラーを軽減し、コードが読みやすくなります。また、特にグローバル変数を必要な場合を除き、すべての変数をローカルとして宣言することをお勧めします。この理由については、「変数のスコープ」を参照してください。
<user_interface_item> は、右クリック メニューに表示される個々のメニュー項目、区切り記号、またはサブメニュー ユーザ インタフェース項目を定義します。これらのユーザ インタフェース コントロール項目については、「RCMenu ユーザ インタフェース項目」を参照してください。
イベント ハンドラ <event_handler> は、スクリプト化された右クリック メニューに対する特殊な関数定義ローカルで、ユーザがメニュー項目をクリックしたときに処理を起動するために使用します。このユーザ アクションは名前付きのイベントを生成し、このイベントに対するイベント ハンドラを呼び出します。ハンドラを定義する構文は次のようになります。
<item_name> は、このハンドラが結びついている項目の名前を指定します。 <event_name> には、処理するイベントのタイプを指定します。
ユーザ インタフェース項目のイベントには次のタイプだけがあります。
picked ハンドラ式は、右クリック メニューでメニュー項目が選択されたときに実行されます。オブジェクトの作成、モディファイヤの追加など、すべての MAXScript アクションはこの式で実行できます。
右クリック メニューの特定のメニュー項目に対して指定するイベント ハンドラに加え、ユーザが右クリック メニュー全体を初めて開いたときに呼び出されるハンドラ関数を定義できます。このイベント ハンドラは、初期化コードに便利です。イベント ハンドラを定義する構文は次のようになります。