PRÍLOHY 9:       Zdrojové texty programov

 

Pozn. 1: Na začiatku programu je potrebné zistiť počiatočné hodnoty systémových premenných funkciou GETVAR, nakoľko ich v priebehu programu budeme meniť.

Pozn. 2: Po ukončení programu LSP je vhodné, aby systémové premenné AutoCADu obsahovali hodnoty, ktoré boli pred spustením programu a bolo možné plynulo pokračovať v práci aj po ukončení programu LSP (v tomto príklade premenné CMD, FB, BL pre cmdecho, farbu a značky).

 

 
9. 1. Program SKRUTKA.LSP

 

(Pr. 1.1)

 

; Program na vykreslenie skrutky a matice

(defun C:SKRUTKA ()

   ; Začiatok programu

   (setq cmd (getvar "cmdecho"))

   (setq fb (getvar "cecolor"))

   ; Prevod radiánov na stupne

   (setq rad (/ 180 pi))

   ; Kreslenie skrutky - S, matice - M

   (initget 1 "S M")

   (setq vyber (getkword "\nKRESLENIE SKRUTKY

   ALEBO MATICE? [S,M]: "))

   ; Vykreslenie skrutky

   (if (= vyber "S")

     (progn

       ;Zadávanie požadovaných hodnôt

       (setq bod0 (getpoint "\nVYBERTE BOD VLOŽENIA SKRUTKY: "))

       (setq l (getreal "\nZADAJTE DĹŽKU SKRUTKY [mm]: "))

       (setq d (getreal "\nZADAJTE PRIEMER SKRUTKY [mm]: "))

       (setq v (getreal "\nZADAJTE VÝŠKU HLAVY [mm]: "))

       (setq z (getreal "\nZADAJTE DĹŽKU ZÁVITU [mm]: "))

       (prompt "\nDĺžka závitu musí byť násobkom stúpania závitu!"))

       (setq s (getreal "\nZADAJTE STUPANIE ZÁVITU [mm]: "))

       ;Výpočet bodov polárnou metódou

       (setq bodV (polar bod0 (/ 90 rad) v))                        (setq bodD (polar bod0 (/ 270 rad) l))

       (setq bodZ (polar bod0 (/ 270 rad) (- l z)))       (setq bodVL (polar bodV (/ 180 rad) (* d 1.2)))

       (setq bodVP (polar bodV 0 (* d 1.2)))              (setq bod0L (polar bod0 (/ 180 rad) (* d 1.2)))

       (setq bod0P (polar bod0 0 (* d 1.2)))              (setq bodDL (polar bodD (/ 180 rad) (/ d 2)))

       (setq bodDP (polar bodD 0 (/ d 2)))                          (setq bodHL (polar bod0 (/ 180 rad) (/ d 2)))

       (setq bodHP (polar bod0 0 (/ d 2)))                  (setq bodZL (polar bodZ (/ 180 rad) (/ d 2)))

       (setq bodZP (polar bodZ 0 (/ d 2)))

       ;Vykreslenie úsečiek

       (command "_line" bodVL bodVP "")                (command "_line" bodVL bod0L "")

       (command "_line" bod0L bod0P "")                (command "_line" bod0P bodVP "")

       (command "_line" bodHL bodDL "")                        (command "_line" bodDL bodDP "")

       (command "_line" bodDP bodHP "")                       (command "_line" bodZL bodZP "")

       ; Vykreslenie závitov

       (setq i 0)

       (setq bodZ1L (polar bodZL (/ 270 rad) s))

       (setq bodZ1P bodZP)  

       (command "_line" bodZ1L bodZ1P "")

       (while (< i (- z s))

          (setq bodZ1L (polar bodZ1L (/ 270 rad) s))                  (setq bodZ1P (polar bodZ1P (/ 270 rad) s))

          (command "_line" bodZ1L bodZ1P "")

          (setq i (+ i s))

       )

       ; Dokreslenie hlavy skrutky

       (setq bod1L (polar bodV (/ 180 rad) (* d 0.6)))       (setq bod1P (polar bodV 0 (* d 0.6)))

       (setq bod2L (polar bod0 (/ 180 rad) (* d 0.6)))       (setq bod2P (polar bod0 0 (* d 0.6)))

       (command "_line" bod1L bod2L "")                         (command "_line" bod1P bod2P "")

   ))

   ; Vykreslenie matice

   (if (= vyber "M")

     (progn

       (setq bod0 (getpoint "\nVYBERTE BOD VLOŽENIA MATICE: "))

       (setq d (getreal "\nZADAJTE PRIEMER SKRUTKY: "))

       (command "_circle" bod0 (/ d 2))  (command "_polygon" 6 bod0 "_i" (* d 1.2))

    ))

   ; Ukončenie programu SKRUTKA.LSP, vrátenie hodnôt premenným pre farbu a cmdecho

   (command "_color" fb)

   (setvar "cmdecho" cmd)

   (prompt "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")

   (if (= vyber "S") (prompt "\nKONIEC - Skrutka bola vykreslená."))

   (if (= vyber "M") (prompt "\nKONIEC - Matica bola vykreslená."))

   (princ)

)

 

 

9. 2.   Program PRECH.LSP

 

Textové pole: Pozn. 1: Program na vykreslenie oblúka s prechodnicami je zostavený tak, že vyberáme body z už vytvoreného dotyčnicového polygónu: vrcholový bod VB (premenná VB), smer 1. dotyčnice (ZOpom) a smer 2. dotyčnice (KOpom). Ďalej zadávame hodnoty na vykreslenie, ako sú polomer oblúka R a dĺžka prechodnice L, ktoré musia vyhovovať predpisom a normám (program ich netestuje), obr. 7.2.

(Pr. 7.2)

 

; Oblúk s prechodnicami v  tvare klotoidy

; © Ing. Stanislav HODAS, PhD.,  17.4.2001

(defun C:PRECH ( )

 (setq cm (getvar "cmdecho"))

 (setvar "cmdecho" 0)

 (setq fb (getvar "cecolor"))

 (vmon)

 (setq bl (getvar "blipmode"))

 (setq grad (/ 200 pi))

 ; Mierka kreslenia 1:1, t.j. M 1:1000 (1mm = 1m)

 (setq n 1)

 ; Výška textu podľa mierky 1:1

 (setq vys (* n 2))

 (setq tvar 1)

 ; Vyber bodov na obrazovke: VB, body pre smer 1. a 2. dotyčnice

 (setq VB (getpoint "\nZadajte vrcholový bod oblúka VB : "))

 (setq ZOpom (getpoint "\nZadajte bod pre smer prvej dotyčnice : "))

 (setq KOpom (getpoint "\nZadajte bod pre smer druhej dotyčnice : "))

 ; Vypočet uhlov a ALFA

 (setq uhZO (* (angle ZOpom VB) grad))

 (setq uhKO (* (angle VB KOpom) grad))

 (if (< uhKO uhZO) (setq tvar 1))

 (if (> uhKO uhZO) (setq tvar 2))

 (if (and (>= uhZO 0) (< uhZO 100) (< uhKO 400) (> uhKO 300))  (setq tvar 1) )

 (if (and (< uhZO 400) (> uhZO 300) (>= uhKO 0) (< uhKO 100))  (setq tvar 2) )

 (if (= tvar 1) (progn

Pozn. 2: Pri výpočte oblúka musíme uvažovať s variantami oblúkov (ľavostranný a pravostranný), musíme ošetriť program na kvadranty dotyčníc, v našom prípade smer osí 0, 100, 200, 300, 400g.

 
   (setq alfa (- uhZO uhKO))

   (if (< alfa 0) (setq alfa (+ alfa 400)))

 ))

 (if (= tvar 2) (progn

   (setq alfa (- uhKO uhZO ))

   (if (< alfa 0) (setq alfa (+ alfa 400)))

 ))

 (setq alfapol (/ alfa 2))

 ; Zadanie polomeru oblúka R a dĺžky prechodnice L (bez testov)

 (setq r (getreal "\nZadajte polomer oblúka, aby vyhovoval predpisom R: "))

 (while (or (= r nil) (= r 0))

   (prompt "\nNEPLATNÉ zadanie. Nesmie byť NIL, ani NULA....")

   (setq r (getreal "\nZadajte ZNOVU polomer R: "))

 )

 (setq l (getreal "\n Zadajte dĺžku prechodnice, aby vyhovovala predpisom L: "))

 (while (or (= l nil) (= l 0))

   (prompt "\nNEPLATNÉ zadanie. Nesmie byť NIL, ani NULA....")

   (setq l (getreal "\nZadajte ZNOVU dĺžku prechodnice L: "))

 )

 (prompt "\n*")

 (prompt "\n*")

 (prompt "\nČAKAJTE .....")

Pozn. 3: Súradnice bodov môžeme zadávať v Auto-LISPe v tvare:

  pravouhlé: x,y

  polárne:     @uhol<dĺžka

  súradnicové rozdiely:

                    @∆x,∆y

Znak ”@” je zadaný z klávesnice IBM alebo sústavou tlačidiel ALT+6+4 z numerickej klávesnice.

Polárne súradnice a súradnicové rozdiely sa využívajú pri vytváraní druhého bodu z prvého, alebo pri posune a kopírovaní objektov.

 
 ; Výpočet oblúka – hlavných bodov a parametrov

 (setq A (sqrt (* r l)))

 (setq k (/ l A))

 (setq vyr1 (* (* (* (* (/ l 40.0) k) k) k) k))

 (setq vyr2 (* (* (* (* (* (* (* (* (/ l 3456.0) k) k) k) k) k) k) k) k))

 (setq vyr3 (* (* (/ l 6.0) k) k))

 (setq vyr4 (* (* (* (* (* (* (/ l 336.0) k) k) k) k) k) k))

 (setq vyr5 (* (* (* (* (* (* (* (* (* (* (/ l 42240.0) k) k) k) k) k) k) k) k) k) k))

 (setq xPK (+ (- l vyr1) vyr2))

 (setq yPK (+ (- vyr3 vyr4) vyr5))

 (setq tau (/ (* 200 l) (* 2.0 pi r)))

 (setq m (- yPK (* (- 1 (cos (/ tau grad))) r)))

 (setq xS (- xPK (* r (sin (/ tau grad)))))

 (setq yS (+ r m))

 (setq tOBL (+ xS (* (+ r m) (/ (sin (/ alfapol grad)) (cos (/ alfapol grad))))))

 (setq sT (* yPK (/ (cos (/ tau grad)) (sin (/ tau grad)))))

 (setq tK (/ yPK (sin (/ tau grad))))

 (setq z (- (/ (+ r m) (cos (/ alfapol grad))) r))

 (setq do (/ (* (- alfa (* 2.0 tau)) pi r) 200.0))

 (setq DDo (+ (* 2.0 l) (/ (* (- alfa (* 2.0 tau)) pi r) 200.0)))

 (setq beta (/ (- 200.0 alfa) 2.0))

 (setq uhVBZO (- uhZO 200))

 (if (< uhVBZO 0)(setq uhVBZO (+ uhVBZO 400)))

 (if (= tvar 1) (progn

   (setq uhSO (+ uhVBZO beta))

   (if (>= uhSO 400) (setq uhSO (- uhSO 400)))

Pozn. 4: Vzorce pri výpočte klotoidy (ich čitateľ a menovateľ) je možné vypočítať násobením premennej K. Násobenie je vykonávané rýchlejšie než umocňovanie.

       V prvom rade vypočítame parametre hlavných bodov oblúka TP (ZP), PK (ZO), KK (SO), KP (KO) a PT (KP), obr. 7.2.

V zátvorkách sú uvedené použité jednotlivé premenné, a rovnako sú označované pre železničné staviteľstvo. Program je vytváraný univerzálne aj pre železničné staviteľstvo (potrebné upraviť prechodnicu na tvar kubickej paraboly).

 
 ))

 (if (= tvar 2) (progn

   (setq uhSO (- uhVBZO beta))

   (if (< uhSO 0)(setq uhSO (+ uhSO 400)))

 ))

 (setq uhSOVB (- uhSO 200))

 (if (< uhSOVB 0) (setq uhSOVB (+ uhSOVB 400)))

 (setq uhtZP (+ uhVBZO 100))

 (if (>= uhtZP 400) (setq uhtZP (- uhtZP 400)))

 (setq uhtKP (- uhKO 100))

 (if (< uhtKP 0) (setq uhtKP (+ uhtKP 400)))

 (setq uhtVB (+ uhSO 100))

 (if (>= uhtVB 400) (setq uhtVB (- uhtVB 400)))

 (setq uhtVBs (+ uhtVB 200))

 (if (>= uhtVBs 400) (setq uhtVBs (- uhtVBs 400)))

 (setq lx (- tOBL xPK))

 (setq MZO (polar VB (/ uhVBZO grad) lx))

 (setq MKO (polar VB (/ uhKO grad) lx))

 (setq M1 (polar VB (/ uhVBZO grad) (+ lx sT)))

 (setq M2 (polar VB (/ uhKO grad) (+ lx sT)))

 (if (= tvar 1) (progn

   (setq uhMZO (+ uhVBZO 100))

   (if (>= uhMZO 400) (setq uhMZO (- uhMZO 400)))

Pozn. 5: V cestnom staviteľstve využívame prechodnicu v tvare klotoidy. V železnič-nom staviteľstve sa navrhuje kubická parabola, Blossová prechodnica (rovnako v Českej republike) [15]. Napríklad v Nemecku sa v železničnom staviteľstve používa klotoida a Blossová prechodnica [7], [8], [11].

       Dĺžky prechodníc sa musia v našom príklade voliť tak, aby vyhovovali predpisom a normám.

 
   (setq uhMKO (- uhKO 100))

   (if (< uhMKO 0) (setq uhMKO (+ uhMKO 400)))

 ))

 (if (= tvar 2) (progn

   (setq uhMZO (- uhVBZO 100))

   (if (< uhMZO 0) (setq uhMZO (+ uhMZO 400)))

   (setq uhMKO (+ uhKO 100))

   (if (>= uhMKO 400) (setq uhMKO (- uhMKO 400)) )

 ))

 (setq SO (polar VB (/ uhSO grad ) z))

 (setq ZO (polar MZO (/ uhMZO grad ) yPK))

 (setq KO (polar MKO (/ uhMKO grad ) yPK))

 (setq ZP (polar VB (/ uhVBZO grad) tOBL))

 (setq KP (polar VB (/ uhKO grad) tOBL))

 (setq uhKPVB (- uhKO 200))

 (if (< uhKPVB 0) (setq uhKPVB (+ uhKPVB 400)))

 (setq VBt (polar VB (/ uhSOVB grad) (* 3.5 n)))

 

Pozn. 6: Prechodnica bude vykreslená ako krivka (Křivka) [Pline] pomocou výpočtu súradníc z rovníc (obr. 7.2), pričom si stanovíme interval vykresľovania LPX (v našom prípade 1.0 m). V prípade presnejšieho vykreslenia je potrebné zvoliť si menší inkrement LPX vo vytvorenom programe v AutoLISPe.

(setq lpX (+ lpX 1.0))

       Oblúk je vykreslený pomocou funkcie oblúk (Oblouk) [Arc] pomocou 3 bodov (3B) [3P], t.j. body PK (ZO), KK (SO) a KP (KO).

 
; Vykreslenie kružnicového oblúka

 (command "_color" 3)

 (command "_arc" ZO SO KO)

 (setq o1 (entlast))

 (setq zoz (entget o1))

 (setq sOBL (cdr (assoc 10 zoz)))

 ; Výpočet a vykreslenie 1. prechodnice - klotoidy

 (command "_color" 2)

 (setq lpX 0.0)

 (setq X 0.0)

 (setq Y 0.0)

 (setq k 0.0)

 (setvar "blipmode" 0)

 (command "_pline" zp)

 (while (<= lpX l)

  (if (/= lpX 0) (progn

   (setq k (/ lpX A))

   (setq vyr1 (* (* (* (* (/ lpX 40.0) k) k) k) k))

   (setq vyr2 (* (* (* (* (* (* (* (* (/ lpX 3456.0) k) k) k) k) k) k) k) k))

   (setq vyr3 (* (* (/ lpX 6.0) k) k))

   (setq vyr4 (* (* (* (* (* (* (/ lpX 336.0) k) k) k) k) k) k))

   (setq vyr5 (* (* (* (* (* (* (* (* (* (* (/ lpX 42240.0) k) k) k) k) k) k) k) k) k) k))

Pozn. 7: Vykreslenie prechodnice začíname z bodu TP (ZP), kde začiatok výpočtu je X = 0, Y = 0 (pravouhlé súradnice od dotyčnice TP–VB), obr. 7.2.

       Postupne vypočítame súradnice bodu YY a pospájame krivkou z predchádzajúcim bodom YY, čo nám zabezpečí postupnosť príkazov:

         (command "_pline" zp)

(while (<= lpX l)

:

(setq XX (polar ZP (/ uhZO grad) X))

(setq YY (polar XX (/ uhMZO grad) Y))

(command YY)

:

         )

 

 

 

 
   (setq X (+ (- lpX vyr1) vyr2))

   (setq Y (+ (- vyr3 vyr4) vyr5))

  ))

  (setq XX (polar ZP (/ uhZO grad) X))

  (setq YY (polar XX (/ uhMZO grad) Y))

  (command YY)

  (setq lpX (+ lpX 1.0))

 )

 (command ZO "")

 (setq o2 (entlast))

 ; Výpočet a vykreslenie 2. prechodnice - klotoidy

 (setq lpX 0.0)

 (setq X 0.0)

 (setq Y 0.0)

 (setq k 0.0)

 (command "_pline" kp)

 (while (<= lpX l)

 (if (/= lpX 0) (progn

   (setq k (/ lpX A))

   (setq vyr1 (* (* (* (* (/ lpX 40.0) k) k) k) k))

   (setq vyr2 (* (* (* (* (* (* (* (* (/ lpX 3456.0) k) k) k) k) k) k) k) k))

   (setq vyr3 (* (* (/ lpX 6.0) k) k))

   (setq vyr4 (* (* (* (* (* (* (/ lpX 336.0) k) k) k) k) k) k))

   (setq vyr5 (* (* (* (* (* (* (* (* (* (* (/ lpX 42240.0) k) k) k) k) k) k) k) k) k) k))

Pozn. 8: Vykreslená klotoida sa správa ako jeden celok, nakoľko je vytvorená ako krivka (Křivka) [Pline]. Po vykreslení prechodnice obidva objekty uložíme do premenných O2 a O3 (Pr. 6.7):

             (setq o2 (entlast))

             (setq o3 (entlast))

Funkcia ENTLAST uloží do premennej posledný nakreslený objekt. Potom neskôr v programe môžeme s objektom pracovať, napríklad vymaž [Erase], zmena [Change], hladina [Layer] a pod.

 
   (setq X (+ (- lpX vyr1) vyr2))

   (setq Y (+ (- vyr3 vyr4) vyr5))

  ))

  (setq XX (polar KP (/ uhKPVB grad) X))

  (setq YY (polar XX (/ uhMKO grad) Y))

  (command YY)

  (setq lpX (+ lpX 1.0))

 )

 (command KO "")

 (setq o3 (entlast))

 (setvar "blipmode" bl)

 ; Výpis vypočítaných údajov na obrazovku

 (textscr)

 (repeat 7  (prompt "\n   "))

 (prompt "\n           O B L Ú K    S    K L O T O I D O U :")

 (prompt "\n ****************************************************")

 (prompt "\n         OBLÚK:")

 (prompt "\n            Polomer oblúka:                             R= ")

 (princ (rtos r 2 3)) (prompt "m")

 (prompt "\n            Stredový uhol:                             alfa= ")

 (princ (angtos (/ alfa grad) 2 5))

Textové pole: Pozn. 9: V prípade, že parametre oblúka odkladáme do súboru OBLUKY.DAT, musíme otvoriť súbor na odkladanie dát:
(setq f (open “OBLUKY.DAT“ “a“))
(princ “\n“ f)
(princ identif f) 
(princ “     “ f)
(princ (rtos r 2 3) f) 
(princ “     “ f)
(princ (angtos (/ alfa grad) 2 5) f)
(princ “     “ f)
(princ (rtos tOBL 2 4) f) 
(princ “     “ f)
(princ (rtos z 2 3) f) 
(princ “     “ f)
(princ (rtos do 2 3) f) 
(princ “     “ f)
(princ (rtos xPK 2 3) f) 
(princ “     “ f)
(princ (rtos yPK 2 3) f)
(princ “     “ f)
(princ (rtos l 2 3) f) 
…
(close f)
(prompt "\n***************************")
(prompt "\n   Parametre oblúka sú 
           uložené v súbore OBLUKY.DAT")
Uvedené údaje nebudú ešte uložené v stĺpcoch, ale oddelené len medzerami (kap. 5.3). Znak “\n“ zabezpečí písanie údajov na nový riadok.
 (prompt "\n            Dotyčnica [ZP-VB], [VB-KP]:           T= ")

 (princ (rtos tOBL 2 4)) (prompt "m")

 (prompt "\n            Vzdialenosť VB-KK:                          z= ")

 (princ (rtos z 2 3)) (prompt "m")

 (prompt "\n            Dĺžka kružnicového oblúka:           do= ")

 (princ (rtos do 2 3)) (prompt "m")

 (prompt "\n         KLOTOIDICKÁ PRECHODNICA:")

 (prompt "\n            Dĺžka prechodnice v dotyčnici:    xPK= ")

 (princ (rtos xPK 2 3)) (prompt "m")

 (prompt "\n            Poradnica koncového bodu:        yPK= ")

 (princ (rtos yPK 2 3)) (prompt "m")

 (prompt "\n            Dĺžka prechodnice v osi:                  L= ")

 (princ (rtos l 2 3)) (prompt "m")

 (prompt "\n            Dĺžka oblúka s prechodnicou:         O= ")

 (princ (rtos DDo 2 3)) (prompt "m")

 (prompt "\n            Odsadenie kružnicového oblúka:  dR= ")

 (princ (rtos m 2 3)) (prompt "m")

 (prompt "\n            Parameter klotoidy:                           A= ")

 (princ (rtos A 2 3)) (prompt "m")

 (prompt "\n            Dotyčnicový uhol v PK a KP:        tau= ")

 (princ (rtos tau 2 5)) (prompt "g")

 (prompt "\n            Dĺžka subtangenty:                          sT= ")

 (princ (rtos sT 2 3)) (prompt "m")

 (prompt "\n            Dĺžka krátkej dotyčnice:                  tK= ")

 (princ (rtos tk 2 3)) (prompt "m")

 (prompt "\n *******************************************************")

 (prompt "\n                                   Stlačte klávesu ENTER...")

 (read-char)

 (graphscr)

 (prompt "\n ")

 (prompt "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")

 ; Overenie správnosti vykreslenia (vizuálne), Pozn. 8 a 10

 (initget 1 "Ano Nie")

 (setq obl (getkword "\nChcete nakreslený oblúk? [A/N]: "))

 ; Vymazanie objektov

  (if (= obl "Nie") (progn

   (command "_erase" o1 "")

   (command "_erase" o2 "")

   (command "_erase" o3 "")

Pozn. 10: Po vykreslení objektov (teraz sú žltej a zelenej farby) môže projektant rozhodnúť o ďalšom postupe, čo zabezpečujú kľúčové slová vo funkcií GETKWORD, aktivované v INITGET.

       V našom prípade, ak odpovieme NIE, objekty budú vymazané (Vymaž) [Erase].

(command "_erase" o1 o2 o3 "")

       Ak odpovieme ÁNO, t.j. navrhnuté objekty vyhovujú projektantovi, zmeníme farbu na červenú [Red] príkazom na zmenu (Změna) [Change], jeden objekt (Jednou) [Single], vlastnosti [Properties], farbu (Barva) [Color].

(command "_change" "_SI" o1

"_P" "_C" "1" "")

       Prípadne zmeníme hladinu (Hladina) [Layer], čo si môžeme doplniť.

 

 
   (command "_color" 1)

   (command "_color" fb)

   (princ "OK")

   (setvar "cmdecho" cm)

   (prompt "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")

   (prompt "\nOblúk s klotoidou nebol vykreslený.")

   (princ)

  ))

 ; Zmena vlastností nakreslených objektov (Pozn. 10)

 ; a doplnenie textov

 (if (= obl "Ano") (progn

   (prompt "\n*")

   (prompt "\nČAKAJTE .....")

   (setvar "blipmode" 0)

   (command "_color" 1)

   (command "_change" "_SI" o1 "_P" "_C" "1" "")

   (command "_change" "_SI" o2 "_P" "_C" "1" "")

   (command "_change" "_SI" o3 "_P" "_C" "1" "")

   ; Vykreslenie značiek - v bodoch TP, PK, KK, KP a PT

   (setq bodH (polar ZP (/ uhtZP grad) (* -0.8 n)))

   (setq bodD (polar ZP (/ uhtZP grad) (* 0.8 n)))

   (command "_line" bodH bodD "")

   (setq uhBS (* (angle ZO sOBL) grad))

   (setq bodH (polar ZO (/ uhBS grad) (* -0.8 n)))

   (setq bodD (polar ZO (/ uhBS grad) (* 0.8 n)))

   (command "_line" bodH bodD "")

   (setq bodH (polar SO (/ uhSO grad) (* -0.8 n)))

   (setq bodD (polar SO (/ uhSO grad) (* 0.8 n)))

   (command "_line" bodH bodD "")

   (setq uhBS (* (angle KO sOBL) grad))

   (setq bodH (polar KO (/ uhBS grad) (* -0.8 n)))

   (setq bodD (polar KO (/ uhBS grad) (* 0.8 n)))

   (command "_line" bodH bodD "")

   (setq bodH (polar KP (/ uhtKP grad) (* -0.8 n)))

   (setq bodD (polar KP (/ uhtKP grad) (* 0.8 n)))

   (command "_line" bodH bodD "")

   ; Označenie vrcholového bodu VB dotyčnicového polygónu

   (setq identif (getstring "\nZadajte označenie vrcholového bodu VB: "))

   (setq identVB (strcat "VB" identif))

   (initget 1 "Ano Nie")

   (setq pop (getkword "\nPopis parametrov bude čitateľný zvnútra oblúka? (Áno/Nie): "))

   (prompt "\n*")  (prompt "\n*")

Pozn. 11: Popis textu oblúka musí byť opäť vypracovaný variantne, t.j. orientácia textu podľa umiestnenia oblúka s klotoidou vo výkrese.

       Ak odpovieme  ÁNO, texty (PT až TP) budú  čitateľné zo stredu oblúka, z bodu sOBL, podľa obr. 9.1.

Do výkresu bude vložený popis hlavných bodov oblúka TP (ZP), PK (ZO),  KK (SO),  KP  (KO), PT (KP) a vrcholový bod dotyčnicového polygónu VB (identVB), obr. 7.3.

 
   (prompt "\nČAKAJTE .....")

   ; Uloženie parametrov oblúka – text z Pozn. 9

   ; Vykreslenie parametrov oblúka do výkresu

   (setvar "blipmode" bl)

   (command "_circle" VB (* 0.75 n))

   (setq uht (+ uhSO 100))

   (if (>= uht 400) (setq uht (- uht 400)))

   (setq uhts (+ uht 200))

   (if (>= uhts 400) (setq uhts (- uhts 400)))

   (setq uhtsU uhts)

   (setq dALF (* (/ (strlen (rtos alfa 2 5)) 2) (* 2.0 n)))

   (setq dP (* (+ (/ (strlen (rtos r 2 3)) 2) 1) (* 2.0 n)))

   (setq dT (* (+ (/ (strlen (rtos tOBL 2 3)) 2) 1.5) (* 2.0 n)))

   (setq dLP (* (+ (/ (strlen (rtos l 2 3)) 2) 1) (* 2.0 n)))

   (setq uht (+ uhSO 100))

   (if (>= uht 400) (setq uht (- uht 400)))

   (setq uhts (+ uht 200))

   (if (>= uhts 400) (setq uhts (- uhts 400)))

   ; Vykreslnie textov v oblúku - čitateľný zvnútra oblúka

   (if (= pop "Ano") (progn

     (command "_text" "_M" VBt (* 3 n) uhtVB identVB)

     (setq bodT (polar ZP (/ uhtZP grad) (* 3.5 n)))

     (command "_text" "_M" bodT (* 3 n) uhZO "TP")

     (setq uhBS (* (angle ZO sOBL) grad))

Pozn. 12: Smery jednotlivých uhlov, ktoré využíva funkcia POLAR a príkaz pre text [Text] na výpis popisu, sú uvedené na obr. 7.2 a obr. 9.1.

 
     (setq uht (+ uhBS 100.0))

     (if (>= uht 400.0) (setq uht (- uht 400.0)))

     (setq bodT (polar ZO (/ uhBS grad) (* 3.5 n)))

     (command "_text" "_M" bodT (* 3 n) uht "PK")

     (setq bodT (polar SO (/ uhSO grad) (* 3.5 n)))                 

     (command "_text" "_M" bodT (* 3 n) uhtVB "KK")

     (setq uhBS (* (angle KO sOBL) grad))

     (setq uht (+ uhBS 100.0))

     (if (>= uht 400.0) (setq uht (- uht 400.0)))

     (setq bodT (polar KO (/ uhBS grad) (* 3.5 n)))

     (command "_text" "_M" bodT (* 3 n) uht "KP")

     (setq bodT (polar KP (/ uhtKP grad) (* 3.5 n)))

     (command "_text" "_M" bodT (* 3 n) uhKO "PT")

   ))

   ; Vykreslnie textov v oblúku - čitateľný zvonku oblúka

   (if (= pop "Nie") (progn

     (command "_text" "_M" VBt (* 3 n) uhtVBs identVB)  

     (if (= tvar 1) (progn

       (setq bodT (polar ZP (/ uhtZP grad) (* 3.5 n)))

       (command "_text" "_M" bodT (* 3 n) uhVBZO "TP")

     ))

     (if (= tvar 2) (progn

       (setq bodT (polar ZP (/ uhtZP grad) (* -3.5 n)))

       (command "_text" "_M" bodT (* 3 n) uhZO "TP")

     ))                                                                            Obr. 9.1. Jednotlivé premenné pri vykreslení textov

     (setq uhBS (* (angle ZO sOBL) grad))

     (setq uht (- uhBS 100.0))                   

     (if (< uht 0) (setq uht (+ uht 400.0)))

     (setq bodT (polar ZO (/ uhBS grad) (* 3.5 n)))

     (command "_text" "_M" bodT (* 3 n) uht "PK")

     (setq bodT (polar SO (/ uhSO grad) (* 3.5 n)))

     (command "_text" "_M" bodT (* 3 n) uhtVBs "KK")

     (setq uhBS (* (angle KO sOBL) grad))

     (setq uht (- uhBS 100.0))

     (if (< uht 0) (setq uht (+ uht 400.0)))

     (setq bodT (polar KO (/ uhBS grad) (* 3.5 n)))

     (command "_text" "_M" bodT (* 3 n) uht "KP")

     (if (= tvar 1) (progn

       (setq bodT (polar KP (/ uhtKP grad) (* 3.5 n)))

       (command "_text" "_M" bodT (* 3 n) uhKPVB "PT")

     ))

     (if (= tvar 2) (progn

       (setq bodT (polar KP (/ uhtKP grad) (* -3.5 n)))

       (command "_text" "_M" bodT (* 3 n) uhKO "PT")

     ))

   ))                                                 Obr. 9.2. Vykreslenie popisnej tabuľky parametrov oblúka

   ; Vykreslenie tabuľky s parametrami

   (setq odsad 30)                                                               

Pozn. 13: Na vykreslenie tabuľky na výpis parametrov oblúka využijeme premenné B0, B1, B2, B3, B4, B5 a B6 (obr. 9.2). V prípade, že vykreslíme prvú časť tabuľky,  použijeme tieto premenné aj na konštrukciu ďalších riadkov tabuľky (šetríme miesto v pamäti počítača veľkosťou premenných).

       Jednotlivé riadky s potrebnými textami sú vykreslené v sekciách, ktoré rozoznáme podľa (= i 1) až (= i 7). Jednotlivé sekcie sú nutné, nakoľko sú tu uvedené rôzne texty, ich umiestnenie a orientácia. Bolo by možné vypracovať túto časť univerzálnejšie.

 
   (setq b0 (polar SO (/ uhSO grad) odsad))

   (setq b1 (polar b0 (/ (+ uhSO 100) grad) 12.5))

   (setq b2 (polar b0 (/ (- uhSO 100) grad) 12.5))

   (setq b0 (polar SO (/ uhSO grad) (+ odsad 5)))

   (setq b3 (polar b0 (/ (+ uhSO 100) grad) 27))

   (setq b4 (polar b0 (/ (- uhSO 100) grad) 27))

   ; Výpis parametra VB

   (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

   (command "_text" "_C" bodT (* 3 n) uhtVB identVB)

   (setq b0 (polar SO (/ uhSO grad) (+ odsad 5)))

   (setq b5 (polar b0 (/ (+ uhSO 100) grad) 12.5))

   (setq b6 (polar b0 (/ (- uhSO 100) grad) 12.5))

   (command "_line" b1 b2 "")  (command "_line" b1 b5 "")

   (command "_line" b2 b6 "")  (command "_line" b3 b4 "")

   (setq i 1)

   (repeat 7                                                 

     (setq b1 b3)  (setq b2 b4)

     (setq b0 (polar b0 (/ uhSO grad) 5))

     (setq b3 (polar b0 (/ (+ uhSO 100) grad) 27))

     (setq b4 (polar b0 (/ (- uhSO 100) grad) 27))

     (if (= i 1) (progn

       ; Výpis hodnoty polomeru R

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq txtT (strcat "R=" (rtos r 2 2) "m"))

       (command "_text" "_C" bodT (* 3 n) uhtVB txtT)

       (setq bPRVY b0)

     ))

Pozn. 14: V tabuľke sa nachádzajú texty v tvare gréckych písmen α, τ, ktoré sú vykreslené ako krivka (Křivka) [Pline] pomocou súrad-nicových rozdielov @ΔX,ΔY od predchádzajúceho bodu pri kreslení.

       Napríklad pre α:

   (command "_pline" bodT

"@-1.5,-2.5" "@-0.5,0.5"

"@0.7,0.6"  "@1,-1"

"@1.4,1" "")

 
     (if (= i 2) (progn

       ; Výpis hodnoty klotoidy A

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 13.5 n)))

       (setq txtT (strcat "A=" (rtos A 2 2)))

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

       ; Výpis hodnoty dĺžky prechodnice L

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 13.5 n)))

       (setq txtT (strcat "L=" (rtos l 2 2) "m"))

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

       ; Zvislé úsečky z tabuľky

       (setq bPRVYvl (polar b0 (/ (+ uhSO 100) grad) 7))

       (setq bPRVYvp (polar b0 (/ (- uhSO 100) grad) 20))

     ))

     (if (= i 3) (progn

       ; Vykreslenie znaku ALFA a výpis hodnoty

       (setq bodT (polar b0 (/ uhSOVB grad) (* 3.5 n)))

       (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 23.5 n)))

       (command "_pline" bodT "@-1.5,-2.5" "@-0.5,0.5" "@0.7,0.6" "@1,-1" "@1.4,1" "")

 

