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
|