09.12.2010 12:33    

emre198
Öncelikle tüm autocadokulu okur ve yazarlarına Merhaba! Autocad için yazılmış bir module var. Blokların tümünü sayarak adet olarak listeliyor, çoğunuz biliyorsunuzdur. Aynı işlemi zwcad veya autocad için text leri sayacak ve aynı yazıları adetleri ile tek liste halinde sıralayacak bir modul var mıdır? Ya da bunun için bir kaç komut paylaşabilir misiniz? Orta seviyede basic biliyorum makro olarak kullanmadım daha önce. autocad in desteklediği komutlarla bunu yapmak muhtemelen mümkündür ama konuya çok yabancıyım. çözüm olarak module verebilecek veya yol gösterebilecek arkadaşlar yardımınızı bekliyorum. (module bulunduktan sonrada geliştirebilmek için yardım edebilecekler olursa çok daha makbule geçer. Acil çözüm gerekmese copy paste yerine öğrenip yazmayı tercih ederim. Böylece bende burada yardımcı olabilirim bir çok kişiye diye düşünüyorum.)

ehya (09.12.2010 13:15 GMT)

09.12.2010 14:47    

ProhibiT
Kod:

;;;================================================;;;
;;;  Mehmet Şahin Güvercin    09/12/2010 - Ankara  ;;;
;;;================================================;;;
(defun c:TxtSay ()
  (setvar "cmdecho" 0)
  (command "undo" "group")
  (setq Yzlr (ssget "x" (list (cons 0 "Text,MText"))) L (sslength Yzlr) n -1)
  (while (< (setq n (1+ n)) L)
    (setq pivot (cdr (assoc 1 (entget (ssname Yzlr n))))
          kac (ssget "x" (list (cons 0 "text,mtext") (cons 1 pivot)))
          L1 (sslength kac) L (- L L1) n (1- n) m -1)
    (while (< (setq m (1+ m)) L1) (setq yzlr (ssdel (ssname kac m) Yzlr)))
    (princ (strcat "\n" (itoa L1) " : " pivot)))
  (command "undo" "e") (prin1)
)
Verilen AutoLisp fonksiyonu nasıl yükleyeceğiniz ve çalıştıracağınız konusunda fikriniz yoksa,

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

linkinde verilen açıklamaları okuyunuz.
Fonksiyonun Komut Adı: TxtSay
Kolay gelsin...

ProhibiT (09.12.2010 15:01 GMT)

09.12.2010 16:04    

emre198
Probhit kodlar için çok teşekkürler. Gayet kullanışlılar. ancak bazı projelerde text yerine attribute olarak saydırmam gerekiyor. bunun içinde bir el atabilirsen çok makbule geçer. kodları artık help dosyasından incelerim nedir ne değildir. :)

09.12.2010 23:12    

ProhibiT
Şimdi durum değişti... Bunu başka bir mantıkla yazmak gerekiyor. Attribute'ler Sub Entity olması hasebiyle, önce Attribute içeren block'ları (insert türü objeleri) bulup, onların altında Atrribute'leri eşelemek gibi bir yöntem aklıma geldi öyle yazdım;
Kod:

;;;================================================;;;
;;;  Mehmet Şahin Güvercin    10/12/2010 - Ankara  ;;;
;;;================================================;;;
(defun c:TxtSay ()
  (setvar "cmdecho" 0) (command "undo" "group")
  (setq YzLr   (ssget "x" (list (cons 0 "Text,MText")))
        bLckLr (ssget "x" (list (cons 0 "insert") (cons 66 1)))
        L      (sslength bLckLr) n      -1)
  (while (< (setq n (1+ n)) L)
    (setq pivot (ssname bLckLr n))
    (while (= (cdr (assoc 0 (entget (setq pivot (entnext pivot))))) "ATTRIB")
      (setq YzLr (ssadd pivot YzLr))))
  (setq L   (sslength YzLr) n   -1 LsT nil)
  (while (< (setq n (1+ n)) L)
    (setq Lst (append LsT (list (cdr (assoc 1 (entget (ssname YzLr n))))))))
  (while (> (setq L (length LsT)) 0)
    (setq pivot (nth 0 Lst) Lst   (vl-remove pivot LsT) Qnt   (- l (length LsT)))
    (princ (strcat "\n " (itoa Qnt) " : " pivot)))
  (command "undo" "e") (prin1)
)
Text ve Attribute ayırdetmeden her bir yazıdan (karakter dizisi) kaçar tane olduğunu listeler.

