C dilindeki kullanımıyla yazmıştım, mod kullanımı yazıyla oluyormuş haklısınız. Şöyle bir durum var. Yukarıda yazdığınız döngüyü ve başlangıcı anlamadım. Ezbere bir mantıkla devam etmeye çalıştım. O kısmı detaylandırabilir misiniz? İngilizce değişkenler copy + paste bi mantık. Türkçe değişkenler anlayarak yaptığım kısımlar.
Özetle seçim başlatma ve döngü noktasında nasıl bir hata yaptığımı çözmüş değilim.
(defun C:FAZ ()
(setq faz-list '("L1" "L2" "L3")) ;; Faz numaraları için liste oluşturuyoruz.
(setq faz-no (atoi faz-no)) ;; Tam sayı yaptık.
(setq faz (nth (- faz-no 1) faz-list)) ;; Girilen sayıyı listede aratıyoruz, faz'a kaydediyoruz.
(while (setq sel (nentsel "\nSeçin: ")) ;; Kullanıcı attribute nesnesi seçene kadar döngüye giriyoruz.
(setq ent (car sel)) ;; Seçilen nesneyi alıyoruz.
(setq ent-data (entget ent)) ;; Seçilen nesnenin verilerini alıyoruz.
(if (eq (cdr (assoc 0 ent-data)) "ATTRIB") ;; Seçilen nesne eğer attribute ise.
(
progn ;; Attribute ise, faz indeksini artırıyoruz ve yeni faz değerini ayarlıyoruz.
(setq faz-index (mod (+ faz-index 1) 3))
(setq new-value (nth faz-index faz-list))
(setq ent-data (subst (cons 1 new-value) (assoc 1 ent-data) ent-data))
(entmod ent-data)
(entupd ent)
)
(prompt "\nSeçilen nesne bir attribute değil.") ;; Seçilen nesne eğer attribute değil ise.
)
)
(princ) ;; Çıkış
)