Pozn. 15: Písmeno τ je opäť vykreslené z dvoch kriviek (Křivka) [PLine], nakoľko je toto vykreslenie univerzálne.

Vykreslenie podľa štýlu textu by bolo komplikované a v niektorých prípadoch by došlo k zlyhaniu vykreslenia (napríklad, ak vo výkrese nie je požadovaný štýl písma pre grécku abecedu).

 
       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 10.0 n)))

       (setq txtT (strcat (rtos Alfa 2 4) "g"))

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

       ; Vykreslenie znaku TAU

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 3.5 n)))

       (command "_pline" bodT "@-0.5,0.5" "@0.6,1.6" "")

       (setq bodT (polar b0 (/ uhSOVB grad) (* 3 n)))

       (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 2.0 n)))

       (command "_pline" bodT "@0.5,0.5" "@1.7,-0.4" "@0.6,0.5" "")

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 17.0 n)))

       (setq txtT (strcat (rtos tau 2 4) "g"))

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

     ))

     (if (= i 4) (progn                                                                    

       ; Výpis hodnoty dĺžky dotyčnice T

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

(if (= i 5) (progn

  ; Výpis hodnoty subtangenty sT

  (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

  (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 23.5 n)))

  (setq txtT "sT")

  (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

  (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

  (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 10.0 n)))

  (setq txtT (strcat (rtos sT 2 2) "m"))

  (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

  ; Výpis hodnoty súradnice yPK

  (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

  (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 3.5 n)))

  (setq txtT "yPK")

  (command "_text" "_C" bodT (* 2.0 n) uhtVB txtT)

  (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

  (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 17.0 n)))

  (setq txtT (strcat (rtos yPK 2 2) "m"))

  (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

 ))

 

 
       (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 23.5 n)))

       (setq txtT "T")

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 10.0 n)))

       (setq txtT (strcat (rtos tOBL 2 2) "m"))

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

       ; Výpis hodnoty súradnice xPK

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 3.5 n)))

       (setq txtT "xPK")

       (command "_text" "_C" bodT (* 2.0 n) uhtVB txtT)

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 17.0 n)))

       (setq txtT (strcat (rtos xPK 2 2) "m"))

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

     ))

    (if (= i 6) (progn

       ; Výpis hodnoty odsadenia oblúka Z                                     

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 23.5 n)))

       (setq txtT "z")

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 10.0 n)))

