area komutu ile belirli bir alanı hesapladıktan sonra bu alanı oluşturan köşe noktalarını bir listeye nasıl oluşturabiliriz..? listeden kastım, lisp içersinde bir listede tutmak. daha sonra gerekli olanları oradan alacağım.. nth ile..
Bunu yapmak için öncelikle nasıl kullanacağını belirlemen gerekir. yani istediğini kullanmak isterken, listeden istediğini nasıl belirleyeceksin? belirlediğinin senin istediğinin olduğunu nasıl anlayacaksın?
burada alan mı öncelikli, yoksa koordinatlar mı? yoksa bunlara birer isim vermek daha mı doğru?
Koordinatlar öncelikli.. alanları oluşturdum, ve bir listede topladım.. alanları belirlerkende çizim içinden tek tek kontrol ettim. ve ona görede nth ile bir değişkene atama yaptım.. aynı işlem koordinatlar içinde olabilirmi acaba.. koordinatlar listelenirse hangisi olduğunu bulabilirim. zaten çok fazla köşesi olmayan 3 alanım var.. diğerleri için köşe noktalarına ihtiyacım. yok..
Aşağıdaki kodlamada seçim için daratma yapmaadım. tüm nesneleri seçer. bunu alanı hesaplanan şekilde daraltmalısın.
seçim sonunda liste adı altında değerler olacak.
nth ile aldığın ilk listenin ilk elemanı alanı, diğerleri ise koordinatlarıdır..
umarım bunları listeden tek tek çekebilirsin.
yapamazsan anlatırım.
Kod:
(vl-load-com)
(setq sec (ssget)
say (sslength sec)
c 0
liste '())
(while (< c say)
(setq ilk (ssname sec c)
data (vlax-ename->vla-object ilk)
koor (vlax-safearray->list (vlax-variant-value (vla-get-coordinates data)))
alan (vla-get-area data))
(setq liste (cons (cons alan koor) liste))
(setq c (+ c 1))
)