05.07.2008 16:52    

meteyus
aşagıdaki lispte normal olarak cizgileri toplamını vermektedır. fakat bunu genellikle elektrik projelerinde bır cizgi ile 3 ve ya daha fazla kanal sembolıze ediliyor. seç tiğim çizgiyi bana kaçtane sormalı ve bende rakam girip o cizgini uzunlugunu o rakamla carpması ve diğer cizgiyi secerek aynı işlemi devam etmesini istiyorum
teşekkürler




(defun c:uon ()
;(setvar "modemacro" "Archme Design by --> EhYa <--")
(vl-load-com)
(setq yaz_yk 15.0)
(setq secim (ssget '((-4 . "<OR")
(0 . "LINE")
(0 . "LWPOLYLINE")
(0 . "ARC")
(0 . "ELLIPSE")
(0 . "SPLINE")
(0 . "CIRCLE")
(-4 . "OR>")
)
)
)

(if (= secim nil)
(progn
)
(progn
(setq sayim (sslength secim))
(setq toplami 0
c 0
)
(while (< c sayim)
(setq teksecim (ssname secim c))
(setq tanimi (cdr (assoc 0 (entget teksecim))))
(if (= tanimi "ARC")
(progn
(setq data (vlax-ename->vla-object teksecim))
(setq uz-bul (vla-get-arclength data))
(setq toplami (+ toplami uz-bul))
)
)
(if (or (= tanimi "LINE")
(= tanimi "LWPOLYLINE")
(= tanimi "POLYLINE")
)
(progn
(setq data (vlax-ename->vla-object teksecim))
(setq uz-bul (vla-get-length data))
(setq toplami (+ toplami uz-bul))
)
)
(if (= tanimi "CIRCLE")
(progn
(setq data (vlax-ename->vla-object teksecim))
(setq uz-bul (vla-get-circumference data))
(setq toplami (+ toplami uz-bul))
)
)
(if (or (= tanimi "ELLIPSE") (= tanimi "SPLINE"))
(progn
(command "._area" "e" teksecim)
(setq uz-bul (getvar "perimeter"))
(setq toplami (+ toplami uz-bul))
)
)
(setq c (+ c 1))
)
(setq yz_nkt (getpoint "\n Yazının yerleşeceği noktayı gösterin:"))
(if (= yz_nkt nil)
(progn
(alert (strcat "\nToplam Uzunluk: "
(rtos (/ toplami 100) 2 2)
" metre"
)
)
)
(progn
(command "_text" "_st" "standard" "j" "_mc" yz_nkt yaz_yk 0 (strcat (rtos (/ toplami 100) 2 2) " m."))

)
)

)
)
(princ)
)

05.07.2008 18:32    

Harbi65
Doğru anladımsa yaptım ama istediğin bu mu acaba?
adet girmezsen tek çizgi olarak yazar... girersen adetle çarpımını...

Kod:

(defun c:uon ()
  (setvar "modemacro" "Archme Design by --> EhYa <--")
  (vl-load-com)
  (if (not (tblsearch "style" "Metraj"))
    (progn       
      (if (= yaz_yk nil)
(setq yaz_yk 15.0)
)
      (setq yazy (getreal (strcat "\ Yazı stili yüksekliği <" (rtos yaz_yk 2) ">:")))
      (if (= yazy nil)
(setq yazy yaz_yk)
)
      (setq yaz_yk yazy)
      (command "STYLE"
       "Metraj"
       "Comic Sans MS"
       (rtos yaz_yk)
       "0.9"
       ""
       ""
       ""
      )
    )
  )
  (if (= ykat_sor nil)
    (command "layer" "_M" "DOSEME" "_C" "230" "" "")
  )
;
  (setq secim (ssget '((-4 . "<OR")
       (0 . "LINE")
       (0 . "LWPOLYLINE")
       (0 . "ARC")
       (0 . "ELLIPSE")
       (0 . "SPLINE")
       (0 . "CIRCLE")
       (-4 . "OR>")
      )
      )
  )

  (if (= secim nil)
    (progn
    )
    (progn
      (setq sayim (sslength secim))
      (setq toplami 0
    c 0
      )
      (while (< c sayim)
(setq teksecim (ssname secim c))
(setq tanimi (cdr (assoc 0 (entget teksecim))))
(if (= tanimi "ARC")
  (progn
    (setq data (vlax-ename->vla-object teksecim))
    (setq uz-bul (vla-get-arclength data))
    (setq toplami (+ toplami uz-bul))
  )
)
(if (or (= tanimi "LINE")
(= tanimi "LWPOLYLINE")
(= tanimi "POLYLINE")
    )
  (progn
    (setq data (vlax-ename->vla-object teksecim))
    (setq uz-bul (vla-get-length data))
    (setq toplami (+ toplami uz-bul))
  )
)
(if (= tanimi "CIRCLE")
  (progn
    (setq data (vlax-ename->vla-object teksecim))
    (setq uz-bul (vla-get-circumference data))
    (setq toplami (+ toplami uz-bul))
  )
)
(if (or (= tanimi "ELLIPSE") (= tanimi "SPLINE"))
  (progn
    (command "._area" "e" teksecim)
    (setq uz-bul (getvar "perimeter"))
    (setq toplami (+ toplami uz-bul))
  )
)
(setq c (+ c 1))
      )
      (setq
yz_nkt (getpoint "\n Yazının yerleşeceği noktayı gösterin:")
      )
      (if (= yz_nkt nil)
(progn
  (alert (strcat "\nToplam Uzunluk: "
(rtos (/ toplami 100) 2 2)
" metre"
)
  )
)
(progn
  (setq yzadt (getint "\n Ölçülen çizginin adetini girin:"))
  (if (= yzadt nil)
    (progn
      (setq sonuc toplami)
    )
    (progn
      (setq sonuc (* yzadt toplami))
    )
  )
  (command "_text"
   "_st"
   "Metraj"
   "j"
   "_mc"
   yz_nkt
   ""
   (strcat (rtos (/ sonuc 100) 2 2) " m.")
  )


)
      )

    )
  )
  (princ)
)

Harbi65 (05.07.2008 20:45 GMT)

05.07.2008 19:12    

meteyus
Harbi65 kardeş teşekkürler

meteyus (05.07.2008 20:46 GMT)

05.07.2008 20:47    

Harbi65
yukarıda ki lispi değiştirdim....
artık oldu de... yoksa benim boyumu aşıyor...:D

05.07.2008 20:57    

meteyus
tamam eyvallah kardeş oldu sagol

> 1 <
Copyright © 2004-2022 SQL: 0.783 saniye - Sorgu: 54 - Ortalama: 0.0145 saniye