サブメニューをアクティブにするのと同様の方法で、プルダウン サブメニューまたはショートカット サブメニューをアクティブまたは非アクティブにすることができます。これを、 「メニュー参照」といいます。
プルダウン メニューまたはショートカット メニューは、2 つの異なる方法(相対参照と絶対参照)を使用して参照することができます。 絶対参照にはメニュー階層内のメニュー項目の絶対位置を使用します。相対参照は、カスタマイズ グループ名と要素 ID を使用します。その動的特性により参照方法として相対参照が推奨されますが、AutoCAD LT では使用できません。
次の構文を使用すると、メニュー項目を参照できる他、メニュー項目をアクティブまたは非アクティブにできます。
$Pn.i=xxx
$ でメニュー セクションをロードします。Pn には、アクティブなメニュー セクション(0 から 16 が有効な値)を指定します。 i は、メニュー項目番号です。 xxx (指定されている場合)には、グレー表示またはマークされる文字列を指定します。
次の例では、$Pn=xxx 構文を使用して、POP7 エイリアスでメニューの項目 1 にチェック マークを追加します。
$P7.1=!.
次の例は、AutoCAD で、AutoLISP の menucmd 関数を使用して、プルダウン メニュー項目またはショートカット メニュー項目を参照します。(部分 CUIx ファイルをロードすることにより)カスタマイズ ファイルは動的となるため、次の構文がすべての場合に正しく動作するとは限りません。
(menucmd "P1.2=~")
この構文はメニュー項目の位置に依存しているため、新しい項目が CUILOAD コマンドによって POP1 の前に挿入された場合は動作しません。
メニュー項目の番号は、メニュー階層に関係なく連続しています。
メニュー階層での項目の位置に関係なく、項目自体を簡単にアドレス指定するには、以下を使用します。
現在選択されている、または最後に選択されたコマンドを参照します。
現在選択されている、または最後に選択されたメニューの項目 n を参照します。
AutoLISP の menucmd 関数を使用して、カスタマイズ グループと要素 ID に基づいてプルダウン メニュー項目またはショートカット メニュー項目を参照することができます。次の構文では、要素 ID に基づいてメニュー項目を参照します。
(menucmd "Gcustomizationgroup.element_id=value")
次の例は、相対参照の構文を使用して、ACAD カスタマイズ グループに格納されているメニュー項目 ID_Line を無効にします。これは、メニュー内のメニュー項目の位置に関係なく動作します。
(menucmd "GACAD.ID_Line=~")
メイン カスタマイズ(CUIx)ファイルの内容がわかっている場合は、メイン CUIx ファイルを参照する追加のメニュー項目を含む部分カスタマイズ(CUIx)ファイルを作成できます。この方法では、部分 CUIx ファイルと指定された基準カスタマイズ ファイルを一緒に動作させることができます。
AutoLISP の menucmd 関数は、$Pn=xxx コマンド文字列を受け入れますが、先頭の $ は必要ありません。この関数では、コマンド文字列の xxx 部分に特定の値を指定できます。
指定した項目が現在使用不可能になっている、またはマークが付いているといった状態を文字列で返します(たとえば、使用不可能な項目なら ~、チェック マークの付いた項目なら !.、グレー表示もされていなくマークも付いていない項目なら "")。
Pn.i=?の場合に説明したのと同じタイプの文字列を返します。しかし、この場合は Pni= という接頭語が付きます。これは、実際のメニューと項目番号が返されるため、@ 書式と組み合わせる場合に便利です。
たとえば、POP6 セクションの 5 番目の項目が使用不可能になっている場合、次に示す menucmd コードは、次のような文字列の値を返します。
(menucmd "P6.5=?") returns "~" (menucmd "P6.5=#?") returns "P6.5=~"