CVIČENIE 1:      Základné rysy práce v AutoLISPe

 

       AutoCAD [33] patrí k softvérovému produktu, ktorý umožňuje jeho modifikáciu v závislosti na požiadavkách konštruktéra – projektanta. Okrem možností úpravy AutoCADu, ktoré boli uvedené v CAD I. [21], t.j. tvorba vlastného roletového menu, patria k ďalším možnostiam programovacie jazyky AutoCADu. Jedným z nich je programovací jazyk AutoLISP [33], ktorý predstavuje vo verziách AutoCAD 2000, 2000i, 2002 jednoduchú, používateľovi “priateľskú“ formu komunikácie, využívajúci Visual LISP editor.

AutoLISP je dodávaný s plne funkčnou verziou AutoCADu. Programovací jazyk umožňuje otvorenú architektúru prostredia AutoCADu a slúži na tvorbu jeho nadstavieb, pričom si uchováva rovnakú štruktúru od verzie 14 do verzie 2002.

 

1. 1. Programovací jazyk AutoLISP

 

       AutoLISP umožňuje doplnenie vlastných funkcií, ktoré si konštruktér – projektant (používateľ AutoCADu) môže zabudovať do AutoCADu. Konštruktér si vytvorí programy, príkazy a funkcie z danej oblasti, v ktorej pracuje: železničné staviteľstvo, cestné staviteľstvo, pozemné staviteľstvo, mosty, objekty, mapovanie, geografické informačné systémy, a pod.

       Konštruktér má dve možnosti: buď si daný produkt, t.j. nadstavbu AutoCADu, pre svoju oblasť záujmu zakúpi hotový (vysoké finančné náklady), alebo si vytvorí vlastné doplnky AutoCADu pomocou AutoLISPu.

       Vytvorenie programov v AutoLISPe zvyšuje produktivitu práce. To čo môžeme vykonať za niekoľko sekúnd (po zadaní vstupných dát), to by sme manuálne mohli kresliť niekoľko dní, napríklad pozdĺžny profil cestnej alebo železničnej komunikácie, ktorý môže byť dlhý 0.5 až 20 km. Programovacie prostriedky využívame až vtedy, ak sa daný druh činností opakuje viackrát. V prípade kreslenia jedného výkresu kreslíme prvky v AutoCADe manuálne.

       Ďalšou vlastnosťou AutoLISPu je práca s rôznymi typmi dát, nielen číselnými a textovými údajmi zadanými manuálne z klávesnice alebo zo súboru, ale aj dátami objektov (entít) vo výkrese AutoCADu.

       AutoLISP je textový súbor s príponou LSP. Dôležitým prvkom je prepojenie AutoLISPu s grafickým prostredím AutoCADu, t.j. to čo vypočítame, to môžeme priamo vykresliť vo výkrese, alebo naopak, vyberáme objekty z výkresu, ktoré potom spracovávame výpočtom.

       Program vytvárame v ľubovoľnom textovom editore, napríklad Poznámkový blok [NotePad] z WINDOWS, prípadne Norton Editor NE [ne.com]. V dnešnej dobe pracuje AutoCAD v prostredí WINDOWS, ktorý umožňuje súčasné spustenie viacerých programov na lište Štart [Start] vo WINDOWS, napríklad výkres AutoCADu, editorom otvorený program typu LSP, editorom otvorené dátové súbory a pod.

       V AutoCADe od verzie 2000, 2000i, 2002 pracujeme s uvedenými súbormi priamo vo  Visual LISP editore, ktorý kontroluje správnosť napísaného programu, t.j. štruktúru programu LSP. V starších verziách AutoCADu, alebo pri písaní programu v inom textovom editore, musí kontrolu syntaxy programu vykonávať konštruktér.

       Národné verzie AutoCADu a AutoLISPu (napríklad CZ) umožňujú zadávanie anglických príkazov, napríklad v českej verzii zároveň je možné použiť príkazy anglickej verzie, ale pred príkaz je potrebné pridať znak podčiarknutej medzery “_“, napríklad: úsečka (Úsečka) [_Line], kružnica (Kružnice) [_Circle], 3 bodmi (3B) [_3P], vymaž (Vymaž) [_Erase], a pod. Samotný AutoLISP je rovnaký pre všetky národné verzie, pričom funkcie sú v anglickej verzii.

       Konfigurácia počítača pre AutoLISP je zhodná s konfiguráciou AutoCADu, ktorá je popísaná v CAD I. [21]. AutoLISP nie je dodávaný s verziami AutoCAD LT.

 

1. 2. Prepojenie Visual LISPu a AutoCADu

 


       Od verzie AutoCADu 2000 bol AutoLISP zabudovaný priamo do roletového menu AutoCADu, nakoľko patrí k jeho najviac používaným programovacím jazykom. AutoLISP spustíme položkou “AutoLISP“ v rolete Nástroje [Tools] podľa obr. 1.1.

Obr. 1.1. Spustenie Visual LISP editora pre AutoLISP v AutoCADe


       Po spustení položky “Visual LISP editor“ sa zobrazí prostredie Visual LISPu, do ktorého môžeme priamo vypracovať svoj program v jazyku AutoLISP (typ LSP), obr. 1.2.

Obr. 1.2. Prostredie Visual LISPu v AutoCADe

       V prípade požiadavky získania ďalších informácií o Visual LISPe a AutoLISPe použite vyhľadávanie v Nápovede [Help], kde je spracovaná kompletne podrobná používateľská príručka [33].

 

1. 3. Načítanie programov AutoLISPu a spustenie funkcií

 

       Po vytvorení programu, alebo ak vlastníme program typu LSP, prvým krokom je načítanie programu do pamäte počítača príkazom LOAD, za účelom spustenia funkcie z tohto programu.

Textové pole: 		Príkaz: (load “PROGRAM“)
	alebo:
		Príkaz: (load “C:/ACAD/PROGRAM“)

 

 

 

 

       Uvedený príkaz LOAD nám vráti názov poslednej funkcie z tohto programu PROGRAM.LSP.

       Ďalšou úlohou je spustenie požadovanej funkcie FUNKCIA z programu LSP na príkazovom riadku AutoCADu.

Textové pole: 		Príkaz: funkcia

 

 

 

       Po spustení funkcie z programu LSP bude vykonaný požadovaný postup naprogramovaný v súbore PROGRAM.LSP v tejto definovanej funkcií (kap. 2.1).

       Ďalšou možnosťou spustenia programu typu LSP je roletové menu obr.1.1 položkou Načítať … [Load …], kde vyberieme adresár a požadované meno programu, napísaného v AutoLISPe.

       Vzhľadom na to, že ešte neovládame programovanie v AutoLISPe, vyskúšame si načítať a spustiť napísaný hotový program SKRUTKA.LSP, ktorý vykreslí do výkresu skrutku alebo maticu na konštruovanie oceľového spoja.

