SET ve SETQ Komutu
AutoLISP'te eşit işareti yerine kullanılır. En bilineni ve çok kullanılanı SETQ'dur. Birinci parametre, atama yapılacak değişken, ikinci parametre ise atama yapılacak değer veya AutoLISP denklemidir.
(setq a var) A değişkeni içine VAR değişkeni içindeki değer atanır.
(defun c:test ( / j lpt symb)
(setq j 1)
(while (set (read (strcat "point_" (itoa j)))
(getpoint "\nPoint : ")
)
(setq j (1+ j))
)
;; Son nokta nill 'dir.
(setq j (1- j))
;; noktaları sıralayalım
(sortpoints j)
;; listelenen noktaların arasını çizelim (command "_line")
(setq lpt (list ""))
(while (> j 0)
(setq
symb (read (strcat "point_" (itoa j)))
lpt (cons (eval symb) lpt)
)
(set symb nil)
(setq j (1- j))
)
;; Çigileri çiz
(command "_line")
(mapcar 'command lpt)
(princ)
)
;; Noktaların sıralanması fonksiyonu
(defun sortpoints (j / i cur_y prev_y cur_symb prev_symb point)
(setq i 2)
(while (<= i j)
(setq
cur_symb (read (strcat "point_" (itoa i)))
prev_symb (read (strcat "point_" (itoa (1- i))))
cur_y (cadr (eval cur_symb))
prev_y (cadr (eval prev_symb))
)
(if (> cur_y prev_y)
(progn
(setq point (eval prev_symb))
(set prev_symb (eval cur_symb))
(set cur_symb point)
(if (/= i 2) (setq i (1- i)))
)
(setq i (1+ i))
)
)
)