Ve funkci so:kresli_kružnici musíme nejprve získat a převést jednotlivé souřadnice středu kružnice z asociačního seznamu gl_pam_hodnoty. Nesmíme zapomenout rozdělit tečka dvojici klíč.hodnota a vzít z ní jen hodnotu. Tuto hodnotu musíme převést na reálné číslo.
Dále musíme zjistit a převést hodnoty poloměru kružnice, počtu kružnic a vzdálenosti mezi kružnicemi.Poté vytvoříme smyčku v které se bude vykreslovat kružnice.
![]()
Pro naprosto ztracené uživatele uvádíme programový kód celé funkce. Zdrojový kód funkce je možné nahrát v souboru SObjektyFINAL.lsp.
(defun so:kresli_kruznici (/ stred_kr polomer pol_kresl pocet vzdalenost)
;;; vykreslení kružnice
;;;; stred_kr - souř. středu (real.číslo, real.číslo, real.číslo)
;;;; polomer - real.číslo poloměr první kružnice
;;;; pol_kresl - real.číslo poloměr vykreslované kružnice
;;;; pocet - celé číslo počet kreslených soustředných kružnic
;;;; vzdalenost - real.číslo vzdálenost mezi kružnicemi
(setq stred_kr
(list
(atof (cdr (assoc "stredkex" gl_pam_hodnoty)))
(atof (cdr (assoc "stredkey" gl_pam_hodnoty)))
(atof (cdr (assoc "stredkez" gl_pam_hodnoty)))
)
)
;;; převod řetězců souřadnic do proměnné stred
;;; získání hodnot z asociačního seznamu gl_pam_hodnoty
(setq polomer (atof (cdr (assoc "polomerke" gl_pam_hodnoty))))
;;; uložení hodnoty poloměru
(setq pocet (atoi (cdr (assoc "pocetke" gl_pam_hodnoty))))
;;; počet kreslených kružnic
(setq vzdalenost (atof (cdr (assoc "vzdalenostke" gl_pam_hodnoty))))
;;; vzdálenost mezi kružnicemi
(command) ;;; ukončení všech předchozích příkazů
(while (> pocet 0) ;;; dokud je co kreslit opakuj
(setq pol_kresl (+ polomer (* vzdalenost (- pocet 1))))
;;; nastav aktuální poloměr
(command "_circle" stred_kr pol_kresl)
;;; vykresli kružnici se středem stred_kr a poloměrem pol_kresl
(setq pocet (- pocet 1))
;;; zmenši počet kružnic o 1
)
)