(if (= i 7) (progn

  ; Výpis hodnoty dĺžky oblúka DDo

  (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

  (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 23.5 n)))

  (setq txtT "O")

  (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

  (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

  (setq bodT (polar bodT (/ (- uhSO 100) grad) (* 10.0 n)))

  (setq txtT (strcat (rtos DDo 2 2) "m"))

  (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

  ; Výpis hodnoty súradnice xS

  (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

  (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 3.5 n)))

  (setq txtT "xS")

  (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

  (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

  (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 17.0 n)))

  (setq txtT (strcat (rtos xS 2 2) "m"))

  (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

 ))

 

 
       (setq txtT (strcat (rtos z 2 2) "m"))

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

       ; Výpis hodnoty súradnice xM

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 3.5 n)))

       (setq txtT "xM")

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

       (setq bodT (polar b0 (/ uhSOVB grad) (* 1 n)))

       (setq bodT (polar bodT (/ (+ uhSO 100) grad) (* 17.0 n)))

       (setq xM (- xPK sT))

       (setq txtT (strcat (rtos xM 2 2) "m"))

       (command "_text" "_C" bodT (* 2.5 n) uhtVB txtT)

     ))

     ; Úsečky v tabuľke parametrov oblúka

     (command "_line" b1 b3 "")

     (command "_line" b3 b4 "")

     (command "_line" b4 b2 "")

     (setq i (+ i 1))

   )

   ; Zvislé úsečky v tabuľke parametrov oblúka

   (setq b5 (polar b0 (/ (+ uhSO 100) grad) 7))

   (setq b6 (polar b0 (/ (- uhSO 100) grad) 20))

   (command "_line" bPRVY b0 "")

   (command "_line" bPRVYvl b5 "")  (command "_line" bPRVYvp b6 "")

