03.02.2017 18:16    

hfurkang
Merhaba arkadaşlar
bir konuda yardımınıza ihtiyacım var. Daha önce forumda alnex.fas ve decc.fas lisplerini kullandım. bu lispler çok işime yaradı ve yapana çok teşekkür etmek istiyorum. Soruma gelince, burdaki lispleden alnex autocadteki seçtiğimiz textleri önceden açmış olduğumuz excellde seçmiş olduğumuz satıra otomatik atıyor. decc lispide line gibi çizgilerin uzunluklarınız yine aynı şekilde excelle atıyor. Benim istediğim, bu iki lispin tek komut olarak çalışması ve seçilen lineların uzunluklarını autocadte de üzerine birimi ile yazsın. Aslında anlattıklarımı özetler isek bu videodaki gibi

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

bir lispe ihtiyacım var. Ve tek lisp olarak. bu mümkün müdür? Üstadlarım vaktiniz var ise ilgilenebilir misiniz? şimdiden çok teşekkürler.

04.02.2017 10:55    

alumina
Salon mahalline ait kenar uzunluklarini ve minha edilecek kapi-pencere uzunluklarini tek tek excele aktarip sonra sonra tekrardan excelde tek tek yukseklikleri yazip carptirarak metraj hesaplatmak sart degilse;

Fikir;

Salon mahalline ait kenarlar ornegin mahal_uzunluk layerinde polyline ile cizilse sonra minha edilecek kapi pencereler icinde ayni sekilde ilgili layerde line veya polyline olarak cizilse ve lisp soyle calissa;


*Mahal adi giriniz: (ornegin salon)
*Salona ait sinir nesnesini seciniz: (salon dis hatlari icin cizilmis polyline secilecek)
*Minha edilecek nesneleri seciniz: (kapi_minha ve pencere_minha layerindeki line veya polyline nesneler secilecek)
*Salon yuksekligi:
*Kapi yuksekligi:
*Pencere yuksekligi:

Bu asamadan sonra;

istenirse salon, pencere ve kapi kenarlarina olculer cizim uzerinde yazdirilabilir.
Direk olarak excele butun veriler aktarilmis olur. Excel 5 satirdan olusur.

Baslik satiri
Salona ait uzunluk yukseklik ve metraj
Kapilara ait uzunluk yukseklik ve metraj
Pencerelere ait uzunluk yukseklik ve metraj
Toplam metraj

daha cabuk olur sanki :)

04.02.2017 23:02    

hfurkang
Öncelikle konuya yanıt verdiğiniz için çok teşekkür ederim :) Aslında sizin fikriniz çok daha mantıklı fakat ben lisp konusunda çok yeniyim yani sizin olayı nasıl bulurum ederim bilemiyorum :)
Ayrıca çok karışık çizimler için ölçü alınan linelar ayrı bir renk olması ve üzerine ölçülerin cm cinsinden yazılması herhalde tadından yenmez yapar lispi 😊 umarım bir hayırsever bu işin ucudan tutar.

06.02.2017 14:48    

alumina
Alıntı
hfurkang :


Mahal sinirlarini "Mahal_Uzunluk" layerinde polyline ile ciziyoruz. Kapi ve pencereler icin yine "Kapi_Min" ve "Pencere_Min" layerlerinde "line" olarak ciziyoruz. Sonra "mt" komutunu giriyoruz. Mahal adini soracak, yaziyoruz. Mahale ait sinir cizgisini (polyline) secmemizi isteyecek, seciyoruz ve enter tusuna basmıyoruz sonrasinda minha edilecek kapi pencereleri soracak hepsini birden seciyoruz (secim yaparken otomatik olarak "Kapi_Min" ve "Pencere_Min" layerindeki cizgiler secilecektir) Sonra sirasiyla mahal yuksekligi, kapi yuksekligi ve penecere yuksekliklerini cm olarak giriyoruz. Sonrasinda excek dosyasini kayit etmek istedigimiz dizini seciyoruz ve bir isim veriyoruz. Bu kadar.

Not: Hayir sahibiyle konustum. Kendisi, kenarlara olcu yazdirmaya usendim, arkadastan da rica et istemesin bunu dedi :)

Kod:

(defun c:mt (/ mn mp mpp mh my ky py tk tp xl i ly lt) (vl-load-com)
  (defun m1 (p1 p2 p3 p4 /) (write-line (strcat p1 "\t"
    (vl-string-translate "." "," p2) "\t" (vl-string-translate "." "," p3) "\t" p4) xl))
  (if (/= (setq mn (getstring "\nMahal adi:")) "")
    (progn (prompt (strcat mn " sinir cizgisini seciniz:"))
      (if (setq mp (ssget ":s" '((0 . "lwpolyline") (8 . "Mahal_Uzunluk"))))
        (progn (redraw (setq mpp (ssname mp 0)) 3)
          (prompt "\nMinha edilecek kapi ve pencereleri seciniz:")
          (if (setq mh (ssget '((0 . "line") (8 . "Kapi_Min,Pencere_Min"))))
            (if (setq my (getdist "\nMahal yuksekligi:"))
              (if (setq ky (getdist "\nKapi yuksekligi:"))
                (if (setq py (getdist "\nPencere yuksekligi:"))
                  (if (setq tk 0 tp 0 xl (open (getfiled "" "" "xls" 9) "w"))
                    (progn
                      (m1 "Mahal Adi" "Uzunluk" "Yukseklik" "Metraj")
                      (m1 mn (rtos (/ (setq ml (vla-get-Length
                        (vlax-ename->vla-object mpp))) 100) 2 2)
                          (rtos (/ my 100) 2 2) "=b2*c2")
                      (repeat (setq i (sslength mh))
                        (setq ly (vla-get-Layer (setq mhn (vlax-ename->vla-object
                          (ssname mh (setq i (1- i)))))) lt (vla-get-Length mhn))
                          (if (= ly "Kapi_Min") (setq tk (+ tk lt)) (setq tp (+ tp lt))))
                      (m1 (strcat mn " Kapi") (rtos (/ tk 100) 2 2)
                        (rtos (/ ky 100) 2 2) "=b3*c3*-1")
                      (m1 (strcat mn " Pencere") (rtos (/ tp 100) 2 2)
                        (rtos (/ py 100) 2 2) "=b4*c4*-1")
                      (m1 "" "" "Toplam" "=d2+d3+d4")
                      (close xl)
                    )
                  )
                )
              )
            )
          ) (redraw mpp 4)
        )
      )
    )
  ) (prin1)
)

> 1 <
Copyright © 2004-2022 SQL: 0.786 saniye - Sorgu: 54 - Ortalama: 0.01455 saniye