AutoCAD • AutoLISP • Programlama • Püfler • Komutlar • Terimler • Eğitim
aLd • TCad • FacadeCAD • Cephe Kot • HQ Library • FreeMUST • Pasdoc.A
16.05.2013 11:01    

melisalmina
bir yangın borusuna tıkladığımda o borunun (tek çizgi)uzunluğunu bana 1"-2.10m gibi yazabilecek bir lisp olabilir mi yani dimension ile tek tek ölçüp yazmak çok zaman alıyor mesela ben borunn çapı 1" ise borunn uzunlugu için boruya tıklayacağım 2.00m diyecek ve çapı içinde projede zaten olan boru çapını referans göstereceğim örneğin 1" e tıkladığımda bana sonuç olarak 1"-2.00m diye yazabilecek bir lispe ihtiyacım var

17.05.2013 06:50    

Travaci

Travaci (17.05.2013 07:04 GMT)

17.05.2013 07:09    

melisalmina
çok teşekkür ederim sayın hocam :):) benden başkasınn işine yarar mı bilmem ama istediğimdende güzel oldu walla

27.08.2013 09:37    

oguzatalan
link ölmüş yenileyebilirmiyiz lütfen

27.08.2013 09:56    

Travaci


Linkleri görebilmek için ÜYE olmalısınız.

27.08.2013 13:16    

oguzatalan
link için teşekkür ederim.

denedim ama 1 1/4" gibi bi boru çapını yazdıramıyor ve 1,0000" gibi sonuç yazıyor.

27.08.2013 13:29    

Travaci
Küsürat durumunu halletmiştim ama eskisini upload etmişim farkında olmadan.
Lisp yukarıdaki isteğe göre yazılmış, sonucu misal; 1"-28.68m şeklinde veriyor.
Yazarkende hiç öyle girilebileceği aklıma gelmedi doğrusu.

02.09.2013 09:19    

miyatu
Kod:

(defun c:bmt ()
  (if (= cap nil)
    (progn
      (setq cap 15)
    )
  )
  (if (= sys nil)
    (progn
      (setq sys "Boru")
    )
  )
  (initget 1024 "Tablo")
  (setq p1 (getpoint "\nBaslangic noktasini sec [Tablo]:"))
  (initget 1024 "Cap System")
  (while (and (/= p1 "Tablo")
      (/= nil
  (setq p2 (getpoint p1
     (strcat "\nIlk noktayi sec[Cap <"
     (rtos cap 2 0)
     ">/ System<"
     sys
     ">]:"
     )
   )
  )
      )
)
    (cond
      ((= p2 "Cap") (cap_al))
      ((= p2 "System") (sys_al))
      ((and (/= p2 "Cap") (/= p2 "System")) (ciz))
    )
    (initget 1024 "Cap System")
  )
  (if (= p1 "Tablo")
    (progn
      (dls)
    )
  )
)

(defun cap_al ()
  (setq y_cap (getreal (strcat "\nYeni capi gir<" (rtos cap 2 0) ">:")))
  (if (= nil y_cap)
    (progn y_cap cap)
  )
  (setq cap y_cap)
)

(defun sys_al ()
  (setq y_sys (getstring (strcat "\nYeni system gir<" sys ">:")))
  (if (= nil y_sys)
    (progn y_sys sys)
  )
  (setq sys y_sys)
)

(defun ciz ()
  (setq layer (strcase (strcat "metraj_" sys "_" (rtos cap 2 0))))
  (if (null (tblsearch "LAYER" layer))
    (entmake
      (list
(cons 0 "LAYER")
(CONS 100 "AcDbSymbolTableRecord")
(CONS 100 "AcDbLayerTableRecord")
(cons 2 layer)
(cons 70 0)
(cons 62 155)
(cons 6 "CONTINUOUS")
      )
    )
  )
  (setvar "CLAYER" layer)
  (command "PLINE" p1 p2 "")
  (setq p1 p2)
)

(defun dls ()
  (setq data (dosya_adi "csv"))
  (setq f (open data "w"))
  (setq p1 (getpoint "\nTablo yerlesim yerini gosteriniz:"))
  (while (/= (setq l_adi (cdr (assoc 2 (tblnext "LAYER")))) nil)
    (setq d_kodu (substr l_adi 1 6))
    (if (= d_kodu "METRAJ")
      (progn
(secim1)
      )
    )
  )
  (princ "\nmiyatu tool kullanildi...")
  (tblnext "LAYER" t)
  (PRINC)
)
(PRINC "BORU METRAJ TABLOSU YAPAN LISP YUKLENDI... [BMT]")

(defun topla ()
  (vl-load-com)
  (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 (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))
  )
)
(setq c (+ c 1))
      )
      (setq uzunluk (rtos (/ toplami 1000) 2 2))

    )
  )
  (text_yaz l_adi p1 (strcat l_adi "," uzunluk))
)

(defun secim1 ()
  (setq secim (ssget "_X" (list (cons 0 "LWPOLYLINE") (cons 8 l_adi))))
  (if (/= secim nil)
    (progn
      (setq p1 (polar p1 (dtr 270) 200))
      (topla)
    )
  )
)

(defun dosya_adi (#uzanti)
  (strcat (getvar "dwgprefix")
  (substr (getvar "dwgname")
  1
  (- (strlen (getvar "dwgname")) 3)
  )
  #uzanti
  )
)

(defun text_yaz (#t8 #t10 #t1)
  (entmake (list
     (cons 0 "TEXT")
     (cons 100 "AcDbEntity")
     (cons 8 #t8)
     (cons 100 "AcDbMText")
     (cons 10 #t10)
     (cons 1 #t1)
     (cons 40 125)
   )
  )
  (write-line (strcat l_adi "," uzunluk) f)
)

(defun dtr (#aci)
  (* pi (/ #aci 180.0))
)

(defun secim2 ()
  (setq secim (ssget "_X" (list (cons 0 "LWPOLYLINE") (cons 8 l_adi))))
  (if (/= secim nil)
    (progn
      (setq p1 (polar p1 (dtr 270) 200))
      (setq d_kodu d_kodu1)
      (topla)
    )
  )
)


alternatif olarak paylasiyorum. Kendi kullandigim toplama bir lisptir.

Normal sartlar altinda
Pline ile caplara ve sistem adina gore cizim yapmanizi saglar.
Yeni olusan layer lara gore boru metraji cikarir.
Ciziminizda istediginiz bir noktaya yazar.
Ciziminizin bulundugu klasor icinde csv uzantili bir dosya olusturur ve bunun icine metrajinizi cikarir.
Command satirini takip edin bir kac denemede nasil calistigini anlarsiniz.

02.09.2013 12:19    

waytooraider
Merhaba Miyatu,

Komutu çalıştırınca text değerine tıklayınca otomatik olarak cap değerine yazsa ve üstüne komuttan çıkmadan tekrar çizime devam etse herhalde aradığım şey bu derdim.

Saygılarımla.

03.09.2013 03:13    

miyatu
Alıntı
waytooraider :
Merhaba Miyatu,

Komutu çalıştırınca text değerine tıklayınca otomatik olarak cap değerine yazsa ve üstüne komuttan çıkmadan tekrar çizime devam etse herhalde aradığım şey bu derdim.

Saygılarımla.



Suanki hali ile komuttan cikmadan capini ve sistem adini degistirebilirsin.Secim yapmaktan daha kolay oldugunu dusunuyorum.

> 1 <
Copyright © 2004-2022 SQL: 1.399 saniye - Sorgu: 74 - Ortalama: 0.01891 saniye