31.10.2018 14:22    

mesuttasar
Arkadaşlar merhaba, aşağıdaki kodlarla iki doğru eğer kesişiyorsa, kesişim noktasına çember çizdirme ile ilgili kodları yazdım. Inspect le devam ettiğimde oluyor ama lispi çalıştırdığımda hata veriyor. Sebebini bulamadım. Bakabilirseniz memnun olurum. Şimdiden teşekkürler.

Kod:

(defun c:deneme()
(SETQ P1 (ENTSEL "\n1. Doğruyu Seçiniz.."))
(SETQ P2 (ENTSEL "\n2. Doğruyu Seçiniz.."))

(SETQ L1S (CDR (ASSOC 10 (ENTGET (CAR (ENTSEL p1))))))
(SETQ L1E (CDR (ASSOC 11 (ENTGET (CAR (ENTSEL p1))))))

(SETQ L2S (CDR (ASSOC 10 (ENTGET (CAR (ENTSEL p2))))))
(SETQ L2E (CDR (ASSOC 11 (ENTGET (CAR (ENTSEL p2))))))

(setq kes (inters l1s l1e l2s l2e  ))
(if
    (or (= l1s kes) (= l1e kes) (= l2s kes) (= l2e kes)      )

() ; eşitlik varsa bişey yapma

(command "_.circle" kes 0.4) ; eşitlik yoksa çemberi çiz
)
)

31.10.2018 14:33    

alumina
Alıntı
mesuttasar :
Dogrulari entsel le sectikten sonra car icinde bir daha entsel dersen cizmez tabiki. Hemen kaldiriyoruz onlari :)

31.10.2018 14:41    

mesuttasar
Alıntı
alumina :
Alıntı
mesuttasar :
Dogrulari entsel le sectikten sonra car icinde bir daha entsel dersen cizmez tabiki. Hemen kaldiriyoruz onlari :)



Hocam dediğiniz gibi yapınca işlem yaptı ama OR koşuluna göre işlem yapmadı, her türlü çemberi çiziyor şimdide :wink

Kod:

(defun c:deneme(/ p1 p2 l1s l1e l2s l2e kes)
(SETQ P1 (ENTSEL "\n1. Doğruyu Seçiniz.."))
(SETQ P2 (ENTSEL "\n2. Doğruyu Seçiniz.."))

(SETQ L1S (CDR (ASSOC 10 (ENTGET (CAR  p1)))))
(SETQ L1E (CDR (ASSOC 11 (ENTGET (CAR  p1)))))

(SETQ L2S (CDR (ASSOC 10 (ENTGET (CAR  p2)))))
(SETQ L2E (CDR (ASSOC 11 (ENTGET (CAR  p2)))))

(setq kes (inters l1s l1e l2s l2e  ))
(if
    (or (= l1s kes) (= l1e kes) (= l2s kes) (= l2e kes))

() ; eşitlik varsa bişey yapma

(command "_.circle" kes 0.4) ; eşitlik yoksa çemberi çiz
)
)

31.10.2018 14:45    

alumina
Alıntı
mesuttasar :

= yerine equal yaz, cizmez.

31.10.2018 14:48    

mesuttasar
Alıntı
alumina :
Alıntı
mesuttasar :

= yerine equal yaz, cizmez.



Hocam, şimdi siz olmasanız sittin sene = yerine equal yazmak aklımıza gelmezdi. BU tip bilgiler kitaplarda yer almıyor büyük ihtimalle. Teşekkür ederim. Sağolun.

Kodun son ve çalışan hali;

Kod:

(defun c:deneme(/ p1 p2 l1s l1e l2s l2e kes)
(SETQ P1 (ENTSEL "\n1. Doğruyu Seçiniz.."))
(SETQ P2 (ENTSEL "\n2. Doğruyu Seçiniz.."))

(SETQ L1S (CDR (ASSOC 10 (ENTGET (CAR  p1)))))
(SETQ L1E (CDR (ASSOC 11 (ENTGET (CAR  p1)))))

(SETQ L2S (CDR (ASSOC 10 (ENTGET (CAR  p2)))))
(SETQ L2E (CDR (ASSOC 11 (ENTGET (CAR  p2)))))

(setq kes (inters l1s l1e l2s l2e  ))
(if
    (or (equal l1s kes) (equal l1e kes) (equal l2s kes) (equal l2e kes))

() ; eşitlik varsa bişey yapma

(command "_.circle" kes 0.4) ; eşitlik yoksa çemberi çiz
)
)

31.10.2018 15:32    

alumina
Alıntı
mesuttasar :

Mehmet Sahin GUVERCIN hocamizin AUTOLISP VISUAL LISP kitabi sayfa 97-98-99-100 ve 101 de anlatilmis. Bu bilgiler isiginda "Koordinatlar, gercek sayilardan olusan listelerdir ve esitlik denetimleri equal ifadesiyle yapilir" cumlesi turetilebilir sanki.

31.10.2018 16:32    

mesuttasar
Alıntı
alumina :
Alıntı
mesuttasar :

Mehmet Sahin GUVERCIN hocamizin AUTOLISP VISUAL LISP kitabi sayfa 97-98-99-100 ve 101 de anlatilmis. Bu bilgiler isiginda "Koordinatlar, gercek sayilardan olusan listelerdir ve esitlik denetimleri equal ifadesiyle yapilir" cumlesi turetilebilir sanki.



Hocam, seçmiş olduğumuz iki line nesnesinin varsa kesişimine çember çizdirdik, kesişimin olması halinde, şimdide bu iki line nesnesinden uzun olanı silmek için nasıl bir kod yazmamız gerekir? Şu kod çok anlamsız gibi durdu çünkü. :dozingoff

Kod:

(command "_.erase" p2 "")

31.10.2018 17:08    

alumina
Alıntı
mesuttasar :

Kod:

(command "_.circle" kes 0.4
  "._erase" (if (> (distance l2s l2e)
    (distance l1s l1e)) p2 p1) "")

06.11.2018 08:56    

mesuttasar
Alıntı
alumina :
Alıntı
mesuttasar :

Kod:

(command "_.circle" kes 0.4
  "._erase" (if (> (distance l2s l2e)
    (distance l1s l1e)) p2 p1) "")




Teşekkür ederim, sağolun hocam.

> 1 <
Copyright © 2004-2022 SQL: 1.216 saniye - Sorgu: 67 - Ortalama: 0.01815 saniye