25.12.2011 18:51    

volder
Arkadaşlar merhabalar.

Autocad çiziminde verilen ölçüleri excell de hücrelere yazacak bir lisp ihtiyacım vardır.
Örneğin bir tank çiziminde kullanılan ölçümlendirmeleri excele aktaracak.sıralama önemli değil excele yazması yeterlidir.
Forumda baya araştırdım ama bu tarzda bir lisp bulamadım.
Yardımlarınız için şimdiden teşekkürler.

26.12.2011 06:33    

ProhibiT
"Çizimde kullanılan ölçümlendirmeleri excel'e aktaracak" ifadeniz tanımsız kalmış. İstenen, belli objelerin ölçüleri (mesela Line objelerinin uzunlukları) mi? Yoksa oluşturulmuş ölçü (dimension) objelerinin değerlerinin mi? Excel ortamına aktarılması. Bu tür sorularda yapmak istediğinizi net ifade ederseniz, yardım alma şansınızı artırırsınız.

31.12.2011 15:42    

volder
Belli bir layerda bulunan line olabilir.
Veya sadece dimesion olabilir.
Dimension olması daha iyi olur.
Olabilirse yapılan ölçümleme sırasına göre olması çok daha iyi olur.
Şantiyede olduğumdan her zaman internet erişimim olmuyor.
Bu yüzden cevap veremedim .
Kusura bakmayın.

Yeni yılın herkese SAĞLIK MUTLULUK ve BEREKET getirmesi dileği ile.

31.12.2011 16:50    

ProhibiT
Kod:

(defun c:d2E (/ obj n dsy PvT oLc)
  (setvar "cmdecho" 0) (command "undo" "group")
  (setq obj (ssget "x" (list (cons 0 "DIMENSION") (cons 8 (cdr (assoc 8 (entget
                 (car (entsel "\nSelect Dimension to the desired Layer"))))))))
        n   (sslength obj) dsy (open (getfiled "Çıkış Kütüğü" "" "xls" 1) "w"))
  (while (> (setq n (1- n)) -1)
    (setq PvT (entget (ssname obj n)))
    (if (= (cdr (assoc 1 PvT)) "")
      (setq oLc (rtos (cdr (assoc 42 PvT)))) (setq oLc (cdr (assoc 1 PvT))))
    (write-line oLc dsy))
  (close dsy) (command "undo" "e") (prin1)
)

01.01.2012 20:07    

volder
Sayın Hocam
Yardımlarınız için çok çok teşekkür ederim.
İlk fırsatta uygulamasını yapacağım.
Tekrar tekrar teşekkürler.

09.03.2012 12:55    

BERNAYZ
Sayın Hocam,
bu lisp'i denedim. Süper bişey... Ancak şöyle bir sorunu var eğer ölçüde virgül sonrası varsa excel'e atarken virgül koymuyor. Yani ölçü 215,52 ise excel'e atarken 21552 olarak yazıyor... Bunu düzeltme şansınız var mıdır acaba?
Teşekkürler..

09.03.2012 14:37    

ProhibiT
Bu konuda epeyce polemikler oldu forumda. "Ondalık Ayracı" olarak virgül kullanılması standart dışı bir uygulamadır. Bütün dünyada bir Almanlar yapıyor bunu inat ve sabırla, bir de onlardan esinlenip biz Türkler kullanıyoruz. Daha doğrusu sayılarla uğraşmalarına rağmen matematiği hiç bilmeyen bazı meslek erbabı kullanıyor. Ondalık ayracının virgül olmasının bir tek Ozalit mantığında gerekçesi olabilir, bunun dışında elle etutulur bir gerekçe yok. AutoLisp ve diğer tüm programlama dillerinde 12,5 string olarak algılanır, 12.5 ise real :)



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

bu konunun sistematik çözümünü yazmıştım. Siz virgül diye bahsetmişsiniz ama, o virgül AutoCAD'den mi geliyor yoksa Bölge ve Dil Seçenekleri dolayısıyle Excel'mi virgül bekliyor anlaşılmıyor. Ama her durumda ondalık ayracınızı, AutoCAD ve Windows için nokta olarak tanımlamanızı tavsiye ederim.

Decimal Seperator'ün detaylarıyla uğraşmadan kullanabileceğiniz fonksiyon, fazladan 5 satır yazmak gerekti ama n'apalım :)
Kod:

(defun c:d2E (/ obj n dsy OnA PvT oLc)
  (setvar "cmdecho" 0) (command "undo" "group")
  (setq obj (ssget "x" (list (cons 0 "DIMENSION") (cons 8 (cdr (assoc 8 (entget
                 (car (entsel "\nSelect Dimension to the desired Layer"))))))))
        n   (sslength obj) dsy (open (getfiled "Çıkış Kütüğü" "" "xls" 1) "w")
        OnA (ascii (substr (getstring "\nKullanılacak ondalık ayracı: ") 1 1)))
  (while (not (minusp (setq n (1- n))))
    (setq PvT (entget (ssname obj n)))
    (if (= (cdr (assoc 1 PvT)) "")
      (setq oLc (rtos (cdr (assoc 42 PvT))))
      (setq oLc (cdr (assoc 1 PvT))))
    (cond ((and (= OnA 44) (not (vl-string-position OnA oLc)))
           (setq oLc (vl-string-subst (chr OnA) (chr 46) oLc)))
          ((and (= OnA 46) (not (vl-string-position OnA oLc)))
           (setq oLc (vl-string-subst (chr OnA) (chr 44) oLc))))
    (write-line oLc dsy))
  (close dsy) (command "undo" "e") (prin1)
)

ProhibiT (09.03.2012 15:29 GMT)

03.05.2012 23:29    

huseyinarc
ben daha çok yeniyi, hatta bu akşam öğrenmeye başladım lispin olduğunu. bu kodu kullanmaya çalıştım aşşağıdaki hatayı verdi, yardımcı olablirmisiniz.

Select Dimension to the desired Layer; error: An error has occurred inside the
*error* functionAutoCAD variable setting rejected: "dimzin" nil

04.05.2012 06:55    

ProhibiT
Başka bir fonksiyonla birlikte yüklenen *error* fonksiyonu içinde hata oluşuyor. Bu fonksiyonla bir ilgisi yok.

04.05.2012 11:07    

huseyinarc
üstad şimdide bu hatayı veriyo, ama benim yaptığım bişey yok :)

Select Dimension to the desired Layerbad argument type: lselsetp nil

04.05.2012 12:17    

ProhibiT
Benim de yaptığım bir şey yok. Neden bende ve başkalarında çalışıyor anlamak mümkün değil. Demek ki; Verilen AutoLisp kodlarının buradan nasıl alınıp kullanılacağı konusunda sitemizde araştırma yapmak, öğrenmek ve doğru uygulamak gerekiyor.

04.05.2012 18:30    

huseyinarc
diğer lisp kodlarında ne yaptıysam aynısını yaptım ama şimdi silip yeniden deneyecem.

19.12.2012 18:41    

atrmn
virgül veya nokta olmasının önemini kaldıran yukarıdaki kodu ayrı bir lisp olarak mı autocade yüklemeliyim

20.12.2012 03:36    

ProhibiT
Bu foksiyon nokta virgül probleminizi çözmez, yalnızca bu fonksiyon için ondalık ayracını seçmenizi sağlar.

27.07.2017 11:01    

sadik07
excel i acıyor fakat nasıl aktaracağımı anlamadım yardımcı olurmusunuz ??

> 1 <
Copyright © 2004-2022 SQL: 1.053 saniye - Sorgu: 88 - Ortalama: 0.01197 saniye