AutoLisp'e ilgi duyuyorsanız, daha doğrusu ihtiyacınızın şiddeti yeterli ise; benim yazdığım kodları ele alarak başlamayın. Bu sitede çok daha net, sade örnek ve kaynaklar var. Benim kendime has bir tarzım var, bazı arkadaşlarımız pek beğenmiyorlar, hatta Thixotropic diye niteleyen arkadaşlarımız var :) AutoLisp benim ana dilim değil.

Kolay gelsin...

10.12.2010 06:25    

emre198
Ellerine sağlık gayet güzel çalışıyor. Benim anladığım kadarıyla komutları açarak deil parametre gibi kullanıyorsun. parantezler içinde birleştiriyorsun yanılmıyorsam. :) belki yeni başlayanlara karışık gelebilir doğru ancak program yazarken en önemli şeylerden biriside en küçük boyuta ulaştırabilmektir. Bu arada "Thixotropic" ne demek? :D Daha çok cahilim bu autocad konusunda :D. ama ihtiyacımın şiddeti hat safada bunlar bile kesmeyebilir beni. :) sadece merak işte. :P şimdi bir sorum daha var attribute ları madem ki blockların içerisinden ayıkladık; şimdi elimizde hangi blocktan kaçtane var ve her birinin attributelarınıda kendi içinde kaçtane olduğunu biliyoruz. Yani örnek verirsek mccb bloğundan 10 tane var ve 3x10A attribute u olanından 2, 3x16A olanından 8 tane var, gibi. bunları ayrı bir pencere ya da txt dosyasına bu şekilde kayıt edebilir yada gösterebilir miyiz? Burada ki amacım projede kaçtane otomat ve bu otomatların kaçı 3x10 kaçı 3x16 görmek. Örneğin 3x40A için hem otomat hemde termik manyetik şalter mevcuttur. Bunların ayırımınıda yapabilmem gerekiyor. Ve senin içinde sakıncası yoksa msn leri alsak sende bana öğretsen birşeyler bu kadar başının etini yemem :)

Ve son bir eklenti daha bunu seçtiğimiz alana uygulayabilir miyiz? :D amma çok şey istemişim.

emre198 (10.12.2010 06:48 GMT)

10.12.2010 06:52    

ProhibiT
Thixotropic kavramının AutoCAD ile doğrudan bir ilgisi yok. Mekanik enerji uygulandığında akışkanlığı artan (viskozitesi azalan) malezme demek. Gıda sektörünün jargonunda ise, tiksindiricilik katsayısı anlamında kullanılıyor. Yazdığım kodların kullanıcı tarafından (ihtiyaçlarla) sıkıştırıldığında akışkanlaşması anlamında böyle diyorlarmış.
BLock'ların ve Atrribute'lerin listelenmesiyle ilgili burada epeyce paylaşımlar oldu. Hatta Dynamic BLock'lar da dahil listeleyen fonksiyonlar var bunların içinde. Üstelik Listelenen BLock ve Atrribute'leri excel formatında dosyalara bile yazdırmıştık :) Bazı ayaküstü fonksiyonları doğrudan buraya yazıyorum, kendi bilgisayarımda saklamıyorum. Profilimde msn'im var, ama vakit ayırma konusunda söz veremiyorum.

10.12.2010 13:27    

emre198
Yardımların için çok teşekkür ediyorum. msn adresini ekliyorum. elbette vakit ayırmak zor iş anlıyorum seni müsait oldukça konuşmak isterim. kimizde ankaradayız ben ankaranın büyük elektrik panocularından birinde çalışıyorum. Sende inşaat sektöründesin sanırım pano gerekirse haber ver yeter :)

> 1 <
Copyright © 2004-2022 SQL: 1.14 saniye - Sorgu: 60 - Ortalama: 0.01901 saniye