* E Posta Adresiniz:
* Kodu Girin:

> 1 <
İleti Yazar
27.12.2015 18:54
82567    
schutzhaft

[2] Girişimci

Online Durumu

4 ileti

İstanbul

Merhabalar,

Çizimin içerisindeki seçtiğim ölçülendirmelerin excel'de bir hücreye atılmasını forumda bulamadım.

Aslında istediğim lisp, textleri excele aktardığımız lisp gibi, tek fark text'i seçmeyeceğim dimension seçeceğim.

Text'leri excel'e aktardığımız lispi denedim olmadı.



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



Böyle bir lisp yapabilir miyiz?

28.12.2015 16:28
82575    
alumina

[70] Editör

Online Durumu

612 ileti
Insaat Muhendisi
Istanbul

Alıntı
schutzhaft :



Kod:

(defun c:de (/ ss i sr d l xl n m)
  (if (setq ss (ssget '((0 . "dimension"))))
    (progn
      (repeat (setq i (sslength ss))
        (if (setq sr (vl-position (setq d (rtos (cdr (assoc 42 (entget
              (ssname ss (setq i (1- i)))))) 2 2)) (mapcar '(lambda(a) (car a)) l)))
          (setq l (subst (list (car (nth sr l)) (1+ (cadr (nth sr l)))) (nth sr l) l))
          (setq l (cons (list d 1) l))))
      (setq xl (open (getfiled "" "" "xls" 9) "w") n 0)
      (write-line (strcat "Sira No" "\t" "Dimension" "\t" "Miktar" "\t"
                    "Toplam Miktar") xl)
      (foreach m (vl-sort (mapcar '(lambda(a) (list (atof (car a)) (cadr a))) l)
                   '(lambda(a b) (< (car a) (car b))))
        (write-line (strcat (rtos (setq n (1+ n)) 2 0) "\t" (vl-string-translate "." ","
                      (rtos (car m) 2 2)) "\t" (rtos (cadr m) 2 0) "\t"
                      (strcat "=" "B" (itoa (1+ n)) "*" "C" (itoa (1+ n)))) xl))
      (write-line (strcat "\t" "Toplam" "\t"
                  (strcat "=" "TOPLA" "(" "C2" ":" "C" (itoa (1+ n)) ")") "\t"
                  (strcat "=" "TOPLA" "(" "D2" ":" "D" (itoa (1+ n)) ")")) xl)
      (close xl)
    )
  ) (princ)
)

30.12.2015 13:09
82590    
schutzhaft

[2] Girişimci

Online Durumu

4 ileti

İstanbul

Yardımın için teşekkür ederim ama olayı eksik anlatmışım.

Örnek vermek gerekirse ;

Elimde 6 adet dikdörtgen çizimleri varsayalım. Bu dikdörtgenlerin ölçülerini excele aktarmak istiyorum. Şöyle olacak;

Sıra no | En | Boy | Adet

Seçtiğim ilk dimension en, 2. seçtiğim dimension boy olacak. (Yapabilir miyiz bilmiyorum ama sadece sormak için yazıyorum birde en ve boy yanında adeti ekleyebilir miyiz text olarak seçtiğimi de adet olarak kabul etsin ve excele aktarsın.)

Bu şekilde yapabilir miyiz? Yardımlarınız için şimdiden teşekkürler.


schutzhaft (02.01.2016 15:23 GMT)

31.12.2015 02:33
82594    
alumina

[70] Editör

Online Durumu

612 ileti
Insaat Muhendisi
Istanbul

Alıntı
schutzhaft :


Bu seferde eksik anlatmadiniz ins.

Kod:

(defun c:de (/ f s tx fn dt)
  (defun *error* (msg)
    (if (not (wcmatch (strcase msg t) "*cancel*,*exit*"))
      (princ (strcat "\nError: " msg)))
    (if f (redraw (ssname f 0) 4))
    (if s (redraw (ssname s 0) 4))
    (setq *error* nil)
    (princ))
  (prompt "\nSelect first dimension:")
  (if (setq f (ssget ":s" '((0 . "dimension"))))
    (progn (redraw (ssname f 0) 3)
      (prompt "\nSelect second dimension:")
      (if (setq s (ssget ":s" '((0 . "dimension"))))
        (progn (redraw (ssname s 0) 3)
          (prompt "\nSelect text:")
          (if (setq tx (ssget ":s" '((0 . "text"))))
            (progn
              (setq fn (strcat (getvar 'dwgprefix) (vl-filename-base
                (getvar 'dwgname)) ".xls"))
              (if (not (member (strcat (vl-filename-base (getvar 'dwgname)) ".xls")
                  (vl-directory-files (getvar 'dwgprefix) "*.xls")))
                (progn
                  (write-line (strcat "En" "\t" "Boy" "\t" "Miktar")
                    (setq dt (open fn "a"))) (close dt)))
              (write-line (strcat
                (vl-string-translate "." "," (rtos (cdr (assoc 42
                  (entget (ssname f 0)))) 2 2)) "\t"
                (vl-string-translate "." "," (rtos (cdr (assoc 42
                  (entget (ssname s 0)))) 2 2)) "\t"
                (rtos (atof (cdr (assoc 1 (entget (ssname tx 0))))) 2 0))
                  (setq dt (open fn "a"))) (close dt)
            )
          )
        )
      )
    )
  ) (redraw (ssname f 0) 4) (redraw (ssname s 0) 4) (setq *error* nil)
  (princ)
)

02.01.2016 15:21
82614    
schutzhaft

[2] Girişimci

Online Durumu

4 ileti

İstanbul

Bu sefer eksik anlatmadım ama;

- lispi çalıştırıyorum
- dimensionları seçip texti seçiyorum ama excel dosyası açılmıyor. (first dimension, second dimension , texti seçiyorum sonra birbirimize bakıyoruz.)

Herhangi bir hatada vermiyor. Atladığım bir nokta mı var?

02.01.2016 19:12
82616    
alumina

[70] Editör

Online Durumu

612 ileti
Insaat Muhendisi
Istanbul

Var evet. dwg dosyasi hangi klasordeyse o klasore gidin, dwg dosyasiyla ayni isimde bir excel dosyasi goreceksiniz, o dosyayi acin, sectiginiz olculer ve adetler o excel dosyasinin icinde olacaktir.

Not1: Sonradan sececeginiz olculerde o excel dosyasina yazilacaktir.
Not2: Eger o excel dosyasini kapatmazda acik birakirsaniz, sectiginiz olculer o excel dosyasina yazilmayacaktir.
Not3: Dosyanizla araniza girmek istemem ama siz yinede birbirinize cok bakmayin, kiskanirlar, nazar deger.

02.01.2016 19:59
82617    
schutzhaft

[2] Girişimci

Online Durumu

4 ileti

İstanbul

Haklısınız.

Atladığım nokta ise;

Dimensionları seçiyorum texte tıkladıktan sonra kontrol amaçlı excel dosyasına baktığım da excel dosyası, dwg'nin bulunduğu konumda olmuyor. Sonradan farkettim ki seçtiklerim mtext'miş.

Patlattığımda ise lisp canavar gibi çalışıyor ellerinize, emeğinize sağlık. Büyük bir sıkıntıdan kurtardınız.

Fakat 684 tane dikdörtgen çizimi var. Lispe acaba mtexti de entegre etmek mümkün müdür?


schutzhaft (02.01.2016 20:08 GMT)

03.01.2016 01:49
82623    
alumina

[70] Editör

Online Durumu

612 ileti
Insaat Muhendisi
Istanbul

Alıntı
schutzhaft :


Text ve Mtext icin uygun hale geldi. Yalniz 684 tane dikdortgen icin boyle tek tek secim yapacaksaniz isiniz cok zor, ve dahasi gozden kacirma veya atlama ihtimalinizde fazla. Eger polyline olan dikdortgenleri ayri bir layere, iclerinde yazan text yada mtext leri de ayri bir layere alirsaniz olculendirmeye gerek kalmaksizin cok daha buyuk bir kolaylik saglayabilirim. (Ornegin polylineler "PL" layerinde, text yada mtext lerde "TX" layerinde olabilir) Isterseniz dedigim sekilde icinde 8-10 tane dikdortgen olan ornek bir dosyayi buraya yukleyin.

Kod:

(defun c:de (/ f s tx fn dt)
  (defun *error* (msg)
    (if (not (wcmatch (strcase msg t) "*cancel*,*exit*"))
      (princ (strcat "\nError: " msg)))
    (if f (redraw (ssname f 0) 4))
    (if s (redraw (ssname s 0) 4))
    (setq *error* nil)
    (princ))
  (prompt "\nSelect first dimension:")
  (if (setq f (ssget ":s" '((0 . "dimension"))))
    (progn (redraw (ssname f 0) 3)
      (prompt "\nSelect second dimension:")
      (if (setq s (ssget ":s" '((0 . "dimension"))))
        (progn (redraw (ssname s 0) 3)
          (prompt "\nSelect text or mtext:")
          (if (setq tx (ssget ":s" '((0 . "*text"))))
            (progn
              (setq fn (strcat (getvar 'dwgprefix) (vl-filename-base
                (getvar 'dwgname)) ".xls"))
              (if (not (member (strcat (vl-filename-base (getvar 'dwgname)) ".xls")
                  (vl-directory-files (getvar 'dwgprefix) "*.xls")))
                (progn
                  (write-line (strcat "En" "\t" "Boy" "\t" "Miktar")
                    (setq dt (open fn "a"))) (close dt)))
              (write-line (strcat
                (vl-string-translate "." "," (rtos (cdr (assoc 42
                  (entget (ssname f 0)))) 2 2)) "\t"
                (vl-string-translate "." "," (rtos (cdr (assoc 42
                  (entget (ssname s 0)))) 2 2)) "\t"
                (rtos (atof (cdr (assoc 1 (entget (ssname tx 0))))) 2 0))
                  (setq dt (open fn "a"))) (close dt)
            )
          )
        )
      )
    )
  ) (redraw (ssname f 0) 4) (redraw (ssname s 0) 4) (setq *error* nil)
  (princ)
)

30.05.2018 13:00
86365    
omurek

[2] Girişimci

Online Durumu

1 ileti
tenik ressam
Ankara

Merhaba. Buna benzer bir konuda yardıma ihtiyacım var.

Benim ölçülerde
2500 (D-D)
2500 (D-W1)
1500 (D-W1)

gibi ölçü ve sonrasında text override olarak elle yazılmış yazılar var.

lisp i çalıştırdığım zaman excelde;

2500 (D-D)
2500 (D-W1)
1500 (D-W1)
olarak görmek istediğim değerler sadece
2500 ve 1500 olarak listeleniyor.
2500 (D-D) ve 2500 (D-W1) aynı ölçü sanıp 2 adet 2500 diyor.

Ben istiyorum ki ;

2500 (D-D) 1 adet
2500 (D-W1) 1 adet

gibi listelesin.

Kod üzerinde ufak bir oynama ile yapılabilir diye düşünüyorum ama beceremedim.
Yardımlarınızı rica ederim.

Alıntı
alumina :
Alıntı
schutzhaft :



Kod:

(defun c:de (/ ss i sr d l xl n m)
  (if (setq ss (ssget '((0 . "dimension"))))
    (progn
      (repeat (setq i (sslength ss))
        (if (setq sr (vl-position (setq d (rtos (cdr (assoc 42 (entget
              (ssname ss (setq i (1- i)))))) 2 2)) (mapcar '(lambda(a) (car a)) l)))
          (setq l (subst (list (car (nth sr l)) (1+ (cadr (nth sr l)))) (nth sr l) l))
          (setq l (cons (list d 1) l))))
      (setq xl (open (getfiled "" "" "xls" 9) "w") n 0)
      (write-line (strcat "Sira No" "\t" "Dimension" "\t" "Miktar" "\t"
                    "Toplam Miktar") xl)
      (foreach m (vl-sort (mapcar '(lambda(a) (list (atof (car a)) (cadr a))) l)
                   '(lambda(a b) (< (car a) (car b))))
        (write-line (strcat (rtos (setq n (1+ n)) 2 0) "\t" (vl-string-translate "." ","
                      (rtos (car m) 2 2)) "\t" (rtos (cadr m) 2 0) "\t"
                      (strcat "=" "B" (itoa (1+ n)) "*" "C" (itoa (1+ n)))) xl))
      (write-line (strcat "\t" "Toplam" "\t"
                  (strcat "=" "TOPLA" "(" "C2" ":" "C" (itoa (1+ n)) ")") "\t"
                  (strcat "=" "TOPLA" "(" "D2" ":" "D" (itoa (1+ n)) ")")) xl)
      (close xl)
    )
  ) (princ)
)


01.06.2018 16:02
86374    
bozok

[2] Girişimci

Online Durumu

5 ileti
inşaat
antalya

omurek arkadaşımızın talebi benimde işime yarayacak. Bende duvar metrajı yaparken kullanmak istiyorum.
ölçü çizgisine 400 TUĞLA (B) h=2,50 yazıyorum. Buradaki 400 birimi iki kolon arasındaki duvar uzunluğudur. Sonra malzemesi, (B) bulunduğu kat, h=2,50 ise duvar yüksekliği (kirişin altında ise, değilse döşeme altına kadar olan değeri elimle giriyorum). Benim istediğimde yukarıdaki arkadaşımızın talebi gibi. 400 rakamı bir hücreye, 2,50 rakamı yanındaki hücreye yazarak çarpma işlemi gerçekleşecek. Umarım çok şey istememişimdir. Hakkınızı helal edin.

16.06.2018 00:28
86398    
cengiz3dmax

[2] Girişimci

Online Durumu

2 ileti
mimar
malatya

Merhabalar,

çizgi seçildiğinde çizgi ismi ve ölçüsü excel dosyasına yan yana ayrı hücrelere yazılması mümkün müdür ?

iyi çalışmalar,,,

> 1 <
Copyright © 2004-2018 | Tüm Hakları Saklıdır | 2789 | Site haritası | İstatistikler | Hakkımızda | Kadromuz | Gizlilik | Reklam