23.08.2018 14:02    

mesuttasar
Arkadaşlar öncelikle herkesin mübarek Kurban bayramını kutluyorum. Bayram tatilinde biraz kodları geliştirmeye çalışıyorum. Yapmak istediğim seçilen iki doğruyu orta noktalarından line ile birleştirmek. Birşeyler yaptım ama son kısımda koordinatları yanlış mı belirtiyorum nedir çizgiyi çizmiyor. Kodlar aşağıdadır. Hatanın nerede olduğunu söylerseniz çok memnun olurum.

Kod:

(defun c:ciz (/ ln1 ln2 x1s x1e y1s y1e z1s z1e x1 y1 z1 x2 y2 z2 as1 as2)

(setq ln1 (entget (car (entsel "\n1. Doğruyu Seçiniz:"))))
(setq ln1_strt_koord (cdr (assoc 10 ln1))) ;1. Doğrunun Başlangıç Koordinatları
(setq ln1_end_koord (cdr (assoc 11 ln1))) ;1. Doğrunun Bitiş Koordinatları
(setq x1s (car ln1_strt_koord)) ;1. Doğrunun Başlangıç X Koordinatı
(setq x1e (car ln1_end_koord)) ;1. Doğrunun Bitiş X Koordinatı
(setq y1s (cadr ln1_strt_koord)) ;1. Doğrunun Başlangıç Y Koordinatı
(setq y1e (cadr ln1_end_koord)) ;1. Doğrunun Bitiş Y Koordinatı
(setq z1s (caddr ln1_strt_koord)) ;1. Doğrunun Başlangıç Z Koordinatı
(setq z1e (caddr ln1_end_koord)) ;1. Doğrunun Bitiş Z Koordinatı

(setq x1 (/ (+ x1e x1s) 2)) ;1. Doğrunun Orta Noktasının X Koordinatı
(setq y1 (/ (+ y1e y1s) 2)) ;1. Doğrunun Orta Noktasının Y Koordinatı
(setq z1 (/ (+ z1e z1s) 2)) ;1. Doğrunun Orta Noktasının Z Koordinatı


(setq ln2 (entget (car (entsel "\n2. Doğruyu Seçiniz:"))))
(setq ln2_strt_koord (cdr (assoc 10 ln2))) ;2. Doğrunun Başlangıç Koordinatları
(setq ln2_end_koord (cdr (assoc 11 ln2))) ;2. Doğrunun Bitiş Koordinatları
(setq x2s (car ln2_strt_koord)) ;2. Doğrunun Başlangıç X Koordinatı
(setq x2e (car ln2_end_koord)) ;2. Doğrunun Bitiş X Koordinatı
(setq y2s (cadr ln2_strt_koord)) ;2. Doğrunun Başlangıç Y Koordinatı
(setq y2e (cadr ln2_end_koord)) ;2. Doğrunun Bitiş Y Koordinatı
(setq z2s (caddr ln2_strt_koord)) ;2. Doğrunun Başlangıç Z Koordinatı
(setq z2e (caddr ln2_end_koord)) ;2. Doğrunun Bitiş Z Koordinatı

(setq x2 (/ (+ x2e x2s) 2)) ;2. Doğrunun Orta Noktasının X Koordinatı
(setq y2 (/ (+ y2e y2s) 2)) ;2. Doğrunun Orta Noktasının Y Koordinatı
(setq z2 (/ (+ z2e z2s) 2)) ;2. Doğrunun Orta Noktasının Z Koordinatı

(setq as1 (list (rtos x1 2 3) (rtos y1 2 3) (rtos z1 2 3)))
(setq as2 (list (rtos x2 2 3) (rtos y2 2 3) (rtos z2 2 3)))

(command "line" as1 as2 "")
(princ)
)

23.08.2018 14:14    

mesuttasar
Command kısmını aşağıdaki şekilde yaptım yine olmadı.

Kod:

(command "_.line" (x1 y1 z1) (x2 y2 z2) "")

25.08.2018 21:05    

alumina
Alıntı
mesuttasar :

Kod:

(command "._line" (list x1 y1 z1) (list x2 y2 z2) "")

25.08.2018 22:41    

mesuttasar
Sayın meslektaşım, cevabınız için teşekkür ederim ancak öğrenmek amaçlı soruyorum.
Benim as1 olarak yazdığım
Kod:

(setq as1 (list (rtos x1 2 3) (rtos y1 2 3) (rtos z1 2 3)))
ifade sizin yazmış olduğunuz
Kod:

(list x1 y1 z1)
ifadesinden başka bir anlama mı geliyor? Acaba rtos komutu mu tanımlamayı bozdu?

Yani ;
Kod:

(setq as1 ( list x1 y1 z1)) yazıp sonra (command “._point” as1 “”)
yazsak bu koordinata nokta atmaz mı?

26.08.2018 00:29    

alumina
Alıntı
mesuttasar :

"rtos" fonksiyonu sayilari stringe cevirmekte kullanilir. Koordinatli islemlerde string ifadeler kullanilamaz. Kullanilmak istenirse "atof " fonksiyonuyla tekrardan sayiya donusturulmelidir.
Kod:

(setq as1 (list x1 y1 z1)) (command “._point” as1)

ifadesi dogru bir ifadedir ve belirtilen noktaya point atar. Istenirse degisken kullanmadan direkt olarak
Kod:

(command “._point” (list x1 y1 z1))

ifadesiyle de point atilabilir.

Iyi calismalar.

26.08.2018 12:32    

mesuttasar
Anladım teşekkür ederim sayın meslektaşım.

> 1 <
Copyright © 2004-2022 SQL: 1.11 saniye - Sorgu: 57 - Ortalama: 0.01948 saniye