Yeni bir başlık gönderCevap gönder 1. sayfa (Toplam 1 sayfa)   [ 11 mesaj ]
Yazar Mesaj
 Mesaj Başlığı: Offset hakkında.
MesajGönderilme zamanı: 31 Eki 2004 18:02 

Kayıt: 30 Ara 2001 00:05
Mesajlar: 27
Konum: Turkey
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


Başa Dön
 Profil  
 
 Mesaj Başlığı:
MesajGönderilme zamanı: 01 Kas 2004 12:10 
Site Admin

Kayıt: 07 Oca 2002 13:14
Mesajlar: 1085
Konum: Turkey
<b>"Offset komutunun yazılış fonksiyonu"</b> terimini biraz daha açar mısınız?


Başa Dön
 Profil  
 
 Mesaj Başlığı:
MesajGönderilme zamanı: 04 Kas 2004 17:47 

Kayıt: 30 Ara 2001 00:05
Mesajlar: 27
Konum: Turkey
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


Başa Dön
 Profil  
 
 Mesaj Başlığı:
MesajGönderilme zamanı: 05 Kas 2004 12:10 
Site Admin

Kayıt: 07 Oca 2002 13:14
Mesajlar: 1085
Konum: Turkey
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]


Başa Dön
 Profil  
 
 Mesaj Başlığı:
MesajGönderilme zamanı: 06 Kas 2004 00:26 

Kayıt: 30 Ara 2001 00:05
Mesajlar: 27
Konum: Turkey
Verdiğiniz bilgiler çok işime yarayacak.
Çok teşekkür ederim.
İyi çalışmalar.

ehya_bote


Başa Dön
 Profil  
 
 Mesaj Başlığı:
MesajGönderilme zamanı: 23 Kas 2004 11:54 

Kayıt: 11 Kas 2004 21:02
Mesajlar: 5
Konum: Turkey
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?


Başa Dön
 Profil  
 
 Mesaj Başlığı:
MesajGönderilme zamanı: 23 Kas 2004 12:10 
Site Admin

Kayıt: 07 Oca 2002 13:14
Mesajlar: 1085
Konum: Turkey
<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.


Başa Dön
 Profil  
 
 Mesaj Başlığı:
MesajGönderilme zamanı: 24 Kas 2004 21:16 

Kayıt: 11 Kas 2004 21:02
Mesajlar: 5
Konum: Turkey
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.?


Başa Dön
 Profil  
 
 Mesaj Başlığı:
MesajGönderilme zamanı: 26 Kas 2004 18:58 
Site Admin

Kayıt: 07 Oca 2002 13:14
Mesajlar: 1085
Konum: Turkey
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]


Başa Dön
 Profil  
 
 Mesaj Başlığı:
MesajGönderilme zamanı: 22 Mar 2008 18:42 

Kayıt: 21 Nis 2006 16:59
Mesajlar: 2
Konum: Turkey
bu polyline daki vertex koordinatlarını ekrana nasıl yazdıracağım yardımcı olursanız sevinirim.


Başa Dön
 Profil  
 
 Mesaj Başlığı:
MesajGönderilme zamanı: 23 Mar 2008 19:21 
Site Admin

Kayıt: 07 Oca 2002 13:14
Mesajlar: 1085
Konum: Turkey
[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]


Başa Dön
 Profil  
 
Eskiden itibaren mesajları göster:  Sırala  
Yeni bir başlık gönderCevap gönder 1. sayfa (Toplam 1 sayfa)   [ 11 mesaj ]


Kimler çevrimiçi

Bu forumu gezen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 9 misafir


Bu foruma yeni başlıklar gönderemezsiniz
Bu forumdaki başlıklara cevap veremezsiniz
Bu forumdaki mesajlarınızı düzenleyemezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu foruma eklentiler gönderemezsiniz

Aranacak:
Geçiş yap:  
cron


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
610nm Style by Daniel St. Jules of Gamexe.net


Türkçe çeviri: phpBB Türkiye