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 ) )