Pozn. 16: Funkcia INITGET nastaví rôzne voľby pri vstupe konštruktéra – projektanta do chodu programu pri GET**** (okrem GETSTRING a GETVAR) v tvare:

(initget  bit  reťazec)

 Jednotlivé hodnoty funkcie INITGET:

Bit

Význam

1

chráni pred nulovým vstupom

2

nie sú povolené nulové hodnoty

4

nie sú povolené záporné hodnoty

8

nekontroluje limity

16

nepoužíva sa v AutoCADe 2002

32

použitie čiarkovaných čiar pre siluetu

64

zakázaný vstup súradnice Z

128

povoľuje ľubovoľný vstup podľa zásad

       Uvedené hodnoty je možné ľubovoľne kombinovať:

(initget  (+ 1 2 4))

       V každej novej verzii AutoCADu môže dôjsť k ich úprave.

 
   (command "_color" fb)                                                           

   (princ "OK")

   (setvar "cmdecho" cm)

   (prompt "\n^^^^^^^^^^^^^^^^^^^^^^^^^^")

   (prompt "\nOblúk s klotoidou je vykreslený.")

  ))

 (princ)

)

 

9. 3.   Program TEREN.LSP

 

(Pr. 7.3)

 

; Vykreslenie terénu v pozdĺžnom profile

; © Ing. Stanislav HODAS, PhD., 17.4.2001

 (defun C:TEREN ()

  (setq cmd (getvar "cmdecho"))

  (setvar "cmdecho" 0)

  (setq fb (getvar "cecolor"))

  (setq rad (/ 180.0 pi))

  (setq SUB0 "TEREN.DAT")

  (setq F (open SUB0 "r"))

  (setq TEXT1 (read (read-line F)))

  (setq mierka (nth 1 TEXT1))

  (setq TEXT2 (read (read-line F)))

  (setq lokalita (nth 1 TEXT2))

  (setq TEXT3 (read (read-line F)))

  (setq okres (nth 1 TEXT3))

  (setq TEXT4 (read (read-line F)))

  (setq kraj (nth 1 TEXT4))

Pozn. 1: Program TEREN.LSP pri kreslení používa stupne, preto premenná RAD slúži na ich prevod na radiány.  

(setq rad (/ 180 pi))

Pred kreslením musia byť nastavené  jednotky (Jednotky) [Units] na stupne, aby boli texty a objekty vykreslené so správnym uhlom.

 
  (setq TEXT5 (read (read-line F)))

  (setq kmZ (nth 1 TEXT5))

  (setq kmZ0 kmZ)

  (setq ZaU (* kmZ0 1000))

  (setq kmZ (+ kmZ 0.1))

  (setq TEXT6 (read (read-line F)))

  (setq kmK (nth 1 TEXT6))

  (setq kmK0 kmK)

  (setq KaU (* kmK0 1000))

  (setq kmK (+ kmK 0.1))

  (setq TEXT7 (read (read-line F)))

  (setq ZR (nth 1 TEXT7))

  (setq prec (read-line F))

  (close F)

  ; Ohraničenie výkresu rámikom A4

Pozn. 2: Vykreslenú plochu vymedzuje rámik, ktorý je tvorený úsečkami BOD1 až BOD4, pričom dĺžky sú odvodené od staničenia pozdĺžneho profilu. Staničenie sme odsadili od začiatku výkresu o 120.0 mm (ZaU + 120.0 mm) a na konci profilu je zabezpečená dĺžka jednej A4 pre rohovú pečiatku, obr. 7.6 a obr. 9.4.

       Pevne si stanovíme výšky kreslenia v smere osi +Y pre staničenie (60.0 mm od spodnej časti rámika), pre zvislé úsečky (BOD4 až BOD7) a pre umiestnenie kót terénu (BOD8).

       BOD2, t.j. výšková súradnica NV2, sa mení podľa hodnoty výškovej kóty terénu (po odčítaní hodnoty porovnávacej roviny).

 
  (command "_viewres" "" 20000)                 

  (command "_color" 7)

  (setq st (* kmZ0 1000))

  (setq bod1 (list st 0))

  (setq bod4 (list st 297))

  (setq st (+ (* kmK 1000) 20))

  (setq st (+ 20 st (- 210 (rem st 210))))

  (setq bod2 (list st 0))

  (setq bod3 (list st 297))

  (command "_line" bod1 bod2 "")

  (command "_line" bod2 bod3 "")

  (command "_line" bod3 bod4 "")

  (command "_line" bod1 bod4 "")

  (setq bodRohRaz bod2)

  (setq stRohRaz st)

  ; Popiska nad pozdĺžnym profilom

  (command "_color" 7)

  (setq bod1 (list (+ ZaU 120) 292))

  (setq bod2 (list (+ ZaU 120) 287))

  (setq bod3 (list (+ ZaU 120) 282))

  (setq x (+ (* kmK 1000) 20.0))

  (setq bod4 (list x 292))

  (setq bod5 (list x 287))

  (setq bod6 (list x 282))

  (command "_line"

        bod1 bod3 bod6 bod4 bod1 "")

  (command "_line" bod2 bod5 "")        

  (setq bod7 (list (+ ZaU 20) 288))

  (setq bod8 (list (+ ZaU 20) 283))

  (setq bod9 (list (+ ZaU 20) 278))

  (setq bod10 (list (+ ZaU 20) 273))

  (setq bod11 (list (+ ZaU 50) 278))

  (setq bod12 (list (+ ZaU 50) 273))                                               Obr. 9.3. Popisové pole pozdĺžneho profilu    

  (command "_text" bod7 2.5 0 "DRUH POZEMKOV:")                        

  (command "_text" bod8 2.5 0 "ÚZEM. EVIDENČNÁ JEDNOTKA:")

  (command "_text" bod9 2.5 0 "OKRES:")

  (command "_text" bod10 2.5 0 "KRAJ:")                             

  (command "_text" bod11 2.5 0 (strcat " " okres))

  (command "_text" bod12 2.5 0 (strcat " " kraj))

  (command "_text" (polar bod8 0 105) 2.5 0 lokalita)

  ; Text pozdĺžneho profilu

  (setq bod1 (list (+ ZaU 20) 52))

  (command "_text" bod1 5.0 0 "STANIČENIE v km")

  (setq bod1 (list (+ ZaU 20) 60))

  (command "_text" bod1 5.0 0 "POROVNÁVACIA ROVINA")

  (setq bod1 (list (+ ZaU 20) 75))

  (command "_text" bod1 5.0 0 "KÓTY TERÉNU")

  (setq bod1 (list (+ ZaU 20) 90))

  (command "_color" 1)

  (command "_text" bod1 5.0 0 "KÓTY NIVELETY")

  ; Zmena porovnávacej roviny, ak prekročí stanovené rozpätie 100 mm výkresu

  (setq n 1)

Pozn. 3: Funkcia LIST spája v našom prípade dve hodnoty súradníc (obecne vytvára zoznam prvkov) v tvare (X Y), t.j. bodu.

Aby bolo možné, napríklad vykres-liť úsečku (Úsečka) [Line] z bodu do bodu, využijeme funkciu LIST na obidvoch bodoch úsečky:

   (setq bodA (list suradXa suradYa))

   (setq bodB (list suradXb suradYb))

   (command “_line“ bodA bodB ““)

 
  (command "_color" 5)                                                             

  (setq ZUFIX (fix (/ ZaU 100)))

  (setq KUFIX (fix (/ KaU 100)))

  (setq ROZDIEL ZaU)

  (while (> ROZDIEL 0)

    (setq ROZDIEL (- ROZDIEL 100))

  )

  (setq ROZDIEL (abs ROZDIEL))

  (setq bodZaU (list (+ ZaU 120) 60))

  (if (= rozdiel 0)

    (setq bodX (list (+ 120 ZaU ROZDIEL) 60))

  )

  (if (/= rozdiel 0)

    (setq bodX (list (- (+ 120 ZaU ROZDIEL) 0.8) 60))

  )

  (command "_line" bodZaU bodX "")                    

  (setq st1 (+ ZaU 120))

  (setq st2 (- (+ (+ 120 ZaU) ROZDIEL) 0.8))

Pozn. 4: Pri prekročení výškového  intervalu ±100 mm (hodnota výkresu) sa výška porovnávacej roviny zmení ±10.0 m (v skutočnosti).

 
  (setq stKM (+ (+ 120 ZaU) ROZDIEL))

  (setq nKRAT (- KUFIX ZUFIX))

  (setq ZUFIX (* ZUFIX 0.1))

  (command "_color" 7)         

  (command "_line" (list (+ st1 10) 60) "@0,4.8" "@12,0" "")

  (command "_line" (list (+ st1 10) 60) "@2<45" "")

  (command "_line" (list (+ st1 10) 60) "@2<135" "")

  (setq txtZR (rtos ZR 2 2))

  (setq txtZR (strcat txtZR " m")) 

  (command "_text" (list (+ (+ st1 10) 3) 61.0) 2.4 0.0 "VÝŠKOVÝ SYSTÉM: Bpv")

  (command "_text" (list (+ (+ st1 10) 1) 66.0) 2.4 0.0 txtZR)                

  (command "_color" 5)                                            

  (if (/= 0 ROZDIEL)

    (setq ZUFIX (+ 0.1 ZUFIX))    

    (repeat (+ 1 nKRAT)

      (setq bodKM (list stKM 50))

      (setq stTXT (rtos ZUFIX 2 1))

      (command "_text" "_c" bodKM 7.0 1.0 stTXT)

      (setq stKM (+ stKM 100))

      (setq ZUFIX (+ 0.1 ZUFIX))

  ))    

  (if (= 0 ROZDIEL)

    (setq ZUFIX ZUFIX)

    (repeat nKRAT

      (setq bodKM (list stKM 50))

      (setq stTXT (rtos ZUFIX 2 1))

      (command "_text" "_c" bodKM 7.0 0.0 stTXT)

Pozn. 5: Na konci programu vložte postupnosť príkazov  na vykreslenie rohovej pečiatky, ktorá je vypracovaná sčasti podľa normy. Tabuľkovú pečiatku si vypracujte podľa vlastných požiadaviek (obr. 9.4).

 

  ; Rohová tabuľková pečiatka

  (setq bod2 bodRohRaz)

  (setq st stRohRaz)

  (setq bod1 (polar bod2 (/ (* pi 135) 180) 7.07))

  (setq bod2 (polar bod1 pi 50))  

  (command "_color" 5)

  (command "_line" bod1 "@0,60" "@-175,0" "@0,-60" "@175,0" "")

  (command "_line" (polar bod1 pi 50) "@0,60" "")

  (command "_line" (polar bod1 pi 20) "@0,20" "")

  (command "_line" (polar bod1 (/ (* 90 pi) 180) 20) "@-50,0" "")

  (command "_line" (polar bod1 (/ (* 90 pi) 180) 10) "@-175,0" "")  

  (command "_color" 7)

  (command "_line" (polar bod1 (/ (* 90 pi) 180) 40) "@-175,0" "")

  (command "_line" (polar bod1 (/ (* 90 pi) 180) 35) "@-175,0" "")

  (command "_line" (polar bod1 (/ (* 90 pi) 180) 30) "@-175,0" "")

  (command "_line" (polar bod1 (/ (* 90 pi) 180) 25) "@-50,0" "")

  (command "_line" (polar bod2 (/ (* 90 pi) 180) 50) "@-125,0" "")

  (command "_line" (list (- st 25) 25) "@0,20" "")

  (command "_line" (list (- st 96.6) 45) "@0,20" "")

  (command "_line" (list (- st 138.3) 45) "@0,20" "")

  (command "_line" (list (- st 117.5) 40) "@0,5" "")

  (command "_text" "_ml" (list (- st 54.00) 42.5) 2.5 0.0 "Formát")

  (command "_text" "_ml" (list (- st 54.00) 37.5) 2.5 0.0 "Dátum")

  (command "_text" "_ml" (list (- st 54.00) 32.5) 2.5 0.0 "Stupeň")

  (command "_text" "_ml" (list (- st 54.00) 27.5) 2.5 0.0 "Čís. zák.")

  (command "_text" "_ml" (list (- st 54.00) 22.5) 2.5 0.0 "Čís. arch.")

  (command "_text" "_ml" (list (- st 54.00) 12.5) 2.5 0.0 "Mierka")

  (command "_text" "_ml" (list (- st 24.00) 22.5) 2.5 0.0 "Čís. súpr.")

  (command "_text" "_ml" (list (- st 24.00) 12.5) 2.5 0.0 "Príloha č.")

  (command "_text" "_ml" (list (- st 95.60) 62.5) 2.5 0.0 "Hl. inž. proj.")

  (command "_text" "_ml"

                                   (list (- st 95.60) 52.5) 2.5 0.0 "Ved. strediska")

  (command "_text" "_ml" (list (- st 137.30) 62.5) 2.5 0.0 "Zodp. proj.")

  (command "_text" "_ml"

                                 (list (- st 137.30) 52.5) 2.5 0.0 "Techn. kontrola")

  (command "_text" "_ml" (list (- st 179.00) 62.5) 2.5 0.0 "Vypracoval")

  (command "_text" "_ml" (list (- st 179.00) 52.5) 2.5 0.0 "Kreslil")

  (command "_text" "_ml" (list (- st 179.00) 42.5) 2.5 0.0 "Kraj:")

  (command "_text" "_ml" (list (- st 179.00) 37.5) 2.5 0.0 "Investor:")

  (command "_text" "_ml" (list (- st 116.25) 42.5) 2.5 0.0 "Okres:")

 

 
      (setq stKM (+ stKM 100))

      (setq ZUFIX (+ 0.1 ZUFIX))

   ))

   (while (< st2 KaU)

     (setq st1 (+ st2 1.6))

     (setq st2 (+ st1 98.4))

     (setq bod1 (list st1 60))

     (setq bod2 (list st2 60))

     (setq bod3 (list (- st1 0.8) 60))

     (if (and (= ROZDIEL 0) (= n 1))

       (command "_line"

        (list (- st1 0.8) 60)(list st2 60) "")

     )

     (if (or (/= ROZDIEL 0)(= n 2))

       (command "_circle" bod3 0.8)

     )

     (setq n 2)

     (command "_line" bod1 bod2 "")

   )

   (if (> st2 KaU)

    (progn

     (setq st1 (+ st2 1.6))

     (setq st2 (+ 120 KaU))

     (setq bod1 (list st1 60))

     (setq bod2 (list st2 60))

     (setq bod3 (list (- st1 0.8) 60))

     (command "_line" bod1 bod2 "")

     (command "_circle" bod3 0.8)

   ))

  ; Vykreslenie terénu a kót terénu                         

  (setq CB "      ")

  (setq SUB0 "TEREN.DAT")

  (setq F (open SUB0 "r"))

  (while (/= CB "TEREN*")

    (setq riadok (read (read-line F)))

    (setq CB (nth 0 riadok))

  )

  (setq CB1 "      ")

  (setq stan1 0.0)

  (setq nv1 0.0)

  (setq CB2 "      ")

  (setq stan2 0.0)

  (setq nv2 0.0)

  (command "_color" 7)

  (setq i 1) (setq j 0) (setq k 0)

  (while (/= CB2 "KONIEC")

    (setq riadok (read (read-line F)))

    (setq CB1 CB2)

    (setq CB2 (nth 0 riadok))

Pozn. 6: Pri vykresľovaní textov príkazom pre text (Text) [Text] príkazová skratka “_ML“ znamená “Middle Left“, v českom AutoCADe “CL“ ide o “Centrovaný ľavý“ text. Znak “_“ zabezpečí používanie anglických príkazov v národných verziách AutoCADu.

 
    (if (/= CB2 "KONIEC")

     (progn

      (setq stan1 stan2)

      (setq nv1 nv2)

      (setq stan2 (nth 1 riadok))

      (setq stan2

                (+ (* stan2 1000.0) 120))

      (setq nv2 (nth 2 riadok))

      (setq txtR nv2)

      (setq txtP (- stan2 120))

      (while (>= txtP 100.0) (setq txtP (- txtP 100.0)) )

      (setq nv2 (+ (* 10 (- nv2 zr)) 60 ))

      (if (>= j 1) (setq nv2 (- nv2 (* j 150)))        )

      (if (>= k 1) (setq nv2 (+ nv2 (* k 150))))

      (if (= i 1)

       (progn

        (setq bod2 (list stan2 nv2))

        (setq bod3 (list stan2 99))

        (setq bod4 (list stan2 87))

        (setq bod5 (list stan2 82))

        (setq bod6 (list stan2 70))

        (setq bod7 (list stan2 60))

        (setq bod8 (list stan2 76))

        (if (/= 0 ROZDIEL)

         (progn

          (setq bod9 (list (+ stan2 1.25) 50))

          (setq txtST (rtos txtP 2 2))

          (command "_text" bod9 2.5 90.0 txtST)

        ))

        (command "_line" bod2 bod3 "")

        (command "_line" bod4 bod5 "")

        (command "_line" bod6 bod7 "")

        (setq txtT (rtos txtR 2 2))

        (command "_text" "_mc" bod8 2.0 90.0 txtT)

      ))

      (if (>= i 2)

       (progn

        (setq bod1 (list stan1 nv1))

        (setq deltaY (- nv2 nv1))

        (setq bod2 (list stan2 (+ nv1 deltaY)))

        (setq bod3 (list stan2 99))

        (setq bod4 (list stan2 87))

        (setq bod5 (list stan2 82))

        (setq bod6 (list stan2 70))

        (setq bod7 (list stan2 60.8))

        (setq bod8 (list stan2 76))

        (setq bod9 (list (+ stan2 1.25) 50))

        (setq bod10 (list stan2 60))

        (command "_line" bod1 bod2 "")                                     

        (command "_line" bod2 bod3 "")                                       

        (if (= txtP 0) (command "_line" bod6 bod7 ""))                          Obr. 9.4. Rohová pečiatka výkresu

       (if (> txtP 0) (command "_line" bod6 bod10 ""))

        (command "_line" bod4 bod5 "")   (setq txtT (rtos txtR 2 2))

        (setq txtST (rtos txtP 2 2))

Pozn. 7: Funkcia GETVAR zisťuje aktuálne hodnoty systémových premen-ných AutoCADu.

       (getvar  meno_premennej)

       Funkcia SETVAR slúži na nastavenie novej hodnoty systémovej premennej.

(setvar  meno_premennej  hodnota)

 
        (command "_text" "_mc" bod8 2.0 90.0 txtT)                

        (if (and (< txtP 95)(> txtP 5))

               (command "_text" bod9 2.0 90.0 txtST))

      ))

      (setq i (+ i 1))

    ))

  )

  (close F)

  ; Vložte text na vykreslenie rohovej pečiatky z Pozn. 5

  ; Záver programu TEREN.LSP a ukončenie funkcie TEREN

  (command "_color" fb)

  (setvar "cmdecho" cmd)

  (prompt "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")

  (prompt "\nKÓTY TERÉNU SÚ VYKRESLENÉ.")

  (princ)

)

