Základy AutoLISPU AutoLISP je programovací jazyk, který muže automatizací často používaných opakovaných úloh podstatně zvýšit vaší produktivitu. Nabízí náhled do vnitřního fungování AutoCADu a muže sloužit jako vynikající základ pro učení pokročilejším automatizačním metodám, například Object-ARX a VBA. Procedura AutoLISPu nabízí kompletní ovládání uživatelských interakcí a svého chování po načtení.
Většina procedur AutoLISP definuje název příkazu, který potom zadáte na příkazovém řádku a spustíte proceduru. Některé procedury mají dialog, který pomáhá vybrat volby a nastavení.
Hlavní užitečné funkce Visual LISPu jsou: 1. Kontrola syntaxe a zvýrazňování, které pomáhá opravit chyby syntaxe. 2. Kompilace souboru z důvodu bezpečnosti a rychlejšího běhu. 3. Ladění chyb s podporou hledání chyb krokováním zdrojového kódu. 4. Inspekční okno a kukátka pro sledování hodnot nebo prohlížení proměnné při běhu programu. 5. Kontextová nápověda. 6. Správa aplikací s více soubory z okna projektu. 7. Kompilace více projektů a také jiných souborů pomocí průvodce aplikací. 8. Historie konzoly, která umožňuje znovu vyvolat dříve zadané informace.
Otevření okna Visual LISP Z nabídky vybrat položky Nástroje Standardní Nabídka
AutoLISP
Editor Visual LISP.
Panel nástrojů Zobrazeni
Panel nástrojů Laděni Panel nástrojů Nástroje
Panel nástrojů Hledání
Okno konzoly
Po otevření souboru záhlaví okna zobrazením ikony prázdného listu papíru znázorní, že soubor ještě nebyl změněn. Jestliže v souboru provedete Libovolné změny Visual LISP k obrázku přidá tužku, která znázorňuje, že soubor byl upraven.
Soubory AutoLlSPu mají příponu .lsp. Z důvodů bezpečnosti a rychlosti však můžete procedury AutoLiSPu zkompilovat jako soubory s příponami .fas nebo .vlx. AutoCAD načte nejdřív soubor s příponou .vlx, potom .fas a nakonec soubor s příponou .lsp. Jestliže máte například soubor redline.vlx a redline.lsp, AutoCAD načte soubor redline.vlx. Jestliže je však soubor .Isp novější než soubor, .fas, AutoCAD načte soubor .lsp. Jestliže je procedura AutoLISPu asociována s nabídkou, má příponu .mnl. Dialog Načíst/Uvolnit aplikace
Použití procedur AutoLISPU v AutoCADu Při načtení procedury AutoLispu můžete proceduru použít v AutoCADu . Použití procedury závisí na její povaze. Jestliže program vytvoří funkci, můžete na příkazovém řádku zadat název funkce jako kterýkoli jiný příkaz AUTOCADu. Většina procedur má výzvy, které vás při jejich použití celým procesem provedou.
Použití procedur AutoLISPU v AutoCADu Příklad Procedura, která nakreslí kružnici o poloměru 3.
Řádek 1 začíná levou závorkou, která je spárována pravou závorkou na řádku 5. Tento pár závorek ohraničuje tělo funkce. Řádek začíná slovem defun, což znamená DEFinici FUNkce (DEFine FUNction) a funkce se nazývá circle3. Jestliže před název funkce umístíte c:, můžete ji v AutoCADu použít pouze zadáním circle3 na příkazovém řádku jako u jiného libovolného příkazu AutoCADu. (c: znamená příkaz (command), je možné zadat jen circle3, ale pak byste museli proceduru spustit zadáním na příkazovém řádku (circle3). Poslední položka na řádku 1 je (/ pt). Slovo pt po lomítku znamená, že pt je lokální proměnná. Lokální proměnná se používá pouze ve vlastní proceduře a její obsah není pro použití v jiných procedurách zachován.
Řádek 2 je nejjednodušší řádek v celé proceduře - pouze na příkazovém řádku zobrazí zprávu Please click a point:. Text v uvozovkách po slově princ je vždy zobrazen na příkazovém řádku AutoCADu. V tomto případě je zpráva použita jako výzva, která oznamuje uživateli potřebu vybrat bod.
Řádek 3 je typický pro procedury AutoLISPu. Začíná se číst od nejvnitřnější závorky směrem ven. Proto zachování této zásady obdržíte nejdříve (getpoint). Při čtení směrem ven obdržíte (setq pt (get point)), příkaz setq znamená, že proměnná pt je nastavena na libovolný výsledek. Jestliže zadáte souřadnice 2,2 obsah proměnné pt bude 2,2.
Použití rozhraní okna VisuaI LISP Okno Visual LISPu obsahuje řadu nástrojů, které programátorům usnadňují život. Tyto nástroje jasně ukazují rozdíl mezi starým způsobem psaní kódu AutoLISPu (psaním textových souborů v textovém editoru) a novým vizuálním způsobem s nástroji, které usnadňují formátování a dokončení kódu. Nejužitečnější nástroje jsou:
Na 4 řádku stojí (command "_circle" pt "3"). Jestliže je příkaz KRUŽNICE spuštěn v AutoCADu, vyzve nejprve k zadání středu a potom poloměru. Řádek 4 spustí příkaz KRUZNICE, pro střed použije libovolné přiřazení proměnné pt a nastaví poloměr na 3 jednotky.
Klepnutím na tlačítko Zformátovat editační okno v panelu nástrojů Nástroje odsadíte kód (a komentáře), aby byl čitelnější. Odsazení kódu usnadňuje pochopení úrovní vnořeni závorek. Samozřejmě, že kód můžete odsadit i ručně, ale automatické odsazení je požehnáním pro všechny programátory AutoLISPu. Vyberte kód, který chcete zformátovat. Potom V panelu nástrojů Nástroje klepnutím na tlačítko Zformátovat výběr odsadíte pouze vybraný kód. Zkontrolovat text v Editoru proveďte před načtením souboru jeho předběžné vyhodnocení. Toto vyhodnocení zkontroluje v kódu nespárované závorky, neplatné formátování definicí funkcí (pokus o předefinování vestavěné nebo chráněné funkce) a řadu dalších obecných chyb. Vyberte kód, který chcete zkontrolovat. Klepnutím na tlačítko Zkontrolovat výběr v panelu nástrojů Nástroje (nebo výběrem položek Nástroje Zkontrolovat výběr) provedete předběžné vyhodnocení vybraného kódu.
Práce s výrazy AutoLISPu Jako v každém programovacím jazyku má i AutoLISP vlastní funkce a syntaxi. Velkou výhodou AutoLISPu je, že narozdíl od kompilovaných jazyků zde můžete kód okamžitě testovat. U kompilovaných jazyků musí být kód před zobrazením změn v AutoCADu po každé změně znovu kompilován a připojen. Tak je tomu například u prvků ObjectARX.
V AutoLISPu se použije první operátor a potom následuje určitý počet operandů. Operátor si můžete představit jako funkci, která něco dělá, a operandy jako to, co funkce zpracovává. Mezi každou komponentu příkazu umísťujeme mezeru.
Funkce AutoLISPu pro čísla a řetězce
Tvorba proměnných Proměnné jsou užitečné prvky ve většině programovacích jazyků. Proměnná je název, který se může použít v daném programu. Důležitá část použití proměnných je, že je možné přiřadit jim hodnoty.
AutoLISP nabízí mnoho funkcí, které vám umožní tvořit pro pracované programy. Programy mohou obsahovat proměnné, funkce a podmínkové struktury. Kreslení souřadnic usnadňuje práci. Je možné načíst informace o výkresových objektech a dále je upravovat. Získání vstupu uživatele udělá vaše pro gramy interaktivní.
Následující příklad nastavuje hodnotu proměnné zvané rádius na 3.
(setq radius 3) 3
Jak použít proměnné AutoLISPu z AutoCADu Příklad Pomocí šablony acad. dwt otevřete nový výkres. Zadejte (setq radius ( + 2 1)) AutoLISP vrátí 3. Spusťte příkaz KRUŽNICE. Určete jakýkoliv středový bod. Na výzvu Určete rádius kružnice nebo (Diametr]: zadejte !radius AutoCAD nakreslí kružnici o poloměru 3 jednotky. Zadejte (setq barva „green“). AutoLISP vrátí “green“ Zadejte -barva Na výzvu Zadejte implicitní barvu objektu !barva Nakreslete kružnici Je zelená, protože aktuální barva je nyní zelená.
Tvorba funkcí Funkce vždy začínají operátorem DEFUN. Je možné definovat tři základní typy funkcí: • Typ DEFUN s c:, který je AutoCADem interpretován jako příkaz a jenž umožní použít funkci pomocí názvu na příkazovém řádku AutoCADu. Funkce se použije jako ostatní příkazy AutoCADu. • Definici funkce lze rovněž vytvořit bez uvedení názvu c:, Tento typ oceníte, pokud bude volán dalšími operacemi AutoLISPu. Na příkazovém řádku musíte vložit název funkce do závorek. Podobně je možné spouštět funkce s c: jako výraz AutoLISPu, například (c:circle3) • Třetí typ je S:: STARTUP. Definováním funkce (obvykle v souboru acaddoc.lsp, který se načítá do každého výkresu) názvem S: STARTUP se automaticky spustí každá funkce v proceduře AutoLISPu. Smyslem funkce S: STARTUP je zajistit, že se procedury Auto LISPu, které používají funkci COMMAND, spustí až poté, co AutoCAD plně inicializuje komponenty, které spouští příkazy.
Procedura AutoLlSPu, která používá výrazy DEFUN a COMMAND:
První řádek procedury definuje funkci zvanou redline. Text redline je možné zadat na příkazovém řádku v AutoCADu, protože má kód c:. Nová instrukce terpri na druhém a čtvrtém řádku sděluje AutoCADu, aby nechal na příkazovém řádku prázdný řádek. Toto opatření slouží ke zlepšení čitelnosti výzev. Jinak se dvě nebo více výzev spojí dohromady na jeden řádek. Ze třetího řádku AutoCAD získá počáteční bod čáry od uživatele výzvou Select the redline start point: a nastaví proměnnou startpt na počáteční bod. Podobně pátý řádek získá koncový bod a nastaví endpt proměnné na tuto hodnotu.
Řádek 6 používá funkci AutoLISPu COMMAND. Nastaví příkaz ÚSEČKA, určí počáteční a koncové body a použije prázdné uvozovky ke zkopírování stisku klávesy Enter při ukončení příkazu ÚSEČKA Řádek sedm analogicky použije stejnou syntaxi pro příkaz ZMĚNAV Spustí příkaz ZMĚNAV, pomocí volby výběru Poslední vybere úsečku, kterou jste právě použili, ukončí výběr objektu pomocí prázdných uvozovek, určí volbu Barva a nastaví ji na červenou. Další prázdné uvozovky ukončí příkaz. Řádek 8 ukončí proceduru redline uzavřením závorek.
Práce se systémovými proměnnými AutoCAD obsahuje širokou paletu systémových proměnných k řízení prostředí výkresu. Tvůrci AutoLISPu umožnili programátorům AutoLISPu automatizovat nastavení a načítání systémových proměnných AutoCADu. Chcete-li nastavit nebo načíst systémové proměnné AutoCADu, použijte operátory SETVAR a GETVAR, které mohou být u systémových proměnných AutoCADu použity. SETVAR zastupuje výraz SET VARiable. SETVAR se používá ke změně systémové proměnné. Systémovou proměnnou umístěte do uvozovek následovaných novou hodnotou, například (setvar “cmdecho“0). GETVAR zastupuje výraz GET VARiable. Umožní získat hodnotu systémové proměnné. Jak mile máte hodnotu, můžete ji přiložit k proměnné. Po použití GET VAR umístěte systémovou proměnnou do uvozovek, například (getvar “cmdecho“).
Smyčkové struktury Smyčky nabízí možnost spustit operaci nebo operace opakovaně několikrát po sobě. Můžete použít například funkci WHILE. (while conditional-test-if-true then-perform-the-following-code-until-the condition-isfalse)
Užitečnou věcí je u funkce WHILE s podmínkovým testem if-true tzv. čítač. Čítač spočítá kolikrát byla operace spuštěna. Jakmile čítač dosáhne určité hodnoty, je možné ukončit operaci. Chcete-li vytvořit čítač, nastavte proměnnou (nazvanou třeba „counter“ na číslo, na kterém chcete začít. Dále napište kód pro jeden průchod operace. Nastavte čítač na další vyšší číslo pomocí výrazu, například následovně: (setq counter (+ 1 counter))
Správa výkresových objektů Opravdovou výhodou AutoLISPu je manipulace s výkresovými objekty. Je možné získat informace o objektu a dále tyto informace použít k jeho změně. Je rovněž možné ‘vytvořit výběrové množiny objektů.
Zobrazení informaci o výkresovém objektu pomocí Visual LISPu
Doladění Existuje mnoho způsobů doladění procedur. Všechny výrazy AutoLISPu vrací hodnotu a poslední výraz vrací hodnotu na příkazovém řádku. Visual LISP podporuje několik stylů komentářů. Když v panelu nástrojů Nástroje klepnete na tlačítko Zformátovat editační okno, Visual LISP provede automatické zformátování vašeho kódu pomocí uvedených kódů:
;;; 3 středníky: Když komentář označíte třemi středníky, Visual LISP jej umístí na levý okraj. Komentář s trojitým středníkem je dobré umístit na začátek procedury k popisu jejího celkového smyslu u toho, co dělá.
;;
2 středníky: Komentář se dvěma středníky Visual LISP odsadí aktuální vnořené hladině s další úrovní závorek. Tento typ komentáře použijte k vysvětlení dalšího řádku nebo řádků kódu.
;
1 středník: Komentář s jedním středníkem Visual LISP odsadí dle výchozího nastavení o 40 mezer.
;| |; Řádkový komentář: Umístí komentář v rámci jakéhokoliv řádku kódu, takže bude mít kód před i za sebou.
;_Komentář na konci řádku: Umístí Dialog Volby formátování slouží k formátování okrajů a odsazení v editoru Visual LISPu
komentář na konec libovolného řádku kódu