Pr. 1.1. Načítajte do pamäte počítača program SKRUTKA.LSP a spustite funkciu SKRUTKA. Vykreslite vo výkrese skrutky a matice podľa vlastného návrhu spoja oceľovej konštrukcie (obr. 1.4).

 

Obr. 1.3. Návrh skrutky a matice – jednotlivé premenné z programu SKRUTKA.LSP

Vykonajte postup:

 

a)    Nastavenie výkresu:

Príkaz: [Command:]       ZOOM [Zoom] – Okno [Window]:

                                               1. Roh: [First corner:]     0,0

                                              2. Roh: [Other corner:]   400,300

b)   Načítanie programu SKRUTKA.LSP:

Príkaz: [Command:]       (load “SKRUTKA“) alebo (load “C:/ACAD/SKRUTKA“)

c)    Spustenie funkcie SKRUTKA:

Príkaz: [Command:]       skrutka

d)      Práca konštruktéra – projektanta s programom:

a)       KRESLENIE SKRUTKY ALEBO MATICE? [S,M]: s

b)       VYBERTE BOD VLOŽENIA SKRUTKY: vyberte bod myšou

c)       ZADAJTE DĹŽKU SKRUTKY [mm]: 60

d)      ZADAJTE PRIEMER SKRUTKY [mm]: 15

e)       ZADAJTE VÝŠKU HLAVY [mm]: 10

f)        ZADAJTE DĹŽKU ZÁVITU [mm]: 40

g)       Dĺžka závitu musí byť násobkom stúpania závitu!

ZADAJTE STÚPANIE ZÁVITU [mm]: 2

h)       Objekt bude vykreslený, napríklad podľa obr.1.4. Vyskúšajte samostatne aj konštruovanie matice.

Zdrojový text ukážkového programu SKRUTKA.LSP je uvedený v Prílohe č. 9.1.

Pozn.1: Dĺžka závitu skrutky musí byť celým násobkom stúpania závitu, napríklad dĺžka závitu 40 mm a stúpanie 2 mm, alebo dĺžka závitu 33 mm a stúpanie 3 mm, a pod. Pred kreslením si navrhnite rozmiestnenie skrutiek a matíc (obr. 1.4).

Obr. 1.4. Vykreslenie objektov programom SKRUTKA.LSP

 

Pr. 1.2. Spustite program SÚČET.LSP na sčítanie C = A + B, pričom zadajte hodnoty premenných A a B.

Zdrojový text programu SÚČET.LSP:

 

; Program na sčítanie dvoch čísel

(defun C:SÚČET ()

             ;Zadávanie hodnôt

             (setq A (getreal "\nZADAJTE A: "))

             (setq B (getreal "\nZADAJTE B: "))

          ;Sčítanie

             (setq C (+ A B))

                (prompt "\nVÝSLEDOK C=")

      (princ C)

             (princ)

)

 

Vyskúšajte postup:

a)    Načítanie programu SÚČET.LSP:

Príkaz: [Command:]       (load “SÚČET“) alebo (load “C:/ACAD/SÚČET“)

b)   Spustenie funkcie SÚČET:

Príkaz: [Command:]       súčet

c)      Práca konštruktéra – projektanta s programom:

a)      ZADAJTE A: 62

b)      ZADAJTE B: 27

c)      VÝSLEDOK C= 89

Pozn. 1: Príkazy a funkcie budú vysvetlené podrobne v nasledujúcich kapitolách. V kap. 1 je potrebné vyskúšať načítanie programov typu LSP pomocou LOAD (load “PROGRAM“) alebo z roletového menu (rolety) podľa obr. 1.1 a spustenie jednotlivej funkcie z PROGRAM.LSP.

 

 

CVIČENIE 2:      AutoLISP a štruktúra programov

 

2. 1. Definovanie funkcií pomocou DEFUN

 

       Definovanie jednotlivých častí v programe LSP je zabezpečené definovaním funkcií pomocou DEFUN.

Textové pole: 		(defun C:NÁZOV ( )
			---
			telo programu
			---
			---
		)

Použitie funkcie DEFUN:

       Pred názvom funkcie píšeme “C:“, čo znamená, že funkcia NÁZOV sa stane príkazom AutoCADu a môžeme ju vyvolať na príkazovom riadku Príkaz: [Command:] príkazom NÁZOV. V prípade, že znak “C:“ vynecháme, potom musíme zadávať funkciu v zátvorkách (NÁZOV).

       Za menom funkcie NÁZOV sú definované hodnoty argumentov a lokálne premenné v zátvorkách “( )“. Ak budeme definovať lokálne premenné, sú písané za znakom “/“.

                    (defun NÁZOV (hodn1 hodn2 / LOKprem1 LOKprem2) ……………. )

Globálne premenné fungujú počas celej doby spustenia AutoCADu, odkedy sme premennú prvýkrát použili. Lokálne premenné sú využívané len v rámci jednej funkcie.

 

2. 2. Štruktúra programov v AutoLISPe

 

       Programy vytvorené v AutoLISPe sú zostavené do zoznamov príkazov využívajúcich zátvorky (koľko je ľavých zátvoriek, toľko musí byť pravých zátvoriek). Vlastný program LSP sa môže skladať z viacerých funkcií. Jednotlivé funkcie môžu využívať ďalšie funkcie. Program je delený na jednotlivé uzavreté časti, ktoré sú definované ako funkcie DEFUN (kap. 2.1).

Vzhľadom na to, že ide o viacriadkové programy, je potrebné ich vytvárať v novom súbore s príponou LSP v ľubovoľnom textovom editore, alebo program spracovávať priamo vo Visual LISP editore AutoCADu (obr. 1.2 a obr. 2.1).

Textové pole: 		(defun NÁZOV1 ()
			---
		---
		)
	(defun NÁZOV2 ()
			---
			---
	)
		(defun C:NÁZOV ()
		(NÁZOV1)
			(NÁZOV2)
			(NÁZOV4)
		---
	)

       Štruktúra programu v AutoLISPe (LSP):

Pri práci môžeme načítať viac programov typu LSP. Napríklad môžeme využívať funkciu NÁZOV4, ak už bola vopred načítaná do pamäte počítača pomocou iného programu LSP funkciou LOAD.

Pri tvorbe programu vytvárame funkcie:

-          načítanie hodnôt existujúcich systémových premenných,

-          zistenie údajov z dátových súborov,

-          vlastné telo programu,

-          výpočty,

-          zápis údajov do dátových súborov,

-          vrátenie hodnôt systémovým premenným, a pod.

 

2. 3. Spustenie a tvorba programu pomocou Visual LISPu

 

       Visual LISP editor otvoríme z rolety Nástroje [Tools] z položky “AutoLISP“ a začneme definovať funkciu podľa obr. 2.1 (text v jazyku AutoLISP z Pr. 4.1).

 