Textové pole: Pozn. 8: Vykreslený pozdĺžny profil je znázornený na obr. 7.5. Rohová pečiatka (tabuľka) bola z pozdĺžneho profilu vymazaná a je zobrazená na obr. 9.4.

9. 4.   Program BODY.LSP

 

(Pr. 7.4)

; Vykreslenie bodov súradnicového systému S-JTSK do výkresu AutoCADu v mierke M 1:500

; © Ing. Stanislav Hodas, PhD., 20.4.2001

(defun C:BODY ( )

 ; Mierka 1:0.5 pre mierku kreslenia M 1:500 (n = 0.5). Polohopis je nakreslený vždy 1:1, ale mení sa výška

 textu. Pri kreslení na grafickom zariadení sa celý výkres 2x zväčší. Ak chceme mierku M 1:1000, tak 1:1)

 (setq n 0.5)

 ; Načítanie hodnôt do premenných                                                  

 (setq cm (getvar "cmdecho"))

 (setvar "cmdecho" 0)

 (setvar "pdmode" 3)

 (setvar "pdsize" (* 0.8 n))

 (setq fb (getvar "cecolor"))

 ; Prevod radiánov na grády [Grads]

 (setq grad (/ 200 pi))

 (setq Ymax 0.0) (setq Xmax 0.0)

 ; Otvorenie dátového súboru

 ; BODY.DAT na čítanie dát

 (setq F (open "BODY.DAT" "r"))

 ; Načítanie redukovaných súradníc

 (setq txt1 (read-line f)) (setq txt2 (read-line f))

 (setq txt3 (read-line f))

 (setq maxYX (read-line f))

 (setq Ymax (nth 0 (read maxYX)))

 (setq Xmax (nth 1 (read maxYX)))

 (setq prec (read-line F))

 ; Načítanie jednotlivých riadkov   

 (setq uhol 100)  (setq uhP 0)  (setq des 2)                            Obr. 9.5. Transformácia súradníc

Pozn. 1: Pred kreslením odporúčame vytvoriť hladiny výkresu (Hladina) [Layer]: BODY, CBODOV, VYSKY, POLOHOPIS, a pod. v prázdnom výkrese, prípadne priamo v prototypovom výkrese.

       Potom môžeme programovo zapínať [Set] požadovanú aktuálnu pracovnú hladinu [Current]:

(command "_layer" "_S" "VYSKY" "")

       V opačnom prípade všetky objekty budú vykreslené v hladine 0.

 
 (setq vys (* 2 n))

 (setq cb "    ")

 (setq riadok (read-line f))

 (setq Cb (nth 0 (read riadok)))

 (princ "\n*>")                                                     

 (while (/= cb "****")

   (princ ">")

   (setq yJTSK (nth 1 (read riadok)))

   (setq xJTSK (nth 2 (read riadok)))

   (setq hBPV (nth 3 (read riadok)))

   ; Transformácia súradníc medzi S-JTSK

   ; a počiatkom výkresu AutoCADu

   (setq xACAD (- Ymax yJTSK))

   (setq yACAD (- Xmax xJTSK))

   ; Spojenie súradníc X, Y do typu BOD

   (setq bodXY (list xACAD yACAD))

   ; Vykreslenie bodu a popisu bodu

Pozn. 2: Výšky bodov budú vykreslené zvlášť pre celé metre “m“ vľavo a “cm“ vpravo od bodu (obr. 9.6).

       V prípade, že požadujeme opraviť text výšky, využijeme príkaz DIAEDIT, DDEDIT, alebo v rolete Modifikácia [Modify] položku vlastnosti [Properties] (obr. 7.3).

 
   (command "_color" 7)

   ; Ak je hladina BODY: (command "_layer" "_S" "BODY" "")

   (command "_point" bodXY)

   (command "_color" 4)

   ; Ak je hladina CBODOV: (command "_layer" "_S" "CBODOV" "")

   (setq bodT (polar bodXY (/ 100 grad) (* 1.5 n)))

   (command "_text" "_c" bodT (* 2 n) 0 CB)

   ; Vykreslenie nadmorskej výšky (zvlášť metre a zvlášť cm)

   (setq nas 1.0)

   (setq TT (polar bodXY (/ uhol grad) (* 1.5 n)))

   ; Ak je hladina VYSKY: (command "_layer" "_S" "VYSKY" "")

   (if (/= hBPV nil) (progn                       

     (if (/= hBPV 0.0) (progn

       (if (/= des 0) (progn

         (setq uhol1 (+ uhol 200.0))

         (if (>= uhol1 400.0) (setq uhol1 (- uhol1 400.0)))

         (setq uhol1L (- uhol1 100.0))

         (if (< uhol1L 0.0) (setq uhol1L (+ uhol1L 400.0)))

         (setq uhol1P (+ uhol1L 200.0))

         (if (>= uhol1P 400.0) (setq uhol1P (- uhol1P 400.0)))

         (setq TT (polar TT (/ uhol1 grad) (* 4.0 n)))

         (setq TT1L (polar TT (/ uhol1L grad) (* 1.5 n)))

         (setq TT1P (polar TT (/ uhol1P grad) (* 1.5 n)))

         (if (<= des 3) (progn

           (setq hBPV (/ hBPV 10.0))

           (setq bez (fix hBPV))

           (setq hBPV (* (- hBPV bez) 10))

         ))

         (if (= des 4) (setq des 2))

         (if (>= des 5) (setq des 3))

         (setq vyskaL (fix hBPV))

         (repeat des (setq nas (* nas 10.0)))

         (setq vyskaP (* (- hBPV vyskaL) nas))

         (setq vyskaL (rtos vyskaL 2 0))                                        Obr. 9.6. Vykreslenie bodov a premenné

         (setq vyskaP (rtos vyskaP 2 0))

         (setq dlz (strlen vyskaP))

          ; Doplnenie núl pre celé cm alebo 00 ak je 0 cm       

         (if (and (= des 2) (= dlz 1)) (setq vyskaP (strcat "0" vyskaP)))

         (if (and (= des 3) (= dlz 1)) (setq vyskaP (strcat "00" vyskaP)))

         (if (and (= des 3) (= dlz 2)) (setq vyskaP (strcat "0" vyskaP)))

Pozn. 3: Na záver editujeme kresbu výkresu, t.j. doplníme polohopis, presunieme prekrývajúce sa texty, alebo presunieme objekty do správnych hladín výkresu (obr. 8.8).

 
         (command "_color" 3)

         (command "_text" "_R" TT1L vys uhP vyskaL)

         (command "_text"  TT1P vys uhP vyskaP)

       ))

     ))

   ))

   (setq riadok (read-line f))

   (setq Cb (nth 0 (read riadok)))

 )

 (close f)

 ; Ukončenie programu BODY.LSP, funkcie BODY a vrátenie hodnôt premenným

 (princ "OK") (command "_color" fb) (setvar "cmdecho" cm)

 (prompt "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")

 (prompt "\nBody sú vykreslené.")

 (princ)

)

 

Pozn. 1: Pomocou funkcie GETKWORD môžeme rozvetviť program LSP, ak aktivujeme funkciu INITGET nasledovne:

  (initget 1 “1 2 3 4 5 6“)

  (setq TYP (getkword “\nVÝZVA“))

  (if (= TYP “1“) ……)

  (if (= TYP “2“) ……)

                    ---

  (if (= TYP “6“) ……)

 
9. 5.   Program VYHYBKA.LSP

 

