09.10.2022 10:48    

alpayelmas
Merhaba Arkadaşlar;
Çizimimde bulunan rectangle lerin en ve boy uzunluklarını aşağıdaki kod ile alıyorum.
bu ölçüleri excel e kaydederken bir sorunum var.
rectangle ların bir kenarı 5 - 10 - 15 -20 -25 gibi sabit değerler ve diğer kenar uzunluklarında sınırlama yok,
benim istediğim kenar uzunluğu sabit değer olan kısmın EN değerine atanması diğer ölçünün BOY bölümüne aktarılması . Bunun için gereken İF koşulunu bir türlü yazamadım. Bu konuda yardıma ihtiyacım var.
bu sonucu halledebilirsem duvar metrajı lisp dosyamda ilerleyebileceğim.
Yardımlarınız için şimdiden teşekkür ederim.
pt1 ve pt2 degerleri başkabir işlemle geliyor.

(setq plss (ssget pt2))
(setq n (sslength plss))
(setq plobj (vlax-ename->vla-object (ssname plss (setq n (1- n)))))

(vla-getBoundingBox plobj 'minpt 'maxpt)

(setq
LL (vlax-safearray->list minpt)
UR (vlax-safearray->list maxpt)
delta (mapcar '- UR LL)
)
(setq EN (rtos (car delta) 2 2)
BOY (rtos (cadr delta) 2 2))

10.10.2022 06:23    

ehya
alpayelmas



Bu tür rectangle nesnelerinde boundingbox kullanmak doğru değil. Duvar eğimli ise sonuç hatalı çıkar.
Koordinatlarından gitmek daha doğru diye düşünüyorum.

Kod:

(defun c:123 ()
(if (setq ent (car (entsel "\npolyline sec:")))
  (progn
    (setq koor (mapcar 'cdr (vl-remove-if  '(lambda (x)(/= 10 (car x)))(entget ent))))
  (setq uz1 (distance (nth 0 koor)(nth 1 koor))
uz2 (distance (nth 1 koor)(nth 2 koor)))
   (if (< uz1 uz2)
     (setq en uz1 boy uz2)
     (setq en uz2 boy uz1))))
(print (strcat "Duvarı eni  : " (rtos en 2 2) ))
(print (strcat "Duvarı boyu : " (rtos boy 2 2) ))
(princ)
  )

10.10.2022 09:56    

alpayelmas
Ehya çok teşekkür ederim.
kodu yazdıgın kod ile değiştirip devam edeceğim.
kolay gelsin...

> 1 <
Copyright © 2004-2022 SQL: 1.132 saniye - Sorgu: 52 - Ortalama: 0.02177 saniye