ADeko Technologies http://www.adeko.com/phpBB3/ |
|
Offset hakkında. http://www.adeko.com/phpBB3/viewtopic.php?f=7&t=1295 |
1. sayfa (Toplam 1 sayfa) |
Yazar: | ehya_bote [ 31 Eki 2004 18:02 ] |
Mesaj Başlığı: | Offset hakkında. |
Merhabalar... Uzun bi zamandan sonra tekrar bu forum'a mesaj atmak güzel.. Benim sormak istediğim bi soru var. Offset komutunun yazılış fonksiyonu hakkında bilginiz var mı? Bu konuda bilgi verirseniz sevinirim. Amacım yeni bir lisp uygulaması için istiyorum. Şimdiden teşekkür ederim... ehya_bote |
Yazar: | Destek/Support [ 01 Kas 2004 12:10 ] |
Mesaj Başlığı: | |
<b>"Offset komutunun yazılış fonksiyonu"</b> terimini biraz daha açar mısınız? |
Yazar: | ehya_bote [ 04 Kas 2004 17:47 ] |
Mesaj Başlığı: | |
Merhabalar... Offset komutu derken. bir çizgiyi seçip mesafe ve yön gösterildiğinde gideceği yön ve koordinatları nasıl buluyor. Özellikle pline olan nesnelerde. Pline olan nesnelerin verilen mesafeye ve gösterilen yöne göre yeni köşe koordinatlarını nasıl bulabilirim. Bu offset yön fonksiyonu içe ve dışa doğru fark eder mi? ehya_bote |
Yazar: | Destek/Support [ 05 Kas 2004 12:10 ] |
Mesaj Başlığı: | |
Aşağıdaki <b>Poffset</b> fonksiyonuna LWPOLYLINE veya POLYLINE nesnesinin içindeki düğüm (vertex) koordinatlarını liste halinde vererek offsetini elde edebilirsiniz. Sonra bu offset koordinat listesini tekrar <b>entget</b> ile elde ettiğiniz listeye aynı sırada gömerek <b>entmake </b>(veya <b>entmod</b>) komutuyla istediğiniz nesneyi elde edebilirsiniz. Not: İyi bir LISP editörü arıyorsanız size ConTEXT programını öneririz: [url]http://www.fixedsys.com/context[/url]. Program ücretsizdir. [code] <font color="green">;Poffset: verilen <b>path</b>'i <b>dst</b> kadar offset eder ve yeni path'i (newpath) döndürür ;<b>dst</b> pozitif ise sağa, negatif ise sola offset yapılır. ; ;Örnek: ; path= '((2.0 2.0 0.0) (2.0 6.0 0.0) (4.0 6.5 0.0) (5.5 7.5 0.0) (9.0 7.5 0.0) (9.0 3.5 0.0) (11.0 3.5 0.0)) ; dist= 1.0 ; ;(Poffset path dist) ;Sonuç: ; '((3.0 2.0 0.0) (3.0 5.22 0.0) (4.41 5.57 0.0) (5.8 6.5 0.0) (8.0 6.5 0.0) (8.0 2.5 0.0) (11.0 2.5 0.0))</font id="green"> (defun Poffset (path dst / newpath i p1 p2 p3 aci pi/2) (setq pi/2 (* 0.5 pi)) (setq i 1 p2 (car path) p3 (cadr path)) (setq newpath (list (polar (car path) (- (angle p2 p3) pi/2) dst) )) (while (< i (1- (length path))) (setq p1 p2 p2 p3 p3 (nth (1+ i) path) ) (setq newpath (cons (polar (nth i path) (+ (angle p2 p1) (setq aci (* 0.5 (ang3P p1 p2 p3)))) (/ dst (cos (- aci pi/2))) ) newpath ) ) (setq i (1+ i)) ) (setq newpath (cons (polar p3 (+ (angle p3 p2) pi/2) dst) newpath)) (reverse newpath) ) <font color="green">;APEX-P1 ve APEX-P2 çizgileri arasındaki açıyı ölçer</font id="green"> (defun ang3p (p1 apex p2) (anginUC (- (angle apex p2) (angle apex p1))) ) <font color="green">;anginUC: ANGle measured IN Unit Circle ;verilen açıyı (ang) 0-2pi arasına indirger</font id="green"> (defun anginUC (ang) (+ (rem ang (+ pi pi)) (if (minusp ang) (+ pi pi) 0.0)) ) [/code] |
Yazar: | ehya_bote [ 06 Kas 2004 00:26 ] |
Mesaj Başlığı: | |
Verdiğiniz bilgiler çok işime yarayacak. Çok teşekkür ederim. İyi çalışmalar. ehya_bote |
Yazar: | ressam [ 23 Kas 2004 11:54 ] |
Mesaj Başlığı: | |
Merhaba.... Bu konu ile ilgili birşey öğrenmek isterim. Vertex koordinatlarını liste halinde almaktan bahsetmişsiniz. Bu koordinatları liste halinde alan komut mu var. Yoksa bunun için bir fonksiyon mu yazıyorsunuz? |
Yazar: | Destek/Support [ 23 Kas 2004 12:10 ] |
Mesaj Başlığı: | |
<b>NESNEVERİ</b> (kısaltması <b>L</b>) komutunu olası tüm nesnelerin veri yapısını (düğüm konum noktaları da dahil olmak üzere) ekrana basmak için kullanabilirsiniz. |
Yazar: | ressam [ 24 Kas 2004 21:16 ] |
Mesaj Başlığı: | |
Merhaba... Alınan vertex'leri ekrana yazdırma da bir sıkıntım yok. Ancak yukarıda örneğini vermiş olduğunuz lisp'te path olarak tanıttığınız listeyi nasıl alabilirim.? |
Yazar: | Destek/Support [ 26 Kas 2004 18:58 ] |
Mesaj Başlığı: | |
Aşağıdaki kod seçilen nesne bir <b>LWPOLYLINE</b> ise düğüm konum noktalarını değilse <b>nil</b> döndürür: [code](defun getvtx (/ pline pldata data path) (setq pline (entsel "\nBileşikçizgiyi seç: ")) (setq pldata (entget (car pline))) <font color="green">;Nesnenin datasını çek</font id="green"> (if (equal "LWPOLYLINE" (cdr (assoc 0 pldata))) <font color="green">;Seçilen nesne bir LWPOLYLINE m'ola?</font id="green"> (progn (foreach data pldata (if (equal 10 (car data)) <font color="green">;Eğer bu bir düğümse</font id="green"> (setq path (cons (cdr data) path)) <font color="green">;XYZ'sini path'in başına ekle</font id="green"> ) ) (reverse path) <font color="green">;listeyi ters çevir ve geri gönder</font id="green"> ) nil <font color="green">;nesne LWPOLYLINE diilse nil döndür</font id="green"> ) )[/code] |
Yazar: | mersoy58 [ 22 Mar 2008 18:42 ] |
Mesaj Başlığı: | |
bu polyline daki vertex koordinatlarını ekrana nasıl yazdıracağım yardımcı olursanız sevinirim. |
Yazar: | Destek/Support [ 23 Mar 2008 19:21 ] |
Mesaj Başlığı: | |
[code](if (equal 10 (car data)) (setq path (cons (cdr data) path)) )[/code] Satırını şöyle yapın, noktalar listeye eklenmek yerine ekrana basılır: [code] (if (equal 10 (car data)) (progn (princ (cdr data)) (princ "\n") ) )[/code] |
1. sayfa (Toplam 1 sayfa) | Tüm zamanlar UTC + 2 saat [ GITZ ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |