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.

Proměnné a výrazy jazyka AutoLISP můžete použít k vytváření maker provádějících 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é lze použít v makru.

Poznámka: (Pouze Windows) V editoru Upravit uživatelské rozhraní můžete určit další soubory jazyka AutoLISP, které mají být načteny. Vytváření 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.

Příkazové makro zobrazí výzvu k zadání šířky okna.

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

Příkazové makro zobrazí výzvu k zadání tloušťky stěny.

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

Příkazové makro 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.

Příkazové makro zvýší hodnotu systémové proměnné GRIPSIZE o 1.

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

Příkazové makro sníží hodnotu systémové proměnné GRIPSIZE o 1.

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

V zájmu přidání ověřování platnosti do těchto maker příkazů nelze pro systémovou proměnnou GRIPSIZE použít hodnotu menší než 0 nebo 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 pak 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 můžete 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 aplikace a dostupné pro použití.