(Pr. 7.5)

; Vykreslenie jednoduchých výhybiek R65 v koľajom zhlaví

; ©  Ing. Stanislav HODAS, PhD., 11.9.2001, ZH-CAD softvér [3]

(defun C:VYH ( )

  ; Zistenie hodnôt premenných vo výkrese

  (setq cmd (getvar "cmdecho"))

  (setvar "cmdecho" 0)

  (setq fb (getvar "cecolor"))

  (setq grad (/ 200 pi))

  ; Výber typu výhybky a databáza výhybiek typu R65

  (initget 1 "0 1 2 3 4 5 6")

  (prompt "\n1=1:9-190, 2=1:9-300, 3=1:11-300, 4=1:12-500, 5=1:14-760, 6=1:18.5-1200")

  (setq TYP (getkword "\nVYBERTE TYP VÝHYBKY [0 AŽ 6]: "))

  ; Tabuľkové hodnoty jednotlivých výhybiek R65

  (if (= TYP "1") (progn

    (setq txtVYH "1:9-190"        pom  9.0   DL 10.5230  DLH 16.6150  DLO 16.6150)))

  (if (= TYP "2") (progn

    (setq txtVYH "1:9-300"        pom  9.0   DL 16.6155  DLH 16.6155  DLO 16.6155)))

  (if (= TYP "3") (progn

    (setq txtVYH "1:11-300"      pom 11.0  DL 13.6085  DLH 20.0000  DLO 20.0000)))

  (if (= TYP "4") (progn

    (setq txtVYH "1:12-500"      pom 12.0  DL 20.7970  DLH 20.7970  DLO 20.7970)))

  (if (= TYP "5") (progn

    (setq txtVYH "1:14-760"      pom 14.0  DL 27.1080  DLH 27.1080  DLO 27.1080)))

  (if (= TYP "6") (progn

    (setq txtVYH "1:18.5-1200" pom 18.5  DL 32.4090  DLH 32.4090  DLO 32.4090)))

  ; Vloženie výhybky do výkresu pomocou bodov ZV a ORIENT (obr. 9.7)

  (setq ZV (getpoint "\nVYBERTE BOD PRE ZAČIATOK VÝHYBKY ZV: "))

  (setq orient (getpoint "\nVYBERTE PREDCHÁDZAJÚCI BOD OSI PRE NAPOJENIE: "))

  (setq uholH (* (angle orient ZV) grad))

  (setq mi (* (atan (/ 1 pom)) grad))

  ; Vykreslenie odbočnej vetvy výhybky

  (initget 1 "L P")

  (setq druh (getkword "\nVÝHYBKA ODBOČUJE VĽAVO ALEBO VPRAVO? [L,P]: "))

  (if (= druh "L") (progn

    (setq uholODB (+ uholH mi)) (if (>= uholODB 400.0) (setq uholODB (- uholOODB 400.0)))

  ))

  (if (= druh "P") (progn

    (setq uholODB (- uholH mi))

    (if (< uholODB 0.0) (setq uholODB (+ uholODB 400.0)))        

  ))

  (setq SV  (polar ZV (/ uholH grad) DL))

  (setq SVZ  (polar ZV (/ uholH grad) (- DL 0.5)))

  (setq KVH (polar SV (/ uholH grad) DLH))

  (setq KVO (polar SV (/ uholODB grad) DLO))

  (setq SVH (polar SV (/ uholH grad) 0.5))

  (setq SVO (polar SV (/ uholODB grad) 0.5))

  ; Vykreslenie výhybky vo výkrese

  (command "_color" 1)

  (command "_line" ZV SVZ "")

  (command "_line" SVH KVH "")

  (command "_line" SVO KVO "")

  (command "_circle" SV 0.5)

  ; Vykreslenie koncových značiek v ZV, SV, KVH a KVO    Obr. 9.7. Vykreslenie výhybky a  premenné

 ; Vyfarbenie značky vymenníka výhybky (vpravo)

 (if (= druh "P") (progn

      (setq bodB1  (polar bodSTR (/ uholSTR grad) 1.5))

      (setq uhB2 (- uholSTR 33.3))

      (if (< uhB2 0) (setq uhB2 (+ uhB2 400.0)))

      (setq bodB2  (polar bodSTR (/ uhB2 grad) 1.5))

      (setq uhB3 (- uholSTR 66.7))

      (if (< uhB3 0) (setq uhB3 (+ uhB3 400.0)))

      (setq bodB3  (polar bodSTR (/ uhB3 grad) 1.5))

      (setq uhB4 (- uholSTR 100.0))

      (if (< uhB4 0) (setq uhB4 (+ uhB4 400.0)))

      (setq bodB4  (polar bodSTR (/ uhB4 grad) 1.5))

      (setq uhB5 (- uholSTR 133.3))

      (if (< uhB5 0) (setq uhB5 (+ uhB5 400.0)))

      (setq bodB5  (polar bodSTR (/ uhB5 grad) 1.5))

      (setq uhB6 (- uholSTR 166.7))

      (if (< uhB6 0) (setq uhB6 (+ uhB6 400.0)))

      (setq bodB6  (polar bodSTR (/ uhB6 grad) 1.5))

      (setq uhB7 (- uholSTR 200.0))

      (if (< uhB7 0) (setq uhB7 (+ uhB7 400.0)))

      (setq bodB7  (polar bodSTR (/ uhB7 grad) 1.5))

      (command "_color" 1)

      (command "_solid"

           bodB1bodSTR bodB2 bodSTR bodB3

           bodSTR bodB4 bodSTR bodB5 bodSTR

           bodB6 bodSTR bodB7 bodSTR "")

 ))

 

 
  (setq uhBH (+ uholH 100.0))

  (if (>= uhBH 400.0) (setq uhBH (- uhBH 400.0)))

  (setq bH  (polar ZV (/ uhBH grad) 0.5))

  (setq uhBD (- uholH 100.0))

  (if (< uhBD 0) (setq uhBD (+ uhBD 400.0)))

  (setq bD  (polar ZV (/ uhBD grad) 0.5))

  (command "_line" bH bD "")

  (setq uhBH (+ uholH 100.0))

  (if (>= uhBH 400.0) (setq uhBH (- uhBH 400.0)))

  (setq bH  (polar KVH (/ uhBH grad) 0.5))

  (setq uhBD (- uholH 100.0))

  (if (< uhBD 0) (setq uhBD (+ uhBD 400.0)))                                 

  (setq bD  (polar KVH (/ uhBD grad) 0.5))

  (command "_line" bH bD "")

  (setq uhBH (+ uholODB 100.0))

  (if (>= uhBH 400.0) (setq uhBH (- uhBH 400.0)))

  (setq bH  (polar KVO (/ uhBH grad) 0.5))

  (setq uhBD (- uholODB 100.0))

  (if (< uhBD 0) (setq uhBD (+ uhBD 400.0)))

  (setq bD  (polar KVO (/ uhBD grad) 0.5))

  (command "_line" bH bD "")

  ; Vykreslenie vymenníka výhybky

  (initget 1 "L P")

  (setq VYM (getkword "\nVÝMENNÍK VÝHYBKY

                JE VĽAVO ALEBO VPRAVO? [L,P]: "))

  (setq cbVYH (getstring "\nČÍSLO VÝHYBKY: "))                             Obr. 7.

  (setq dlTXT (strlen cbVYH))

  (if (= VYM "L") (progn

    (setq uholVYM (+ uholH 100.0))

    (if (>= uholVYM 400.0)                                                                  Obr. 9.8. Pokračovanie programu

                    (setq uholVYM (- uholVYM 400.0)))

    (setq bodVYM  (polar ZV (/ uholVYM grad) 4.0))

    (setq uholSTR (+ uholH 100.0))

    (if (>= uholSTR 400.0)

                    (setq uholSTR (- uholSTR 400.0)))

    (setq bodSTR  (polar ZV (/ uholSTR grad) 2.5))

    ; Vyfarbenie značky vymenníka výhybky (vľavo)

    (if (= druh "L") (progn                          

      (setq bodB1

                 (polar bodSTR (/ uholSTR grad) 1.5))

      (setq uhB2 (+ uholSTR 33.3))

      (if (>= uhB2 400.0) (setq uhB2 (- uhB2 400.0)))

      (setq bodB2  (polar bodSTR (/ uhB2 grad) 1.5))

      (setq uhB3 (+ uholSTR 66.7))

      (if (>= uhB3 400.0) (setq uhB3 (- uhB3 400.0)))

      (setq bodB3  (polar bodSTR (/ uhB3 grad) 1.5))              Obr. 9.9. Koncové a stredové značky

      (setq uhB4 (+ uholSTR 100.0))                                                   

      (if (>= uhB4 400.0) (setq uhB4 (- uhB4 400.0)))

      (setq bodB4  (polar bodSTR (/ uhB4 grad) 1.5))

      (setq uhB5 (+ uholSTR 133.3))

      (if (>= uhB5 400.0) (setq uhB5 (- uhB5 400.0)))

      (setq bodB5  (polar bodSTR (/ uhB5 grad) 1.5))

      (setq uhB6 (+ uholSTR 166.7))

      (if (>= uhB6 400.0) (setq uhB6 (- uhB6 400.0)))

      (setq bodB6  (polar bodSTR (/ uhB6 grad) 1.5))

      (setq uhB7 (+ uholSTR 200.0))

      (if (>= uhB7 400.0) (setq uhB7 (- uhB7 400.0)))

      (setq bodB7  (polar bodSTR (/ uhB7 grad) 1.5))                     

      (command "_color" 1)

     ; Značka vymenníka – ako doska (Deska) [Solid]

      (command "_solid"

           bodB1 bodSTR bodB2 bodSTR bodB3

           bodSTR bodB4 bodSTR bodB5 bodSTR

           bodB6 bodSTR bodB7 bodSTR "")

    ))                                                                                Obr. 9.10. Vyfarbenie značky vymenníka výhybky

    ; Vložiť text z obr. 9.8         

; Vyfarbenie  značky výmenníka (vľavo)

(if (= druh "L") (progn

      (setq bodB1  (polar bodSTR (/ uholSTR grad) 1.5))

      (setq uhB2 (- uholSTR 33.3))

      (if (< uhB2 0) (setq uhB2 (+ uhB2 400.0)))

      (setq bodB2  (polar bodSTR (/ uhB2 grad) 1.5))

      (setq uhB3 (- uholSTR 66.7))

      (if (< uhB3 0) (setq uhB3 (+ uhB3 400.0)))

      (setq bodB3  (polar bodSTR (/ uhB3 grad) 1.5))

      (setq uhB4 (- uholSTR 100.0))

      (if (< uhB4 0) (setq uhB4 (+ uhB4 400.0)))

      (setq bodB4  (polar bodSTR (/ uhB4 grad) 1.5))

      (setq uhB5 (- uholSTR 133.3))

      (if (< uhB5 0) (setq uhB5 (+ uhB5 400.0)))

      (setq bodB5  (polar bodSTR (/ uhB5 grad) 1.5))

      (setq uhB6 (- uholSTR 166.7))

      (if (< uhB6 0) (setq uhB6 (+ uhB6 400.0)))

      (setq bodB6  (polar bodSTR (/ uhB6 grad) 1.5))

      (setq uhB7 (- uholSTR 200.0))

      (if (< uhB7 0) (setq uhB7 (+ uhB7 400.0)))

      (setq bodB7  (polar bodSTR (/ uhB7 grad) 1.5))

      (command "_color" 1)

      (command "_solid"

           bodB1bodSTR bodB2 bodSTR bodB3

           bodSTR bodB4 bodSTR bodB5 bodSTR

           bodB6 bodSTR bodB7 bodSTR "")

 ))

 

 
    ; Výpis čísla výhybky

    (setq bodTXT0  (polar ZV (/ uholVYM grad) 1.25))    

    (setq bodTXT  (polar bodTXT0 (/ uholH grad) 2.5))

    (command "_color" 4)

    (command "_text" bodTXT 2.5 uholH cbVYH)

    ; Výpis popisu výhybky

    (if (<= dlTXT 1) (progn

      (setq bodTXT0  (polar ZV (/ uholVYM grad) 1.5))

      (setq bodTXT  (polar bodTXT0 (/ uholH grad) 5.5))

    ))

    (if (= dlTXT 2) (progn 

      (setq bodTXT0  (polar ZV (/ uholVYM grad) 1.5))

      (setq bodTXT  (polar bodTXT0 (/ uholH grad) 8.0))

    ))

    (if (> dlTXT 2) (progn

      (setq bodTXT0  (polar ZV (/ uholVYM grad) 1.5))

      (setq bodTXT  (polar bodTXT0 (/ uholH grad) 10.5))

    ))

    (command "_color" 3)

    (command "_text" bodTXT 2.0 uholH txtVYH) 

  ))

  (if (= VYM "P") (progn

    (setq uholVYM (- uholH 100.0))

    (if (< uholVYM 0.0) (setq uholVYM (+ uholVYM 400.0)))

    (setq bodVYM  (polar ZV (/ uholVYM grad) 4.0))

    (setq uholSTR (- uholH 100.0))

    (if (< uholSTR 0.0) (setq uholSTR (+ uholSTR 400.0)))

    (setq bodSTR  (polar ZV (/ uholSTR grad) 2.5))

    ; Vyfarbenie značky vymenníka výhybky (vpravo)

    (if (= druh "P") (progn                                                                      Obr. 9.11. Pokračovanie programu

Pozn. 2: Časti programu obr. 9.8 a obr. 9.11 sú uvedené dvakrát (rozdielne sú len znamienka “+“, “– “ a premenné pre smer uhlov). Je možné vytvoriť nové funkcie príkazom DEFUN a vyčleniť ich pred funkciu VYH. Musíme však zohľadniť variantné riešenia, napríklad výhybka ľavá – výmenník vľavo, výhybka ľavá – výmenník vpravo (to isté platí aj pre pravú výhybku).

      

 
      (setq bodB1  (polar bodSTR (/ uholSTR grad) 1.5))

      (setq uhB2 (+ uholSTR 33.3))

      (if (>= uhB2 400.0) (setq uhB2 (- uhB2 400.0)))    

      (setq bodB2  (polar bodSTR (/ uhB2 grad) 1.5))

      (setq uhB3 (+ uholSTR 66.7))

      (if (>= uhB3 400.0) (setq uhB3 (- uhB3 400.0)))

      (setq bodB3  (polar bodSTR (/ uhB3 grad) 1.5))

      (setq uhB4 (+ uholSTR 100.0))

      (if (>= uhB4 400.0) (setq uhB4 (- uhB4 400.0)))

      (setq bodB4  (polar bodSTR (/ uhB4 grad) 1.5))

      (setq uhB5 (+ uholSTR 133.3))

      (if (>= uhB5 400.0) (setq uhB5 (- uhB5 400.0)))

      (setq bodB5  (polar bodSTR (/ uhB5 grad) 1.5))

      (setq uhB6 (+ uholSTR 166.7))

      (if (>= uhB6 400.0) (setq uhB6 (- uhB6 400.0)))

Pozn. 3: V železničnom staviteľstve môžeme do koľajového zhlavia zabudovať výhybky tvarov R65, S49 a T, ktoré môžu byť jednoduché (ľavé a pravé) a oblúkové (transformované podľa určitých zásad: jednostranné a obojstranné – ľavé, pravé, ľavostranné, pravostranné a symetrické).

       Okrem výhybiek vkladáme do koľajových zhlaví križovatky a križo-vatkové výhybky [9], [10].

      

 
      (setq bodB6  (polar bodSTR (/ uhB6 grad) 1.5))

      (setq uhB7 (+ uholSTR 200.0))

      (if (>= uhB7 400.0) (setq uhB7 (- uhB7 400.0)))

      (setq bodB7  (polar bodSTR (/ uhB7 grad) 1.5))    

      ; Vyfarbenie značky vymenníka, obr. 9.10     

      (command "_color" 1)

      ; Využitie príkazu doska (Deska) [Solid]

      (command "_solid"

           bodB1 bodSTR bodB2 bodSTR bodB3

           bodSTR bodB4 bodSTR bodB5 bodSTR

           bodB6 bodSTR bodB7 bodSTR "")

    ))

    ; Vložiť text z obr. 9.11                

    ; Výpis čísla výhybky obr. 9.12

    (setq bodTXT0  (polar ZV (/ uholVYM grad) 3.75))

    (setq bodTXT  (polar bodTXT0 (/ uholH grad) 2.5))  

    (command "_color" 4)

    (command "_text" bodTXT 2.5 uholH cbVYH)

    (if (<= dlTXT 1) (progn

      (setq bodTXT0  (polar ZV (/ uholVYM grad) 3.5))

      (setq bodTXT  (polar bodTXT0 (/ uholH grad) 5.5))

    ))

    (if (= dlTXT 2) (progn

      (setq bodTXT0  (polar ZV (/ uholVYM grad) 3.5))

      (setq bodTXT  (polar bodTXT0 (/ uholH grad) 8.0))

    ))

    (if (> dlTXT 2) (progn

      (setq bodTXT0  (polar ZV (/ uholVYM grad) 3.5))

      (setq bodTXT  (polar bodTXT0 (/ uholH grad) 10.5))

    ))

    (command "_color" 3)

    (command "_text" bodTXT 2.0 uholH txtVYH) 

  ))                                              

  ; Vykreslenie základného tvaru značky vymeníka

  (command "_color" 1)

  (command "_line" ZV bodVYM "")

  (command "_circle" bodSTR 1.5)                            Obr. 9.12. Vykreslenie čísla výhybky a popis výhybky

  ; Ukončenie programu VYHYBKA.LSP, funkcie VYH a vrátenie hodnôt premenným

  (command "_color" fb)

  (setvar "cmdecho" cmd)

  (prompt "\n*")

  (prompt "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")

  (prompt "\nVýhybka tvaru R65 ")

  (princ txtVYH)

  (prompt " je vykreslená.")

  (princ)

)

 

 

 

 

 

Pozn. 1: Ak chceme zobraziť merané údaje položkou “Merané údaje“ alebo zobraziť vypočítané výsledné súradnice (pozri obr. 8.7 a štruktúru programu UDAJE.LSP), musíme dopracovať program v AutoLISPe pre funkciu PODROBNOSTI, prípadne doplniť tabuľkovú štruktúru (dialógovú alebo databázovú formu) zobrazovania meraných údajov zo súboru UDAJE.DAT (obr. 8.3). Uvedené nie je predmetom tohto príkladu, pričom funkcia UDAJE slúži na tvorbu dialógových panelov a funkcia VYPOCET na výpočet súradníc jednotlivých bodov.

Na záver môžeme vykresliť body s výslednými vypočítanými súradnicami zo súboru BODY.DAT (obr. 8.6), podobne ako v príklade Pr. 7.4 pomocou programu BODY.LSP.

 
9. 6.   Program UDAJE.LSP

 

(kap. 8.4)

; Spracovanie údajov v dialógových paneloch

; © Ing. Stanislav HODAS, PhD.  11.9.2001

 

(defun PODROBNOSTI ()

    ; Uvedenú funkciu je potrebné si vytvoriť

    (princ "\n  Zadávanie meraných údajov!")

    (done_dialog 1)

)

 

(defun VYPOCET ()

   ; Dátový súbor UDAJE.DAT, výpočet BODY.DAT

   (setq f (open "UDAJE.DAT" "r"))

   (setq g (open "BODY.DAT" "w"))

   (repeat 6 (setq prec (read-line f)))

   (setq riadok (read-line f))

   (setq hp (nth 1 (read riadok)))

   (setq prec (read-line f)) (setq prec (read-line f))

   ; Výpočet smerníka sigmaSO, t.j. BodS - BodO

   (setq grad (/ 200 pi))  

   (setq dY (- yOr ySr))

   (setq dX (- xOr xSr))

   (setq GONfi (/ dY dX))

   (setq fi (atan GONfi))

   (setq fi (abs (* fi grad)))

   (if (and (>= dy 0) (>= dx 0)) (setq sigmaSO fi))

   (if (and (>= dy 0) (<  dx 0)) (setq sigmaSO (- 200.0 fi)))

   (if (and (<  dy 0) (<  dx 0)) (setq sigmaSO (+ 200.0 fi)))

   (if (and (<  dy 0) (>= dx 0)) (setq sigmaSO (- 400.0 fi)))

Pozn. 2: Funkcia CHR vloží do textu požadovaný textový znak [Char], v našom prípade dvojité úvodzovky.

Nakoľko AutoLISP používa pri textových výzvach vo funkciách vždy úvodzovky “\nText“, nie je možné vložiť úvodzovky priamo do textu, preto ich vložíme ako (chr 34).

 
   (if (and (= dy 0) (> dx 0)) (setq sigmaSO   0.0))

   (if (and (> dy 0) (= dx 0)) (setq sigmaSO 100.0))

   (if (and (= dy 0) (< dx 0)) (setq sigmaSO 200.0))

   (if (and (< dy 0) (= dx 0)) (setq sigmaSO 300.0))

   (if (>= sigmaSO 400) (setq sigmaSO (- sigmaSO 400))) 

   ; Uloženie vypočítaných údajov do BODY.DAT

   (setq g (open "BODY.DAT" "w"))

   (setq txt (strcat "(" (chr 34) "Lokalita:" (chr 34) "  "))

   (princ txt g)

   (setq txt (strcat (chr 34) nazov (chr 34)))

   (princ txt g) (princ ")" g)

   (setq txt (strcat "\n(" (chr 34) "Dátum:" (chr 34)))

   (princ txt g) (princ ")" g)

   (setq txt (strcat "\n(           " (chr 34) "Ymax" (chr 34)

                           "      " (chr 34) "Xmax" (chr 34)))

   (princ txt g) (princ ")" g)

   (setq txt (strcat "\n(        " (rtos ySr 2 2) "  " (rtos xSr 2 2)))

   (princ txt g) (princ ")" g)

   (setq txt (strcat "\n(" (chr 34) "  ČB" (chr 34)

Pozn. 3: Počas výpočtu súradníc položkou “Výpočet súradníc“ (obr. 8.7) sú otvorené dva dátové súbory: F (na čítanie údajov – “r“) a G (prázdny súbor na ukladanie údajov – “w“) funkciou OPEN.

Z prvého dátového súboru F sú načítané požadované vstupné dáta (UDAJE.DAT) a vypočítané výsledné údaje sú uložené do druhého súboru G (BODY.DAT).

       Po ukončení práce jednotlivé súbory uzatvoríme funkciou CLOSE.

 
        "        Y           X       H  "))

   (princ txt g) (princ ")" g)  (setq cb "    ")

   (setq riadok (read-line f))

   (setq Cb (nth 0 (read riadok))) (princ "\n*>")

   (while (/= cb "****")

       (princ ">")

       (setq uhol (nth 1 (read riadok)))

       (setq dlzka (nth 2 (read riadok)))

       (setq prev (nth 3 (read riadok)))

       (setq ciel (nth 4 (read riadok)))

       ; Výpočet súradníc

       (setq sigmaSM (+ sigmaSO uhol))

       (if (>= sigmaSM 400) (setq sigmaSM (- sigmaSM 400)))   

       (setq yMr (+ ySr (* dlzka (sin (/ sigmaSM grad)))))

       (setq xMr (+ xSr (* dlzka (cos (/ sigmaSM grad)))))

       (setq hMr (- (+ hp hSr prev) ciel))

       (setq txt (strcat "\n(" (chr 34) Cb (chr 34) "  "

            (rtos yMr 2 2)  "  " (rtos xMr 2 2) "  " (rtos hMr 2 2)))

       (princ txt g) (princ ")" g)

       (setq riadok (read-line f))

       (setq Cb (nth 0 (read riadok)))

   )

   (close f)   

   (setq txt (strcat "\n(" (chr 34) "****" (chr 34)))

Pozn. 4: Rozhodujúcu úlohu prepojenia súborov typu LSP a DCL preberá premenná KEY v súbore typu DCL, napríklad v časti LOKALITA obsahuje:

             key = “lokalita“;

       Jednotlivým premenným v súbore typu LSP priraďujeme hodnoty pomocou funkcie SET_TILE, napríklad:

             (set_tile “lokalita“ hodnota)

       obecne:

             (set_tile key hodnota)

 
   (princ txt g) (princ ")" g) (princ "\n" g)                           

   (close g)

   (princ "\n  Výpočet a uloženie súradníc

                                               do BODY.DAT.")

   (done_dialog 1)

   ; Ukončenie funkcie VYPOCET

)

 

(defun ZRUSENIE ()

    ; Ukočenie zobrazenia panelu DCL

    (princ "\n  Zrušenie!") (done_dialog 1)

)

 

(defun C:UDAJE ()

  (if (= -1 (setq dcl_id (load_dialog "udaje.DCL")))

    (progn

       (princ "\n Nemôžem načítať

                                           DCL aplikáciu!......")

       (setq dialogLoaded nil)

    )

    (progn

      ; Nový DCL panel - načítanie UDAJE.DCL

Pozn. 5: Na vloženie obrázka (snímky SCH1.SLD) používame funkcie:

DIMX_TILE,

DIMY_TILE,

START_IMAGE,

SLIDE_IMAGE,

END_IMAGE,

MODE_TILE,

pričom zadáme premennú KEY, v našom prípade SCHEMA1.

 
      (new_dialog "UDAJE" dcl_id)

      ; Načítanie hodnôt premenných

      (setq cm (getvar "cmdecho"))

      (setvar "cmdecho" 0)

      ; Prevod radiánov na grády [góny]                                    

      (setq grad (/ 200 pi))

      ; Otvorenie UDAJE.DAT a načítanie dát

      (setq f (open "UDAJE.DAT" "r"))

      (setq riadok (read-line f))

      (setq nazov (nth 1 (read riadok)))

      (set_tile "lokalita" (strcat "  " nazov))

      (setq riadok (read-line f))

      (setq cvypoctu (nth 1 (read riadok)))

      (set_tile "cvyp" (strcat "  " cvypoctu))

      (setq prec (read-line f))     (setq prec (read-line f))

      (setq riadok (read-line f))

      (setq cbSr (nth 0 (read riadok)))

      (setq ySr (nth 1 (read riadok)))        

      (setq xSr (nth 2 (read riadok)))

      (setq hSr (nth 3 (read riadok)))

      (setq riadok (read-line f))

Pozn. 6: Spustenie ďalšej funkcie zabezpečuje  funkcia ACTION_TILE, kde zadáme hodnotu premennej KEY a názov volanej funkcie:

(action_tile key "(funkcia)")

pričom FUNKCIA je vopred definovaná:

(defun FUNKCIA ( ) …………)

 
      (setq cbOr (nth 0 (read riadok)))

      (setq yOr (nth 1 (read riadok)))

      (setq xOr (nth 2 (read riadok)))

      (setq hOr (nth 3 (read riadok)))                                 

      ; Inicializácia hodnôt pomocou KEY (Pozn. 4)

      (set_tile "cbS" (strcat "  " cbSr))

      (set_tile "yS" (strcat "  " (rtos ySr 2 3)))

      (set_tile "xS" (strcat "  " (rtos xSr 2 3)))

      (set_tile "hS" (strcat "  " (rtos hSr 2 3)))

      (set_tile "cbO" (strcat "  "cbOr))        

      (set_tile "yO" (strcat "  " (rtos yOr 2 3)))

      (set_tile "xO" (strcat "  " (rtos xOr 2 3)))

      (set_tile "hO" (strcat "  " (rtos hOr 2 3)))

      (close f)                              

      ; Vloženie obrázka SCH1.SLD do DCL panela Pozn. 5   

Pozn. 7: Načítanie DCL panela zabezpečuje funkcia LOAD_DIALOG, zobrazenie panela funkcia START_DIALOG a ukončenie zobrazenia dialógového panela funkcia DONE_DIALOG.

 
      (setq x (dimx_tile "schema1")

               y (dimy_tile "schema1"))

      (start_image "schema1")

      (slide_image 0 0 x y "sch1")

      (end_image)

      (mode_tile "schema1" 4)

      ; Spustenie jednotlivých definovaných funkcií               

      (action_tile "merane" "(podrobnosti)")

      (action_tile "accept" "(vypocet)")

      (action_tile "cancel" "(zrusenie)")

      (start_dialog)

  ))                                                                                 

  ; Ukončenie funkcie UDAJE

  (princ "\n ")

  (princ "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")

  (princ "\n  KONIEC PROGRAMU - VÝPOČET SÚRADNÍC BODOV.")

  (princ) 

)

Literatúra - profil autora

 

[1]        Bitterer L., Hodas S.: Rozvoj automatizovaného projektovania železničnej trate a staníc, In: 9. Medzinárodná vedecká konferencia VŠDS Žilina, Zborník 4/2, Žilina 14.-16.9.1993, VŠDS Žilina, SK, 1993. – ISBN 80-7100-149-X, s. 153-159

[2]        Hodas S.: Projektovanie koľajového zhlavia v programe ZH-CAD, In: CAD – Computer Aided Design, CCB Brno, Roč. 3, č. 4, Brno, CZ, 1993. – ISSN 0862-996, s. 28-29

[3]        Hodas S.: ZH-CAD: Architektura a stavebnictví, In: Katalóg aplikací AUTODESKu, Podzim 93, CAD Centrum Brno - CCB, Brno, CZ, 1993, s. 57/1

[4]        Hodas S.: ZH-CAD – Projektovanie, vykreslenie a rekonštrukcia koľajového zhlavia, In: Nová železniční technika, Roč. 2, č. 3, 1994. – ISSN 1210-3942, ÚVAR Brno, CZ, s. 93-96

[5]        Hodas S.: ZH - CAD v. 5.0, In: PC Revue, Roč. 3, č. 1, Bratislava, SK, 1995. – ISSN 1335-0226, s. 22-23

[6]        Hodas S.: ZH-CAD – Projektovanie, rekonštrukcia a vykresľovanie koľajových zhlaví v prostredí AutoCAD, In: 1. Vědecká konference o dopravě s medzinárodní účastí: 150 rokov od zahájení provozu železniční tratě Olomouc – Pardubice - Praha, Dopravní fakulta J. Pernera, Univerzita Pardubice, Pardubice, CZ, 1995. – ISBN 80-7194-014-3, s. 165-171

[7]        Hodas S., Šíma J., Bitterer L., Ruzicka Z.: ZH-CAD/PP Gleisvermarkungsplan und Trassierungsentwurf DS 883 03 Deutschland, Softvér [ZH-CAD/PP Zaisťovací plán koľaje a posuny koľají DS 883 03 Nemecko], In: Podrobný manuál, Malsch, Deutschland, D a KGD, SVF, ŽU Žilina, SK, 1995, 30 s.

[8]        Hodas S., Šíma J., Bitterer L., Ruzicka Z.: Die graphische Ausgabe von Projekte ein- und zweigleisigen Strecke, In: Doprava a kvalita, 4. Medzinárodné vedecké dopravné kolokvium EIPOS, VŠDS Žilina, SK a TU Dresden, D, 1996. – ISBN 80-7100-338-7, s. 55-59

[9]        Hodas S.: ZH-CAD – Design and reconstruction of track work using AutoCAD [ZH-CAD – Projektovanie a rekonštrukcia v železničnom staviteľstve pomocou AutoCADu], In: 5th World International Conference on COMPRAIL 96, Computer in railways V, Volume 1, Railway Systems and Management, Berlin, Germany 21.8.-23.8.1996, Organised by WESSEX Institute of Technology, WITpress-CMP, Southampton, UK, 1996. – ISBN 1-85312-407-9, s. 43-50

[10]     Hodas S.: ZH-CAD Projektovanie, rekonštrukcia a vykresľovanie koľajových zhlaví, Softvér [ZH-CAD Design, reconstruction and drawing of railway gridiron], In: Podrobný manuál, Softvér, KGD, SVF, ŽU Žilina, SK, 1996, 120 s.

[11]     Hodas S., Šíma J., Ruzicka Z.: ZH-CAD/UP Überprüfung einer Trasse DS 80001 Deutschland, Softvér [ZH-CAD/UP Preskúšanie trasy podľa normy DS 80001 Nemecko], In: Podorobný manuál, Softvér, Malsch, Deutschland a KGD, SVF, ŽU Žilina, SK, 1996, 30 s.

[12]     Hodas S.: Geodetické práce na stavbe Železničné mosty cez rieku Váh [Geodetic surveying for construction of railway bridges across the river Váh], In: Nová železniční technika, ÚVAR Brno, Roč. 6, č. 2, Brno, CZ. – ISSN 1210-3942, s. 44-47

[13]     Bitterer L., Hodas S.: Geodetic surveying of railway objects [Geodetické merania železničných objektov], In: COMPRAIL 98 on Computer in Railways VI, 6th World International Conference on Computer Aided Design in Railways, Lisboa, Portugal 2.10.-4.10.1998, Organised by WESSEX Institute of Technology, WITpress-CMP, Southampton, UK, 1998. – ISBN 1-85312-598-9, s. 3-12

[14]     Hodas S.: ZH-CAD - design and reconstruction of track work using AutoCAD [ZH-CAD - Projektovanie a rekonštrukcia v železničnom staviteľstve pomocou AutoCADu], In: STUDIES of University in Žilina, Civil engineering series 21, University of Žilina, Žilina, SK, 1998. – ISBN 80-7100-468-5, s. 11-19

[15]     Cebecauer D., Bitterer L., Hodas S., Štubňa J.: Inžinierska geodézia v dopravnom staviteľstve [Survey engineering in traffic construction], In: Učebnica, KGD, SVF, ŽU Žilina, SK, 1998. – ISBN 80-7100-461-8, 215 s.

[16]     Bitterer L., Hodas S.: Geodetické práce v železničnom staviteľstve [Survey jobs in railway engineering construction], In: Inžinierske stavby, Slovenský zväz stavebných inžinierov a pracovníkov stavebníctva, IS Bratislava, SK, 1998. – ISSN 1335-0846, s. 292-295

[17]     Hodas, S.: Geometrický plán novostavby s priľahlými pozemkami z geodetického hľadiska, In: Staviteľstvo, HN Bratislava, Roč. 3, č. 8, Bratislava, SK, 1998. – ISSN 1373-96, s. 23-24

[18]     Hodas S.: Geodetické merania železničných objektov v praxi [Geodetic surveys of railway objects in practice], ŽU Žilina, SVF, KGD, In: 2. Vedecká konferencia Efektívna doprava, cesta do Európskej únie, Dopravné stavby a infraštruktúra, Univerzita Pardubice, Dopravní fakulta J. Pernera, Pardubice, CZ, 1999. – ISBN 80-7194-208-1, s. 215-220

[19]     Hodas S.: Overenie spoľahlivosti realizácie stavebných prác geodetickými metódami [Reliability verification of realisation of the railway engineering works by geodetic methods], In: Konferencia Spoľahlivosť a diagnostika v doprave ´99, Univerzita Pardubice, Dopravná fakulta J. Pernera, Pardubice, CZ, 1999. – ISBN 80-7194-221-9, s. 100-105

[20]     Hodas S.: Meračské siete pre účely rekonštrukcie a výstavbu v dopravnom staviteľstve, In: Súčasné stavebníctvo, Roč. 1, č. 1, Bratislava, SK,1999, s. 45-48

[21]     Hodas S.: CAD I. Návody na cvičenia. AutoCAD, In: Skriptá ŽU Žilina, Stavebná fakulta,  Žilinská univerzita, EDIS, Žilina, SK, 1999. – ISBN 80-7100-587-8, 125 s.

[22]     Hodas S.: Geodetické merania, projektovanie a rekonštrukcie koľajových zhlaví v železničnom staviteľstve s využitím globálneho polohového systému súradníc GPS za podpory softvéru ZH-CAD, In: Inštitucionálny výskum 008/304/2000, Stavebná fakulta, Žilinská univerzita, Žilina, SK, 2000-2002.

[23]     Hodas S.: Meranie aktuálneho stavu železničných objektov pred ich rekonštrukciou [Geodetic surveys of real state of railway objects before their reconstruction], In: Technické správy GSS Žilina a GEOMONTA Harmanec, SK, 1996-2001.

[24]     Hodas S.: The information system design for construction purposes in railways [Návrh informačného systému pre stavebné účely na železnici], In: STUDIES of University in Žilina, Civil engineering series 23, University of Žilina, Žilina, SK, 2000. – ISBN 80-7100-733-1, s. 5-11

[25]     Hodas S.: Železničné výhybky – od merania po informačný systém [Railway turnouts – from surveying to information system], In: KOMUNIKÁCIE, 4, Žilinská univerzita, Žilina, SK, 2000. – ISSN 1335-4205, s. 69-73

[26]     Hodas S.: Rekonštrukcie objektov – nutnosť dnešnej doby [Reconstruction of railway objects - necessity of these days], ŽU Žilina, SVF, KGD, In: 6. Seminár traťového hospodárstva STRAHOS 2001, KŽSaTH, SVF, ŽU Žilina a ŽSR, Bratislava, SK, 2001. – ISBN 80-7100-813-3, s. 83-88

[27]     Hodas S.: Creation of quality software for survey data processing in AutoCAD [Vytvorenie kvalitného softvéru na spracovanie zistených dát v AutoCADe], In: STUDIES of University in Žilina, Civil engineering series 24, University of Žilina, Žilina, SK, 2001. – ISBN 80-7100-875-3, s. 21-32

[28]     Hodas S.: Geodetic surveys of inaccessible points and indirect connection [Geodetické merania nedostupných bodov a nepriame pripojenie], In: STUDIES of University in Žilina, Civil engineering series 24, University of Žilina, Žilina, SK, 2001. – ISBN 80-7100-875-3, s. 33-40

[29]     Hodas  S.: Quality of objects in road construction depending upon geodetic surveys [Kvalita objektov v cestnom staviteľstve v závislosti od geodetických meraní], ŽU Žilina, SVF, KGD, In: 3. Medzinárodná konferencia Doprava v mestských aglomeráciách, KCS, SVF, ŽU Žilina, Žilina, SK, 2001. – ISBN 80-7100-881-8, s.171-176

[30]     Hodas S.: Dlhodobé geodetické sledovanie deformácií pozorovaných bodov [Long-time geodetic proceeding of deformations of observed points], ŽU Žilina, SVF, KGD, In: Medzinárodná vedecká konferencia Geodézia, fotogrametria a inžinierska geodézia v informačnej spoločnosti, pri príležitosti 50. výročia založenia Katedry geodézie SVF STU, STU Bratislava, SK, 2001. – ISBN 80-227-1589-1, s. 185-190

[31]     Hodas S.: Geodetické práce v podzemnom staviteľstve, In: Učebnica Kubík I., Ratkovský K.: Podklady na projektovanie podzemných stavieb, Žilina, SK, 2002 (v tlači), 18 s.

[32]     Hodas S.: Priechodné prierezy a priečne profily v inžinierskom staviteľstve, In: Projekt a stavba, Slovenská komora stavebných inžinierov a Inžinierska akadémia Slovenska, Roč. 3, č. 12, IAS Bratislava, SK, 2001. – ISSN 1335-5007, s. 7-10

[33]     AutoCAD, AutoLISP, Visual LISP editor, verzie 14/LT/2000/2000i/2002, MAP 2/5/2000, Softvér, AUTODESK, Inc., www.autodesk.com, 1994-2002

 

Zpět na Úvod