Pr. 2.1. Otvorte text programu napísaného v AutoLISPe pomocou Visual LISP editora a pozrite si jednotlivé časti programov na kreslenie úsečky KRESLI.LSP z Pr. 4.1 alebo kreslenie skrutiek SKRUTKA.LSP z Pr. 1.1, ktoré sú zvýraznené vo Visual LISPe farebne:

-          zátvorky:           ( ),

-                 funkcie:                    DEFUN, SETQ, GETPOINT, POLAR, COMMAND, PRINC,

-          príkazy:              “_line“, “_color“,

-         

premenné:          bod0, bod1, l, d, v, z, st, bodV, a pod.

Obr. 2.1. Štruktúra programu vo Visual LISP editore na kreslenie vlastnej úsečky

 

a)       Zadáme položku “AutoLISP“ z rolety Nástroje [Tools], kde spustíme položku pre “Visual LISP editor“ (obr. 1.1).

b)       Otvoríme program LSP v rolete Súbor [File] položkou Otvoriť [Open]. Vyhľadáme požadovaný adresár a otvoríme program, v našom prípade KRESLI.LSP a potom SKRUTKA.LSP.

c)       Zdrojový text programu KRESLI.LSP bude zobrazený podľa obr. 2.1.

d)      Režim práce prepneme do prostredia AutoCAD, pričom môžeme načítať program podľa Pr. 1.1 príkazom LOAD a príslušnou definovanou funkciou z programu. V prípade, že sme upravovali program, musíme ho uložiť (nezničiť originály programov AutoCADu) a postup opakovať.

Pozn. 1: V prípade, že by v programe boli formálne chyby (kap. 4.1), neboli by farebne rozlíšené jednotlivé časti programu.

 

 

CVIČENIE 3:    Jednoduchá komunikácia AutoLISPu

    s AutoCADom

 

AutoLISP umožňuje spracovanie údajov výpočtami, načítaním hodnôt do premenných a pod., pričom je prepojený s grafickým prostredím AutoCADu, t.j. priamo s výkresom. Dôležitým znakom AutoLISPu je vykreslenie požadovaných hodnôt z výpočtov priamo do grafického prostredia. V priebehu vykonávania programu LSP je umožnené projektantovi vstupovať do chodu programu a vykonať potrebné zadania, napríklad vybrať bod myšou priamo vo výkrese alebo zadať požadované hodnoty z klávesnice.

Všetky príkazy, ktoré chceme použiť v programe, je možné overiť na príkazovom riadku AutoCADu manuálne. Ak program je dvoj až trojriadkový, využijeme príkazový riadok Príkaz: [Command:]. V prípade, že vytvoríme program dlhší, píšeme ho do súboru typu LSP v ľubovoľnom textovom editore, napríklad Poznámkovom bloku [NotePad] vo WINDOWS, alebo priamo vo Visual LISP editore.

 

3. 1. Priradenie hodnôt do premenných SETQ

 

       Funkcia SETQ na priradenie hodnôt jednotlivým premenným patrí k dôležitým funkciám AutoLISPu:

Textové pole: 		(setq premenná hodnota)

Štruktúra funkcie SETQ:

       Obecne platí vzťah, ktorý priraďuje hodnoty jednotlivým premenným postupne v jednom príkaze:

Textové pole: 		(setq prem1 hodn1 prem2 hodn2 ……….. premN hodnN)

Pr. 3.1. Na príkazovom riadku Príkaz: [Command:] priraďte nasledovné hodnoty premenným:

a)      Do premennej A priraďte hodnotu 2:

             Príkaz:  (setq a 2)

             Funkcia vráti hodnotu:                             → 2

b)     Do premennej B priraďte hodnotu 3 a do premennej C priraďte hodnotu z A:

                          (setq b 3)                 → 3

                          (setq c a)                  → 2

       Ak chceme zistiť aktuálnu hodnotu premennej, pred premennú zadáme „!“:

                          !a                              → 2

                          !b                             → 3

                          !c                              → 2

       Typ premennej sa nedefinuje, ale závisí od typu hodnoty, ktorú jej priradíme:

-          celočíselné hodnoty [Integer]      :                   1, 2, 3, ….,

-          desatinné, reálne čísla [Real]:                   4.25, 3.75, ….,

-          reťazce, texty [String]:                             “AutoLISP“, “ANO“, “A“,

-          zoznam [List], a pod.:                              (6.25 4.28 6.22).

Počet premenných nesmieme priraďovať bez obmedzenia, závisí od pamäte počítača alebo softvéru, napríklad môže sa jednať o obmedzenie jednotiek (premenných) na 64 KB a pod. Z tohto dôvodu musíme premenné využívať opakovane v iných funkciách (podobne ako pamäť M na kalkulačke). Iné premenné sú potrebné počas celej práce programov v AutoLISPe.

V prípade, že už nepotrebujeme premennú, priradíme jej hodnotu “nil“, čím sa z pamäte počítača odstráni a nezaberá miesto.

                          (setq c nil)                       → “nil“

 

Pr. 3.2. Zadajte hodnoty rôznych typov do premenných podľa príkladov. Na záver zistite ich aktuálne hodnoty pomocou “!“:

                          (setq dx 4.25)                 → 4.25              - desatinné číslo,

                          (setq q 3)                        → 3                   - celé číslo,

                          (setq s “STAVBA“)             → “STAVBA“ - text, reťazec, slovo,

                          (setq dy dx)                          → 4.25              - iná premenná.

Zistite hodnoty premenných:

                                        !dx                                  → 4.25

                                       !q                                    → 3

                                       !s                                    → “STAVBA“

                                       !dy                                  → 4.25

                                       !sss                                 → “nil“

Pozn. 1: V prípade, že zadáme meno premennej, ktorá neexistuje, počítač vypíše “nil“, čo znamená “žiadna“ a premenná neexistuje. Uvedeným postupom môže konštruktér overiť existenciu zadaného názvu premennej.

Pozn. 2: Názov premennej musí byť jedinečný, aby sme si nepredefinovali už existujúce funkcie a premenné, napríklad: PI, ANGLE, LENGTH, MAX, T, a pod. Napríklad číslo PI (π) už nebude mať hodnotu “3.14159265…“, ale novú, ktorú sme jej pridelili.

3. 2. Matematické operácie

 

       Matematické znaky  “+“, “–“, “*“, “/“, a pod. sa považujú za funkcie, uvádzajú sa priamo za ľavú zátvorku a hodnoty argumentov sa píšu postupne za sebou.

                          (+ 10 20)                        → 30

                          (+ 5 6 10)                       → 21

                          (- 7 30)                           → -23

                          (* 2 3)                             → 6

                          (/ 12 4)                            → 3

