Odkazování na rozevírací nebo místní nabídku

Pomocí podobného postupu, jakým se aktivují podnabídky, je možné aktivovat nebo deaktivovat jinou rozevírací nebo místní nabídku. Toto se nazývá odkazování nabídky.

Rozevírací nebo místní nabídky je možné odkazovat dvěma různými způsoby: relativně a absolutně. Absolutní odkaz používá absolutní pozici položky nabídky v hierarchii nabídek. Relativní odkaz používá skupinu uživatelských úprav a ID prvku. Vzhledem k dynamické povaze se doporučuje relativní odkazování.

Absolutní odkazování

Kromě vytvoření odkazu na položku nabídky je možné pomocí následující syntaxe aktivovat nebo deaktivovat položku nabídky:

$Pn.i=xxx

Znak $ načte sekci nabídky; znakyPn určují aktivní část nabídky (platné hodnoty jsou 0 až 16); znak i určuje číslo položky nabídky a prvek xxx (pokud je zadán) určuje řetězec zašednutých nebo označených znaků.

Následující příklad přidá pomocí syntaxe $Pn=xxx zatržítko k položce 1 v nabídce s aliasem POP7.

$P7.1=!.

Následující příklad se v aplikaci AutoCAD pomocí funkce jazyka AutoLISP menucmd odkáže na položku rozevírací nebo místní nabídky. Vzhledem k dynamické povaze souborů uživatelských úprav (z důvodu načítání částečných souborů CUIx) nebude následující syntaxe ve všech případech fungovat.

(menucmd "P1.2=~")

Tato syntaxe spoléhá na umístění položky nabídky a nebude fungovat, pokud je před část POP1 vložena nová položka pomocí příkazu NAČTICUI.

Číslování položek nabídky je postupné bez ohledu na hierarchii nabídky.

Pokud se chcete snadno odkázat na položku bez ohledu na její umístění v hierarchii nabídek, můžete použít následující výrazy:

$P@.@=xxx

Odkazuje na aktuální nebo poslední vybraný příkaz.

$P@.n=xxx

Odkazuje na položku n v aktuální nebo naposledy vybrané nabídce.

Relativní reference

Můžete vytvořit odkaz na položku rozevírací nebo místní nabídky podle její skupiny uživatelských úprav a ID prvku pomocí funkce jazyka AutoLISP menucmd . Následující syntaxe vytvoří odkaz na položku nabídky podle jejího ID prvku.

(menucmd "Gcustomizationgroup.element_id=value")

Následující příklad používá syntaxi relativního odkazu k deaktivaci položky nabídky ID_Line, která je uložena ve skupině uživatelských úprav ACAD. Tento příklad funguje bez ohledu na umístění položky v nabídce.

(menucmd "GACAD.ID_Line=~")

Pokud znáte obsah hlavního souboru uživatelských úprav (CUIx), můžete vytvořit částečný soubor uživatelských úprav (CUIx) s další položkou nabídky, která odkazuje na hlavní soubor CUIx. Tímto způsobem mohou fungovat částečné soubory CUIx společně s určitými základními soubory uživatelských úprav.

Přístup jazyka AutoLISP ke stavu popisku

Do funkce jazyka AutoLISP menucmd je možné zadat řetězce příkazu $Pn=xxx, ale bez úvodního znaku $. U těchto funkcí může část xxx příkazu nabývat speciálních hodnot.

Pn.i=?

Vrací aktuální stav vypnuto a označeno pro určenou položku jako řetězec (například ~ pro zakázanou položku, !. pro položku se značkou zaškrtnutí a "" pro položku, která není ani zašedlá, ani označená).

Pn.i=#?

Vrací stejný typ řetězce, jaký je popsán v části Pn.i=?, ale s předponou Pn.i=. Toto je užitečné ve spojení s formami @, protože je vrácena skutečná nabídka a číslo položky.

Pokud je například pátá položka v části POP6 deaktivována, následující kód funkce menucmd vrátí následující řetězcové hodnoty.

(menucmd "P6.5=?")     returns  "~" 
(menucmd "P6.5=#?")    returns  "P6.5=~"