Używanie języka AutoLISP w makrach

Tworzenie poleceń używających języka AutoLISP jest bardziej zaawansowanym sposobem korzystania z funkcji dostosowywania programu.

Użytkownik może używać zmiennych i wyrażeń AutoLISP do tworzenia makr, które wykonują złożone zadania. Gdy program wczytuje plik CUI/CUIx, wczytuje również plik MNL o tej samej nazwie i takim samym położeniu. Umieszczanie kodu AutoLISP w pliku MNL jest skutecznym sposobem wczytywania niestandardowych poleceń, które mogą być użyte w makrze.

Uwaga:
  • Program AutoCAD LT nie obsługuje automatycznego wczytywania plików MNL, ale pliki można wczytywać za pomocą funkcji LOAD języka AutoLISP z innego pliku LISP.
  • W programie AutoCAD, tylko w systemie Windows (opcja niedostępna w programie AutoCAD LT) można określić dodatkowe pliki AutoLISP do wczytania w edytorze Dostosuj interfejs użytkownika (CUI). Tworzenie poleceń używających języka AutoLISP jest bardziej zaawansowanym sposobem korzystania z funkcji dostosowywania programu. Eksperymenty i praktyka pozwolą na efektywne korzystanie z tej funkcji.

Przykłady

Wstępnie ustawione wartości

Poniższy przykład przedstawia trzy makra poleceń używane do wstawiania bloków.

Monity makra polecenia dla szerokości okna.

^C^C^P(setq WINWID (getreal "\nEnter window width: ")) ^P

Monity makra polecenia dla grubości ściany.

^C^C^P(setq WALLTHK (getreal "\nEnter wall thickness: ")) ^P

Makro polecenia wstawia blok o nazwie „okno” i monituje o podanie punktu wstawienia i kąta obrotu.

^C^C_INSERT window XScale !WINWID YScale !WALLTHK

X bloku jest skalowana bieżącej szerokości okna, a jego oś Y do bieżącej grubości ściany.

Zmiana wielkości uchwytu

Ten przykład obejmuje dwa makra poleceń zwiększające lub zmniejszające bieżącą wartość zmiennej systemowej GRIPSIZE.

Makro polecenia zwiększa wartość zmiennej systemowej GRIPSIZE o 1.

^P(setvar "gripsize"(1+ (getvar "gripsize")))(redraw)(princ)

Makro polecenia zmniejsza wartość zmiennej systemowej GRIPSIZE o 1.

^P(setvar "gripsize"(1- (getvar "gripsize")))(redraw)(princ)

Aby do tych makr poleceń dodać kontrolę prawidłowości, nie można używać wartości mniejszych niż 0 i większych niż 255 w zmiennej systemowej GRIPSIZE.

Monit w celu przyjęcia danych użytkownika

W poniższym przykładzie jest wysyłany monit o podanie dwóch punkty i rysowany prostokąt z segmentów polilinii o wierzchołkach w określonych punktach.

^P(setq a (getpoint "Enter first corner: "));\+
(setq b (getpoint "Enter opposite corner: "));\+ 
pline !a (list (car a)(cadr b)) !b (list (car b)(cadr a)) c;^P
Wywoływanie makra przypisanego do elementu menu rozwijanego (tylko system Windows)

Używając poniższej składni, można programowo wywołać makro elementu menu rozwijanego:

(menucmd "Gcustomizationgroup.element_ID=|")

Poprzednia składnia działa tylko wtedy, gdy element menu jest częścią menu, które znajduje się na pasku menu programu i jest dostępne do użycia.