Goniometrické funkcie sú vykonávané v radiánoch a je potrebný prevod pomocou PI (π), napríklad pre stupne [Degrees] vytvoríme premennú STUP alebo pre grády/góny [Grads] premennú GRAD.

                          (setq stup (/ 180 pi))            

                          (setq grad (/ 200 pi))            

Hodnoty goniometrických funkcií získame pre sínus funkciou SIN a kosínus funkciou COS. Zistenie uhla spätne z goniometrickej hodnoty je arkus tangens ATAN. Ostatné goniometrické funkcie sú odvoditeľné. Pozor, uhly pri výpočtoch sú v radiánoch.

                          (sin uhol)          

                          (cos uhol)         

                          (atan hodnota)        

       Funkcie pre druhú odmocninu (√¯), prirodzený logaritmus (ln), exponenciálnu funkciu (ex) a mocninu základu (yx) sú:

                          (sqrt 9)                           → 3.0

                          (log 5.2)                          → 1.64866

                          (exp 2.5)                         → 12.18249

                          (expt 2 4)                       → 16.0

       V jazyku AutoLISP používame porovnávacie funkcie ako samostatné funkcie:

                          (< i n)                             - menšie,

                          (> i n)                             - väčšie,

                          (= i n)                             - rovné,

                          (/= i n                          - nerovná sa,

                          (<= i n)                           - menšie a rovné, a pod.

 


Pr. 3.3. Napíšte zložený výraz v jazyku AutoLISP. Rozložte si výraz na viac časti, napríklad do premennej VYR1 vložte čitateľa a do premennej VYR2 vložte menovateľa. Postupnosť programu vypracujte na príkazovom riadku AutoCADu.

       Vstupné dáta:

                                       (setq a 5)

                                       (setq b 3)

                                       (setq c 4)

       Program na výpočet premennej VYR:

                                       (setq vyr1 (+ 15 a))

                                       (setq vyr2 (- 16 (* b c)))

                                       (setq vyr (/ vyr1 vyr2))

Výsledok:                !vyr                                 → 5

 

Pozn. 1: V programoch je potrebné otestovať menovateľa zlomku, aby sa nerovnal nule, nakoľko by program bol zrušený (/=  vyr2  0).

 


Pr. 3.4. Napíšte vzorec na výpočet dotyčnice TOBL kružnicového oblúka v AutoLISPe, pričom zadajte polomer oblúka R = 300.0 m a vrcholový uhol dotyčnicového polygónu α = 30.0000g. Využite názov premennej TOBL pre dotyčnicu.

       Vstupné dáta:

                                       (setq r 300.0)

                                       (setq alfa 30.0)

                                       (setq grad (/ 200 pi))

       Program na výpočet dotyčnice oblúka TOBL:

                                       (setq alfapol (/ alfa 2))

                                       (setq tobl (* r (/ (sin (/ alfapol grad)) (cos (/ alfapol grad))))

       Výsledok:

                          !tobl                               → 72.024 m

 

Pozn. 1: V programe je potrebné upraviť tangens pomocou sínusu SIN a kosínusu COS, a hodnotu uhla z grádov [góny] na radiány pomocou vytvorenej premennej GRAD:

                                       .

 

Pozn. 2: V prípade, že na príkazovom riadku nie je zobrazená celá hodnota výsledku, ale len platné miesta pre obrazovku, využite v programe funkciu RTOS, ktorá zobrazí v našom prípade premennú TOBL v desatinnom tvare na tri desatinné miesta (rtos tobl 2 3), kap. 5.2.

Pr. 3.5. Napíšte v AutoLISPe výraz:            

      

Vstupné dáta:          (setq a 2 b 3 c 4)

       Program na výpočet VYR:

                                       (setq vyr1 (* 4 a))

                                       (setq vyr2 (/ (* b c) 2))

                                       (setq vyr (+ vyr1 vyr2))

       Výsledok:

                          !vyr                                → 14

3. 3. Vstup konštruktéra - projektanta do chodu programu

 

       Počas chodu programu musíme umožniť používateľovi vstupovať do programu, aby mohol zadávať požadované hodnoty, napríklad dĺžky, šírky, výšky objektov, vyberať body, objekty vo výkrese, alebo vyberať mená dátových súborov pre vstup a výstup za účelom ich ďalšieho spracovania.

       Funkcie GET****, ktoré slúžia na zadávanie údajov konštruktérom – projektantom:

-          getreal                          - reálne číslo [Real],

-          getint                       - celé číslo [Integer],

-          getstring               - text, reťazec [String],

-          getpoint                  - bod [Point],

-          getangle                - uhol [Angle],

-          getdist                     - vzdialenosť [Distance],

-          getkword              - kľúčové slovo [Key Word].

Štruktúra funkcie GET****:

Textové pole: 		(setq premenná (get**** “\nVÝZVA“))

Pri uvedených funkciách sa program zastaví, vypíše VÝZVU a čaká na zadanie požadovaných hodnôt. S uvedenými funkciami na vstup používateľa do chodu programu súvisí funkcia INITGET, ktorá zabezpečuje testovanie jednotlivých vstupov (kap. 9.2, Pozn. 16).

 

Pr. 3.6. Na príkazovom riadku napíšte časť programu na vstup používateľa na zadanie desatinného čísla, napríklad dĺžky strany objektu D pomocou GETREAL.

                   (setq d (getreal “\nZADAJTE DĹŽKU: “))

Program vykoná:

                          ZADAJTE DĹŽKU: 22.7

Výsledná hodnota premennej D:

                          !d                                          → 22.7

 

Pr. 3.7. Napíšte časť programu na zistenie súradníc bodu na obrazovke (vo výkrese) pomocou funkcie GETPOINT. Pri výbere bodov môžete využiť záchytný režim na uchopenie bodov objektov v AutoCADe [21], [33].

                   (setq bod (getpoint “\nVYBERTE BOD: “))

Program vykoná:

                          VYBERTE BOD: vyberte bod myšou

Výsledná hodnota premennej BOD:

                          !bod                               → (147.21  96.39  0.00) v tvare (X Y Z)

Pr. 3.8. Overte časť programu na zadávanie kľúčových slov GETKWORD, napríklad “ÁNO“, “NIE“ a pod., ako odpoveď na otázku, či práve nakreslený objekt požadujeme v projekte, alebo ho chceme vymazať.

Inicializácia INITGET a zadanie kľúčových písmen z požadovaných slov:

      (initget 1  “A N“)

      (setq test (getkword “\n NAKRESLENÝ OBJEKT VYHOVUJE? [A,N]:“))

Ďalšia postupnosť programu na jeho rozvetvenie (kap. 4.2 a kap. 4.3):

      (if  (= test “A“) ……………….)

      (if  (= test “N“) ……………….)

Pozn. 1: Textová výzva pre projektanta sa píše v úvodzovkách. Znaky “\n“ zabezpečujú napísanie výzvy na nový riadok. Iné tlačidlá než “A“ a “N“ budú programom odmietnuté, nakoľko je aktivovaná funkcia INITGET.

 

3. 4.   Spustenie príkazov AutoCADu v AutoLISPe

funkciou COMMAND

 

       Príkazy AutoCADu sme mohli vyberať z roletového menu [Pull-down Menu], z ikon panelov nástrojov [Toolbars], z bočného obrazovkového menu [Screen Menu], alebo zadať manuálne na príkazovom riadku (pozri CAD I. [21]).

       Príkazy, ktoré sme zadávali na príkazovom riadku Príkaz: [Command:], môžeme aplikovať do AutoLISPu pomocou funkcie COMMAND. Príkazy, ktoré chceme zabudovať do programu v AutoLISPe, otestujeme na správnosť ich zadávania na príkazovom riadku v AutoCADe.

Textové pole: 		(command “príkaz“ požadované_hodnoty)

Štruktúra funkcie COMMAND:

 

Pr. 3.9. Vykreslite niektoré objekty vo výkrese funkciou COMMAND. Funkciu overte na príkazovom riadku AutoCADu. Pred kreslením nastavte výrez výkresovej plochy (obrazovky) pomocou ZOOM – Okno [Window] podľa požiadaviek projektanta.

Nastavenie výrezu obrazovky:

      Z rolety Zobraziť [View]  vyberte ZOOM – Okno [Window]:

                          Príkaz: 1. roh: [First corner:]       0,0

                          Príkaz: 2. roh: [Other corner:]     400,300

       Kreslenie úsečky (Úsečka) [Line]:

                   (command “_LINE“ “100,150“ “220,290“ ““)

                                             ↑              ↑             ↑           ↑

                                “ÚSEČKA“        BOD1     BOD2    ukončenie kreslenia

                                                                                X,Y        X,Y

       Kreslenie kružníc (Kružnice) [Circle]:

                   (command “_CIRCLE“ “100,100“ “75“)

                                             ↑                  ↑           ↑  

                                “KRUŽNICE“       stred       polomer  

 

                   (command “_CIRCLE“ “_3P“ “50,60“ “170,90“ “95,130“)

                                             ↑                ↑           ↑            ↑            ↑

                                “KRUŽNICE“    3 bodmi   BOD1   BOD2    BOD3

Vymazanie objektov (Vymaž) [Erase]:

                   (command “_ERASE“)                          - viac objektov a Enter,

                                             ↑    

                                        “VYMAŽ“   

 

                   (command “_ERASE“ “_SI“)          ­- jeden objekt.

                                             ↑                ↑

                   “VYMAŽ“  “JE“ jeden objekt (Jednou) [Single]

Zmena farby (Barva)[Color]:

                   (command “_COLOR“ 3)  

                                             ↑           ↑

                                        “BARVA“  Číslo farby 1 až 7 (3 – Zelená [Green])

Pozn. 1: Ak používame české príkazy, musíme dodržiavať interpunkčné znamienka, alebo ak používame anglické príkazy, musíme zadať podčiarknutú medzeru “_“ pred príkazom, napríklad úsečka (Úsečka) [_Line], kružnica (Kružnice) [_Circle], farba (Barva) [_Color], a pod.

Pozn. 2: Ak chceme pracovať len s jedným objektom, využijeme príkaz JE [ _SI], čo znamená jeden objekt (Jednou) [Single].

 

 

CVIČENIE 4:     Program v AutoLISPe a jeho vetvenie

 

 

       Doteraz sme testovali niekoľkoriadkové programy AutoLISPu priamo na príkazovom riadku AutoCADu. V prípade, že vytváraný program obsahuje viac riadkov, je potrebné ho písať v súbore s príponou LSP.

       Na písanie súborov LSP použijeme ľubovoľný textový editor. V starších verziách  AutoCADu (ver. 10 až 14) to bol hlavne Norton Editor (ne.com), nakoľko zaberal málo miesta v pamäti počítača a kontroloval ľavé a pravé zátvorky, ktorých správne písanie je nevyhnutné na chod programu LSP.

       V súčasnom období môžeme využiť niektorý z textových editorov pracujúcich v prostredí WINDOWS, pričom medzi editorom a AutoCADom prepíname na lište Štart [Start] vo WINDOWS (môžeme používať aj kombináciu tlačidiel ALT + TAB).

       V AutoCADe 2000, 2000i, 2002 pracujeme vo VisulaLISP editore, ktorý je zabudovaný priamo v rolete AutoCADu (obr. 1.1).

4. 1. Vytvorenie programu typu LSP

 

       Pomocou textového editora, napríklad v Poznámkovom bloku [NotePad], otvoríme prázdny súbor s príponou LSP. Predtým si môžeme vytvoriť nový súbor aj pomocou Prieskumníka [Explorer] z WINDOWS na pracovnom adresári AutoCADu.

       Nakoľko ešte neovládame prostredie Visual LISP editora (alebo ho nevlastníme), budeme pracovať klasicky v textovom editore. Vo Visual LISP editore sa priamo otvárajú, ukladajú a zároveň kontrolujú napísané LSP programy.

       Po napísaní programu, súbor uložíme a overíme jeho funkčnosť v AutoCADe príkazom LOAD (kap. 1.3).

Pr. 4.1. Vytvorte nový súbor pomocou Prieskumníka [Explorer] vo WINDOWS, otvorte ho editorom a napíšte program na kreslenie vlastnej úsečky. Funkcia bude mať názov US, aby sme si nepredefinovali originálnu funkciu ÚSEČKA. V AutoCADe 2000 až 2002 súbor vypracujte vo Visual LISP editore.

a)      Vytvoríme nový súbor SK.LSP:

-          použijeme položky: Štart – Programy – Prieskumník,

[Start – Programs – Explorer]

-          roleta:                       Súbor – Nový objekt – Textový dokument,

[File – New object – Text document]

-          zadáme meno súboru SK.LSP a ÁNO na overenie prípony LSP.

b)      Otvoríme súbor SK.LSP:

-          2x klikneme na súbor za účelom otvorenia súboru,

v Poznámkovom bloku [NotePad],

-          alebo použite Visaul LISP editor, prípadne iný textový editor.

c)      Napíšeme program do súboru SK.LSP, funkciu na kreslenie úsečky nazveme US:

(defun C:US ( )

      (setq fb (getint “\nZadajte číslo farby [1 až 7]: “ ))

      (setq bod1 (getpoint “\nVyberte prvý bod úsečky: “))

      (setq bod2 (getpoint bod1 “\nVyberte druhý bod úsečky: “))

      (command “_color“ fb)               - alebo (command “_colour“ fb)

      (command “_line“ bod1 bod2 ““)

      (princ)

)

                    kde:      US                           - názov príkazu na kreslenie úsečky,

                                 FB, BOD1, BOD2  - premenné pre číslo farby a pre jednotlivé body,

                                 BOD1 (pri BOD2)  - kreslenie siluety z bodu BOD1,

                                 PRINC                    - tichý odchod z funkcie.

d)      Uloženie programu SK.LSP:

-          príkazom Ulož ako [Save as], za účelom overenia mena súboru a adresára na uloženie súboru SK.LSP.

e)       Načítanie programu AutoLISPu v AutoCADe:

    Príkaz: (load “SK“) alebo (load “C:/ACAD/SK“) alebo roleta Nástroje [Tools]

