ADeko Technologies http://www.adeko.com/phpBB3/ |
|
Pline hakkında.... http://www.adeko.com/phpBB3/viewtopic.php?f=7&t=106 |
1. sayfa (Toplam 1 sayfa) |
Yazar: | ehya_bote [ 31 Mar 2002 10:14 ] |
Mesaj Başlığı: | Pline hakkında.... |
Merhaba, Benim sormak istediğim lisp yazarken pline 'ın hakkında istediğim değerini kullanabilirmiyim.. Yani pline' ın 3. ve 4.noktasının koordinatını bulmak ve bunlar arasındaki açıyı tespit edebilirmiyim. "entget" komutu ile pline'ın özelliklerine baktığımda özellikler örneğin (90 . 5) yazıyorsa koordinatlarında ( 10 12544.2545 5156.2115) yazıyor. ve bu koordinata ulaşamıyorum. yardımcı olursanız sevinirim. ehya_bote |
Yazar: | Destek/Support [ 01 Nis 2002 10:46 ] |
Mesaj Başlığı: | |
IntelliCAD'de (ve autocad'de), görünüşleri işlevleri tamamen aynı olmakla beraber veritabanında kaydedilme şekli olarak iki tür polyline var: POLYLINE ve LWPOLYLINE. Hangisinin kullanılacağını PLINETYPE değişkeni kontrol ediyor. LWPOLYLINE'da eskisinden farklı olarak aynı veri yapısı içinde birden çok vertex tutulabiliyor: (... (0 . "LWPOLYLINE") ... (10 1 2 0) ... (10 3 5 0) ... (10 9 4 0) ...) gibi. <b>assoc</b> fonksiyonu rastladığı ilk datayı bulacağı için diğer vertexlere ulaşabilmek için bir döngüye sokmanız gerekir: <pre id=code><font face=courier size=2 id=code><font face='Courier New'> (defun c:vtx (/ data i pt) (setq data (entget (car (entsel "\nPolyline'ı seç: ")))) (setq i 1) (while (setq pt (assoc 10 data)) ;<font color=green><i>sıradaki vertex koordinatlarını al, mevcut olduğu sürece işleme devam et</i></font id=green> (setq data (cdr (member pt data))) ;<font color=green><i><= Kritik satır burası. İşlenen veriden sonra kalanı "data" içinde saklıyoruz</i></font id=green> (princ (strcat "\n" (rtos i 2 0) ". vertex: ")) ;<font color=green><i>ekrana yaz</i></font id=green> (princ (cdr pt)) (setq i (1+ i)) ) (princ) ) </font id='Courier New'></font id=code></pre id=code> Edited by - Destek/Support on 01/04/2002 09:47:35 |
Yazar: | ehya_bote [ 02 Nis 2002 20:14 ] |
Mesaj Başlığı: | |
Verdiğiniz bilgiler için çok çok teşekkür ederim...Ama bu polyline ları incelerken dikkatimi çeken birşey var...tamam lwpolyline veri tabanında her koordinatı yazıyor ama polyline da yani 3dpoly de yazmıyor.. Veri tabanında olmayan koordinata nasıl ulaşacağım....??? ehya_bote |
Yazar: | Destek/Support [ 03 Nis 2002 14:06 ] |
Mesaj Başlığı: | |
Klasik (eski tip) polyline'ların veritabanında yer alış şekilleri LWPOLYLINE'dan farklı: her bir vertex veritabanında ayrı bri nesne olarak yer alıyor, dolayısıyla bunlara ulaşmak için <b>entnext</b> fonksiyonunu kullanmalısınız: Aşağıdaki fonksiyon her iki tip polyline'ı da işleyebilir durumda: <pre id=code><font face=courier size=2 id=code><font face='Courier New'> (defun c:vtx (/ ent i data pt tip) (setq ent (car (entsel "\nPolyline'ı seç: "))) (setq tip (cdr (assoc 0 (entget ent)))) (cond ((equal "POLYLINE" tip) (setq i 1) (while (not (equal "SEQEND" (cdr (assoc 0 (setq data (entget (setq ent (entnext ent)))))))) (setq pt (assoc 10 data)) (princ (strcat "\n" (rtos i 2 0) ". vertex: ")) (princ (cdr pt)) (setq i (1+ i)) ) ) ((equal "LWPOLYLINE" tip) (setq data (entget ent)) (setq i 1) (while (setq pt (assoc 10 data)) (setq data (cdr (member pt data))) (princ (strcat "\n" (rtos i 2 0) ". vertex: ")) (princ (cdr pt)) (setq i (1+ i)) ) ) (T (alert "Seçilen nesne Polyline değil") ) ) (princ) ) </font id='Courier New'></font id=code></pre id=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/ |