O použití jazyka AutoLISP v makrech

Vytváření příkazů, které používají jazyk AutoLISP, je pokročilejším způsobem využití funkcí uživatelských úprav aplikace.

Pomocí proměnných a výrazů jazyka AutoLISP je možné vytvořit makra provádějící složité úkoly. Když aplikace načte soubor CUI/CUIx, načte také soubor MNL se stejným názvem a ve stejném umístění. Umístění kódu jazyka AutoLISP do souboru MNL je efektivní způsob načtení vlastních příkazů, které je možné použít v makru.

Poznámka:
  • Aplikace AutoCAD LT nepodporuje automatické načítání souborů MNL, soubory však je možné načíst z jiného souboru LISP pomocí funkce jazyka AutoLISP LOAD.
  • Pouze v aplikaci AutoCAD pro systém Windows (není dostupné v aplikaci AutoCAD LT) je možné určit další soubory jazyka AutoLISP, které chcete načíst, v editoru Upravit uživatelské rozhraní (CUI). Tvorba příkazů, které používají jazyk AutoLISP, je pokročilejším způsobem využití funkcí uživatelských úprav aplikace. Pokusy a praxe vám pomohou v efektivním využívání této vlastnosti.

Příklady

Přednastavené hodnoty

Tento příklad se skládá ze tří příkazových maker, která se používají k vložení bloku.

Makro příkazu zobrazí výzvu k zadání šířky okna.

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

Makro příkazu zobrazí výzvu k zadání tloušťky stěny.

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

Makro příkazu vloží blok s názvem „window“ (okno) a vyzve k zadání bodu vložení a otočení.

^C^C_INSERT window XScale !WINWID YScale !WALLTHK

Osa X bloku se vztahuje na aktuální šířku okna a osa Y na aktuální tloušťku stěny.

Změna velikosti uzlů

Tento příklad obsahuje dvě příkazová makra, která zvýší nebo sníží aktuální hodnotu systémové proměnné GRIPSIZE.

Makro příkazu zvýší hodnotu systémové proměnné GRIPSIZE o 1.

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

Makro příkazu sníží hodnotu systémové proměnné GRIPSIZE o 1.

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

Kontrola validity u těchto maker zajišťuje, že u systémové proměnné GRIPSIZE není možné použít hodnotu menší než 0 a větší než 255.

Výzva k zadání uživatele

V následujícím příkladu dojde k vyzvání uživatele k zadání dvou bodů a poté se nakreslí obdélníková křivka, přičemž zadané body se použijí jako rohy.

^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
Volání makra přiřazeného k položce rozevírací nabídky (pouze Windows)

Pomocí následující syntaxe je možné programově spustit makro u položky rozevírací nabídky:

(menucmd "Gcustomizationgroup.element_ID=|")

Předchozí syntaxe funguje pouze v případě, že je položka nabídky součástí nabídky umístěné na panelu nabídek programu a je dostupná k použití.