f)        Spustenie nového príkazu US z programu SK.LSP na kreslenie úsečky:

Príkaz: us

g)       Vykonajte postupnosti programu:

a)      Zadajte číslo farby [1 až 7]: 2

b)      Vyberte prvý bod úsečky: myšou vo výkrese

c)      Vyberte druhý bod úsečky: myšou vo výkrese

d)     Opakujte postup (stačí zadať len príkaz US alebo ENTER na vrátenie poslednej funkcie), obr. 2.1.

h)      V prípade, že program obsahuje chyby, je potrebné sa vrátiť do textového editora a opraviť súbor SK.LSP.

Využijeme tlačidlo F2 na zobrazenie textovej obrazovky, prípadne zapneme viac riadkov na výpis na príkazovom riadku a zistíme druh chybového hlásenia.

       Niektoré chybové hlásenia:

-    definovaná funkcia neexistuje [No Function Definition] – funkcia neexistuje alebo je zlé meno, prvé slovo za hlásením je zlý názov,  napríklad:

-  SETG namiesto SETQ,

-  spojené dve slová a pod.,

-    deformovaný zoznam [Malformed List] – zlé zátvorky,

-    deformovaný reťazec [Malformed String] – zlé úvodzovky,

-    načítanie zrušené [Load Failed] – zlý názov súboru, alebo neexistuje, alebo je na inom adresári, zlá cesta k súboru a pod.

 

Pozn. 1: Postup opakujeme, až kým neodstránime všetky chyby syntaxy programu LSP, t.j. opravíme, uložíme, načítame a spustíme funkciu. Od verzie AutoCADu 2000 je zabudovaná kontrola programu AutoLISPu priamo v rolete AutoCADu Nástroje [Tools] vo Visual LISP editore [Visual LISP editor].

 

4. 2. Vetvenie programu pomocou funkcie IF

 

       Program rozvetvujeme na základe určitých porovnávacích podmienok pomocou funkcie IF.

Štruktúra funkcie IF:

Textové pole: 		(if (porovnávací_výraz) (výrazA) (výrazN))

       Uvedená štruktúra predstavuje: Ak platí “porovnávací_výraz“, program vykoná “výrazA“, ak neplatí, vykoná sa “výrazN“.

 

Pr. 4.2. Preštudujte ukážkovú časť programu, kde porovnáme zadanú premennú A s hodnotou 50. Funkciu ČÍSLO vypracujte na konci programu SK.LSP za kreslením US.

(defun C:ČÍSLO ( )

      (setq a (getint “\nZadajte číslo A: “))

      (if (> a 50)

             (prompt ”\nZadané číslo A > 50.”)

             (prompt ”\nZadané číslo A <= 50.”)

      )

      (princ)

)

 

Pozn. 1: Funkcia PROMPT vykoná výpis textu alebo textovej premennej na obrazovku.

Pozn. 2: Funkcia IF nemusí obsahovať časť “výrazN“.  Na vetvenie programu môžeme použiť funkciu IF dvakrát: (if (> a 50)  ………..) a (if (<= a 50)  ……....).

Pozn. 3: Na viacnásobné vetvenie môže byť do programu zabudovaná funkcia COND.

 

Pr. 4.3. Do súboru SK.LSP doplňte funkciu na otestovanie, napríklad polomeru oblúka R, ktorý nesmie byť menší než 300.0 m.

(defun C:POLOMER ( )

      (setq r (getreal “\nZadajte hodnotu polomeru oblúka: “))

      (if (>= r 300.0)

             (prompt ”\nPolomer oblúka vyhovuje.”)

             (prompt ”\nPolomer oblúka nevyhovuje.”)

      )

      (princ)

)

 

       V prípade, že využívame viac výrazov v časti “výrazA“ alebo “výrazN“, použijeme funkciu PROGN. Funkcia PROGN zoskupí viac výrazov dohromady.

Textové pole: 		(if (porovnávací_výraz) 
(progn
(výrazA1)
(výrazA2)
---
(výrazAI)
			)
(progn
(výrazN1)
(výrazN2)
---
(výrazNI)
			)
		)

Štruktúra funkcie PROGN, napríklad pri funkcii IF:

 

Pr. 4.4. Doplňte časť programu SK.LSP na test dotyčnice oblúka TOBL pre testovanú dĺžku 100.0 m.

             (defun C:DOTYČNICA ( )

(setq tobl (getreal “\nZadajte dĺžku dotyčnice oblúka: “))

(if (< r 100.0)

      (progn

             (prompt ”\nDĺžka dotyčnice nesmie byť menšia než 100 m!”)

                                 (setq tobl (getreal “\nZadajte NOVÚ dĺžku dotyčnice oblúka: “))

                          )

                    )

                    (princ)

             )

 

Pozn. 1: Hodnoty polomeru R a dotyčnice oblúka TOBL, v príkladoch Pr. 4.3 a Pr. 4.4, by boli v praxi vypočítané programom (napríklad Pr. 7.2). V našom prípade slúžia len na ukážku programu a zadáme ich manuálne pomocou funkcie GETREAL.

Pozn. 2: Pr. 4.4 vykoná požadovaný test len raz funkciou IF. V praxi sa používa na testovanie funkcia WHILE (kap. 4.3), ktorá test opakuje, až kým hodnota vyhovuje danej požiadavke.

 

 

4. 3. Cyklus v programe pomocou funkcií REPEAT a WHILE

 

       Na pevný počet opakovaní príkazov vo funkciách slúži funkcia REPEAT.

Textové pole: 		(repeat N-krát
			(výraz1)
			(výraz2)
			---
			(výrazK)
		)

Štruktúra funkcie REPEAT:

 

       Namiesto pevného stanoveného počtu opakovaní vo funkcií REPEAT sa pri funkcií WHILE opakujú všetky funkcie a príkazy, až kým (pokiaľ) nie je splnená požadovaná podmienka.

Textové pole: 		(while (podmienka)
			(výraz1)
			(výraz2)
			---
			(výrazK)
		)

Štruktúra funkcie WHILE:

