25.10.2018 13:39    

mesuttasar
Arkadaşlar merhaba, aşağıdaki kodlarla ilk başta üç nokta girip bunlardan bir liste oluşturuyorum. Daha sonra girdiğim yeni noktadan , önceki noktalara line çizmek için aşağıdaki kodları yazdım ama while kısmında sanırım yazım yanlışı yapıyorum. Hata nerede acaba?
Şimdiden teşekkür ederim.

Kod:

(defun c:mst()
  (setq liste nil
i 0
y 0)
 
(setq a1 (getpoint "\nİlk Nokta.."))
  (setq liste (cons a1 liste))
(setq a2 (getpoint "\nİkinci Nokta.."))
(setq liste (cons a2 liste))
(setq a3 (getpoint "\nÜçüncü Nokta.."))
  (setq liste (cons a3 liste))

  (command "_.line" a1 a2 a3 a1 "")
 

(setq new (getpoint "\nYeni Nokta.."))
 
(setq liste (cons new liste))
(setq y (length liste))
(setq i 0)
 
  (while (< i (- y 1))
     
  (command "_.line" (nth i liste) (nth (- y 1) liste) "")
  (setq i (+ i 1))
  )
)

25.10.2018 15:19    

mesuttasar
Listeye yeni bir eleman eklendiğinde bu listenin sonuna değilde ilk elemanı olarak eklendiği için istediğimi gerçekleştiremiyormuşum. Reverse komutu ile yapmak istediğimi yapabildim.

Kod:

(defun c:mst()
  (setq liste nil
i 0
y 0)
 
(setq a1 (getpoint "\nİlk Nokta.."))
  (setq liste (cons a1 liste))
(setq a2 (getpoint "\nİkinci Nokta.."))
(setq liste (cons a2 liste))
(setq a3 (getpoint "\nÜçüncü Nokta.."))
  (setq liste (cons a3 liste))

  (command "_.line" a1 a2 a3 a1 "")

  (while

(setq new (getpoint "\nYeni Nokta.."))
 
(setq liste (cons new liste))
(setq y (length liste))
(setq listson (reverse liste))
 
  (setq m (- y 1))
(setq i 0)
 
  (while (< i m)

        (command "_.line" (nth i listson) (nth m listson) "")
 
        (setq i (+ i 1))
   
  )
)
   (princ)
)

25.10.2018 15:35    

ehya
Yazdığınız lispi gözden geçirerek gereksiz kodları temizlemek gerek. Yeni başladığınızı düşünerek fazla da kafa karıştırmak istemem.

Örneğin;
Koordinatları listelerken her biri için cons uygulamak yerine

(setq liste (append (list a1)(list a2)(list a3)))

kodunu uygulayabilirsiniz.

25.10.2018 17:05    

mesuttasar
Alıntı
ehya :
Yazdığınız lispi gözden geçirerek gereksiz kodları temizlemek gerek. Yeni başladığınızı düşünerek fazla da kafa karıştırmak istemem.

Örneğin;
Koordinatları listelerken her biri için cons uygulamak yerine

(setq liste (append (list a1)(list a2)(list a3)))

kodunu uygulayabilirsiniz.



Teşekkür ederim hocam, dediğiniz çok daha mantıklı böylece reverse koduna da gerek kalmamış olur. :)

mesuttasar (25.10.2018 17:13 GMT)

> 1 <
Copyright © 2004-2022 SQL: 0.963 saniye - Sorgu: 51 - Ortalama: 0.01888 saniye