Odwołania do menu rozwijanego lub menu skrótów

Używając podobnego sposobu jak przy aktywacji podmenu, można uaktywniać lub wyłączać inne menu rozwijane lub menu skrótów. Jest to nazywane odwołaniem do menu.

Istnieją dwie metody tworzenia odwołania do menu rozwijanego lub menu skrótów: względna i bezwzględna. Odwołanie bezwzględne używa położenia bezwzględnego elementu menu w hierarchii menu. W przypadku odwołania względnego używane są nazwy grup dostosowywania i ID elementu. Odwołania względne są zalecane z powodu swego dynamicznego charakteru.

Odniesienie bezwzględne

Oprócz odniesienia do elementu menu można uaktywnić lub wyłączyć element menu za pomocą następującej składni:

$Pn.i=xxx

$ wczytuje część menu; Pn określa aktywną część menu (od 0 do 16); i określa numer elementu menu; a xxx (jeżeli istnieje) określa ciąg nieaktywnych lub zaznaczonych znaków.

Przy użyciu składni $Pn=xxx w następującym przykładzie dodano znacznik do elementu 1 menu z aliasem POP7.

$P7.1=!.

Poniższy przykład (w programie AutoCAD) wykorzystuje funkcję AutoLISP menucmd do wywołania elementu menu rozwijanego lub menu skrótów. Ponieważ pliki dostosowywania zmieniają się (z powodu wczytywania częściowych plików CUIx), poniższa składnia nie będzie działać we wszystkich przypadkach.

(menucmd "P1.2=~")

Składnia bazuje na położeniu elementu menu i nie działa, jeżeli nowy element jest wstawiany przed POP1 za pomocą polecenia WCZYTAJCUI.

Numerowanie elementów menu następuje kolejno, niezależnie od hierarchii menu.

W celu ułatwienia adresowania elementów niezależnie od ich położenia w hierarchii menu można użyć poniższych formuł:

$P@.@=xxx

Odwołuje się do bieżącego lub ostatnio wybranego polecenia.

$P@.n=xxx

Odwołanie do elementu n w bieżącym lub ostatnio wybranym menu.

Odwołanie względne

Można użyć odniesienia do pozycji menu rozwijanego lub menu skrótów w oparciu o grupę adaptacji i identyfikator elementu, korzystając z funkcji AutoLISP menucmd . Poniższy przykład pokazuje odwołanie do pozycji menu przez jej ID elementu.

(menucmd "Gcustomizationgroup.element_id=value")

W poniższym przykładzie zaprezentowano zastosowanie składni odwołania względnego do wyłączenia pozycji menu ID_Line, która jest przechowywana w grupie dostosowywania ACAD. Funkcjonuje to niezależnie od położenia pozycji w menu.

(menucmd "GACAD.ID_Line=~")

Jeśli znana jest zawartość głównego pliku adaptacji (CUIx), można utworzyć częściowy plik CUIx z dodatkowym elementem menu odnoszącym się do głównego pliku CUIx. W ten sposób częściowe pliki CUIx i określone bazowe pliki adaptacji mogą ze sobą współpracować.

Dostęp do stanu etykiet za pomocą języka AutoLISP

Funkcja menucmd języka AutoLISP akceptuje ciągi poleceń $Pn=xxx, ale bez wiodącego znaku $. Dla tych funkcji część xxx tego ciągu poleceń może przyjmować specjalne wartości.

Pn.i=?

Zwraca bieżący stan zablokowania i zaznaczenia określonej pozycji jako ciąg (na przykład znak ~ dla pozycji zablokowanej, !. dla pozycji ze znacznikiem wyboru i "" dla pozycji, która nie jest nieaktywna ani zaznaczona).

Pn.i=#?

Zwraca ten sam typ ciągu, jak opisano dla Pn.i=?, ale z przedrostkiem Pn.i=. Jest to przydatne w połączeniu ze znakiem @, ponieważ zwracany jest wtedy bieżący numer elementu i nazwa menu.

Na przykład, jeśli piąta pozycja sekcji POP6 jest obecnie zablokowana, wówczas kod funkcji menucmd zwraca następujące wartości ciągów.

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