Pr. 4.5. Do súboru SK.LSP doplňte novú funkciu DĹŽKA na otestovanie zadanej hodnoty tak, aby nedošlo k zadaniu hodnoty menšej alebo rovnej nule (požadujeme len kladné číslo). Funkciu aplikujte na zadanie dĺžky úseku pomocou premennej VZD.

             (defun C:DĹŽKA ( )

(setq vzd (getreal “\nZadajte dĺžku úseku: “))

(while (<= vzd 0)

             (prompt ”\nHodnota dĺžky úseku nesmie byť <= 0!”)

                                 (setq vzd (getreal “\nZadajte NOVÚ dĺžku úseku: “))

                    )

                    (print vzd)

                    (princ)

             )

Pozn. 1: Funkcia PRINT vytlačí výslednú hodnotu premennej VZD. Funkcia WHILE sa bude opakovať, až kým nezadáme správnu hodnotu, t.j. VZD väčšiu ako nula.

Pozn. 2:  Pri REPEAT a WHILE nie je potrebná funkcia PROGN, budú vykonané všetky výrazy v týchto funkciách.

Pozn. 3:  Na zadanie kladnej hodnoty čísla, v našom prípade VZD, sa používa v programe spravidla funkcia INITGET s príslušným argumentom. Funkcia INITGET kontroluje vstupy pri zadávaní hodnôt (kap. 9.2, Pozn. 16).

(initget (+1 2))

(setq vzd (getreal “\nZadajte dĺžku úseku: “))

 

CVIČENIE 5:      Práca s rôznymi typmi dát

 

       AutoLISP umožňuje spracovanie rôznych typov dát pri načítaní alebo ukladaní údajov dátových súborov, alebo dát jednotlivých objektov nakreslených vo výkrese AutoCADu.

 

5. 1. Typy dát a funkcia TYPE

 

Textové pole: 		(type premenná)

Štruktúra funkcie TYPE:

       Typy dát, ktoré môžeme aplikovať v AutoLISPe:

                    INT             - celé číslo (-32000 až 32000),

                    REAL         - reálne, desatinné číslo,

                    STR            - reťazec, text,

                    FILE           - označenie mena súboru “VSTUP.DAT“ a pod.,

                    ENAME     - meno objektu [Entity Name] v AutoCADe,

   napríklad: eS24deS…, pri každom otvorení výkresu iné,

                    LIST           - zoznam a projektantom definovaný zoznam,

   napríklad v tvare (X Y Z) a pod.,

   alebo asociačný zoznam s kódom,

   napríklad v tvare (10 124.57 278.75 0.00).

Pozn. 1: Funkciu TYPE využívame na otestovanie typu dát za chodu programu, aby nedošlo napríklad k sčítavaniu, násobeniu textov [STR], alebo naopak, k spájaniu premenných, ak ide o premenné napríklad typu celočíselného [INT] alebo reálneho [REAL].

Pr. 5.1. Zadajte a otestujte typ dát jednotlivých premenných funkciou TYPE. Vyskúšajte priamo na príkazovom riadku AutoCADu.

Zadanie vstupných hodnôt:

                    (setq     a 10

                                 b 37.8

                                 c “AutoLISP“

                    )

                    (setq bod (getpoint “\nVyberte bod vo výkrese:“))

                    (setq f (open “VYSLEDKY.DAT“ “w“))

Overte typ premennej pomocou TYPE:

                                 (type a)                           → INT

                                 (type b)                          → REAL

                                 (type c)                           → STR

                                 (type bod)                      → LIST

                                 (type f)                           → FILE

                                 (close f)                                 - odporúčame uzavrieť súbor F.

 

5. 2. Konverzné funkcie na prácu s dátami

 

       Ak spracovávame vypočítané údaje, napríklad staničenie 124.62850 osi komunikácie (cesty, železnice, mostu, a pod.) z obr. 5.1, musíme vykonať prevod čísla tvaru REAL na STR, t.j. na text, nakoľko len text môžeme vykresliť vo výkrese AutoCADu:

(setq KMtxt “KM 124.62850“)

             (command “_text“ bod výška uhol KMtxt).


Obr. 5.1. Vykreslenie staničenia objektu ako text v AutoCADe

       V našom prípade musíme spojiť dva texty “KM_“ a “124.62850“ a vložiť do výkresu. Platí aj opačný prevod, ak potrebujeme staničenie z výkresu v tvare STR, t.j. “124.62850“ previesť na tvar REAL, aby sme mohli hodnotu staničenia spracovávať matematicky.

Niektoré funkcie:

Textové pole: 		(itoa celé_číslo)

- prevod celého čísla na reťazec, text [Integer

   to Ascii].

 

                                       (itoa 1)                           → “1“

                                       (itoa 124)                       → “124“

                                       (itoa 124.6)                    → chyba [Error]

Textové pole: 		(atoi reťazec)

- prevod textu na celé číslo [Ascii to Integer].

 

 

                                       (atoi “27“)                      → 27

                                       (atoi “124.628“)             → 124

Textové pole: 		(atof reťazec)

- prevod textu na desatinné číslo [Ascii to

  Float, Real].

 

                                       (atof “91“)                     → 91.0

                                       (atof “124.62850“)        → 124.62850

 

Textové pole: 		(rtos číslo mód presnosť)

- prevod ľubovoľného čísla na text

   [Real to String].

 

             kde:      mód je ako v príkaze pre jednotky (Jednotky) [Units] v AutoCADe:

1         vedecký [Scientific],

2         desatinný [Decimal],

3         palcový, a pod. [Engineering, etc.],

presnosť je počet desatinných miest.

                                       (rtos 12.69268 2 3)        → “12.692“

                                       (rtos 124.8269642 2 5)  → “12.82696“

                                       (rtos pi 2 7)                    → “3.1415926“

 

Pozn. 1: Funkcia RTOS je potrebná na prevod, napríklad vypočítaných staničení pri ich vykreslení do výkresu (obr. 5.1).

Textové pole: 		(fix číslo)

- prevod na celé číslo odtrhnutím

   desatinnej časti.

 

                                       (fix 7.1)                                 → 7

                                       (fix 7.99)                        → 7

                                       (fix 27)                           → 27

 

Pozn. 2: Funkciu FIX použijeme, ak potrebujeme napríklad staničenie v hektometroch (obr. 5.1). Vynásobíme staničenie 124.62850 desiatimi, odtrhneme desatinnú časť 124|6→2850 a vrátime späť delením desiatimi. Výsledný efekt bude hektometer 124.6.

 

Textové pole: 		(float číslo)

- prevod celého čísla na desatinné číslo.

 

 

                                       (float 4)                          → 4.0

                                       (float 6.73)                     → 6.73

Textové pole: 		(abs číslo)

- absolútna hodnota čísla.

 

 

                                       (abs -100)                       → 100

                                       (abs 27.92)                     → 27.92

 

Textové pole: 		(angtos číslo mód presnosť)

- prevod hodnoty uhla na text

   [Angle to String].

 

             kde:      mód je ako v príkaze pre jednotky (Jednotky) [Units] v AutoCADe

(pre verziu AutoCADu 2002):

0        desatinné stupne [Degrees],

1        stupne/minúty/sekundy [Degrees/Minutes/Seconds],

2        grády [Grads],

3        radiány [Radians],

4        zemepisné jednotky [Surveyor´s Units].

presnosť je počet desatinných miest.

                                       (angtos pi 2 5)         → “200.00000g“

                                       (angtos pi 0 4)         → “180.0000d“

Textové pole: 		(read reťazec)

- prevod reťazca na premennú.

 

 

                                       (read “A B2 C3 D“)      → A

 

5. 3. Práca s reťazcami

 

       V prípade staničenia “KM 124.62850“ z obr. 5.1 je ďalšou úlohou po prevode typu dát, spojiť dva texty “KM_“ a “124.62850“. Iným typom úlohy môže byť napríklad výber časti textu z reťazca “KM 124.6“. V tomto prípade chceme matematicky spracovávať staničenie 124.6.

 

Niektoré funkcie na prácu s reťazcami:

 

Textové pole: 		(strcat reťazec1 reťazec2 ……)

- spojenie dvoch textov.

  

 

                                       (strcat “Auto“ “LISP“)                           → “AutoLISP“

                                       (strcat “a“ “b“ “c“)                                  → “abc“

                          alebo spojenie premennej typu text a textu:

                                       (setq KMst “124.62850“)                       

                                       (setq KMtxt (strcat “KM “ KMst))         → “KM 124.62850“

Textové pole: 		(strlen reťazec)

- zistenie dĺžky reťazca [String Length],

   t.j. počet znakov.

 

                                       (strlen “abcd“)                                  → 4

                                       (strlen “KM 124.62850“)                  → 12

                                       (strlen “prvý“ “druhý“)                     → 9

Pozn. 1: Ak umiestnime text vľavo od osi komunikácie na obr. 5.1, určíme dĺžku textu dTXT = 1.2*N + D podľa počtu znakov N. Hodnota 1.2 je priemerná dĺžka jedného znaku v texte, ktorú si zvolíme, D je odsadenie textu od objektu. Alebo vložíme text zarovnaný vpravo.

Pozn. 2: Druhá možnosť využitia je pri zápise dát do dátového súboru do stĺpcov, nakoľko napríklad dĺžka dotyčnice môže byť 7.00, 70.00 alebo 700.00 m.

       Doplnenie programu na zarovnanie desatinných bodiek hodnôt premenných, napríklad pre 10 znakov si uvedieme následne. Musíme zistiť dĺžku textu a pridať prázdne medzery  “_“ pred text.

Časť programu na zarovnanie stĺpcov v dátovom súbore:

             (setq do (getreal “\nZadajte dĺžku dotyčnice:“))         - dĺžka D0 je spravidla z výpočtu,

             (setq doTXT (rtos do 2 3))                                       v našom prípade ju zadáme

             (setq doDL (length doTXT))                                          priamo pomocou SETQ.

             (setq n 10)                                                             - N je šírka stĺpca,

             (while (<= (- n doDL))                                             v našom prípade 10 znakov.

                    (setq doTXT (strcat “ “ doTXT))

                    (setq doDL (+ doDL 1))

             )

             (setq f (open “Výsledky.dat“ “a“))                       - uloženie premennej v textovom

             (print doTXT f)                                                        tvare D0TXT do dátového

             (close f)                                                                           súboru funkciou PRINT.

 

Textové pole: 		(substr reťazec štart dĺžka)

       - získanie podreťazca z reťazca.

 

 

                                       (substr “Automobil“ 1 4)                  → “Auto“

                                       (substr “AutoCAD“ 5)                     → “CAD“

                                       (substr “KM 124.6“ 4 5)                   → “124.6“

 

5. 4. Funkcie na výpis údajov na obrazovku a do súborov

 

       Na zapínanie a vypínanie textového okna v AutoCADe slúži tlačidlo F2. V prípade programu vytvoreného v AutoLISPe je programové zapínanie textového okna funkciami TEXTSCR a GRAPHSCR.

Textové pole: 		(textscr)

- zapnutie textového okna v AutoCADe.

 

 

Textové pole: 		(graphscr)

- vypnutie textového okna v AutoCADe.

 

 

Pozn. 1: V prípade, že vlastníme dva monitory – textový a grafický, texty sú automaticky zobrazované aj na druhom monitore (textovom).

       Text, ktorý chceme vypísať na obrazovke v mieste príkazového riadku alebo v textovom móde obrazovky, vypíšeme funkciou PROMPT.

Textové pole: 		(prompt reťazec)

- zobrazí výpis textu alebo výzvu

   na obrazovku.

 

                                 (prompt “\nVykreslenie bolo ukončené.“)

 

       Všetky funkcie na výpis údajov na obrazovku a do súboru sú podobné. V prípade, že vynecháme časť “súbor“, výpis bude zobrazený na obrazovke od postavenia kurzora. Ak potrebujeme začať na novom riadku, použijeme špeciálne znaky “\n“.

Textové pole: 		(princ výraz súbor)

- vytlačí výraz alebo obsah premennej do

   súboru, ak je uvedená premenná pre súbor.

 

                                 (princ “\nVýsledné súradnice bodu: “)

                                 (princ “X= “)          - výpis textu “X=“ na obrazovku,

                                 (princ x)                  - výpis hodnoty premennej X na obrazovku,

                                 (princ “      “)           - výpis prázdnych znakov na obrazovku.

                                 (princ “Y= “)

                                 (princ y)

 

       Do súboru uložíme, ak zadáme parameter pre súbor, napríklad F (kap. 6.1):

                                 (setq f (open “VYSLEDKY.DAT“ “a“))

                                 (princ “\nČB:  “ f)   - výpis textu “ČB: “ na nový riadok do súboru F,

                                 (princ cb f)              - výpis hodnoty premennej CB do súboru F,

                                 (princ “      “ f)        - výpis prázdnych znakov do súboru F.

                                 (princ x f)

                                 (princ “      “ f)

                                 (princ y f)

                                 (close f)

 

Pozn. 2: Dátový súbor F musí byť pred prácou otvorený funkciou OPEN (v tomto príklade súbor musí už existovať) a po práci uzatvorený funkciou CLOSE (kap. 6.1 a kap. 6.2).

Pozn. 3: Funkcie na tlač PRINT a PRIN1 sú podobné ako PRINC, ale vykonajú iný zápis dát. Napríklad PRINT vytlačí na nový riadok a pridá medzeru. Vyskúšajte si tú istú premennú vytlačiť do súboru viackrát pomocou PRINC, PRINT a PRIN1.

Další kapitola