08.05.2011 02:42    

arincakkin
Burada mtext leri de tanıyabiliyor olsa çok daha verimli olurdu. ben lisp bilmiyorum sadece biyerden buldum denedim ve çalıştı. bilen arkadaşlar mtextleri de tanıyabilecek hale getirirlerse sevinirim.






; (princ "\t" dosya) olarak yazılırsa tab'a basılmış gibi kaydeder....
; dosya sonra excell de açılırken hüçrelere bölünmüş olarak açılır...
; yani excell dosyası export edilmiş gibi olur.
(defun c:dd ( / )
(command "layer" "new" "metraj_layer" "c" "3" "metraj_layer" "")
(setq donati_text (ssget '((0 . "text")) ) )
(if (/= donati_text nil)
(progn
(setq donati_text_adet (sslength donati_text))
(setq i 0 )
(setq metraj_dosya (strcat (getvar "dwgprefix") (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4 )) "-dd-met.Xls"))
(setq dosya (open metraj_dosya "a"))
)
(progn
(princ "\n dosyaya ara veriyoruz.......")
(setq donati_text (ssget '((0 . "text")) ) )
(setq donati_text_adet (sslength donati_text))
(setq i 0 )
(setq dosya (open metraj_dosya "a"))
(princ "\n " dosya)
(princ "\n " dosya)
(princ "\n " dosya)
(princ "\n " dosya)
)
)
(while (< i donati_text_adet)
(princ (cdr (assoc 1 (entget (ssname donati_text i)))) dosya)
(setq d_eleman (entget (ssname donati_text i)))
(setq old_feature (cdr (assoc 8 d_eleman)))
(setq d_eleman (subst (cons 8 "metraj_layer") (assoc 8 d_eleman) d_eleman))
(entmod d_eleman)
;*******************************************************************************
; *
; bu satırın sonundaki t yi n yaparsanız tüm yazılar alt alta yazılır. *
; "\t" -> "\n" *
;*******************************************************************************
(if (= i (- donati_text_adet 1))
(princ "\n" dosya)
(princ "\t" dosya)
)
;*******************************************************************************
(setq i (+ i 1))
)
(close dosya)
(princ)
)

08.05.2011 06:07    

ProhibiT
İki yerde kullanılan (ssget '((0 . "text"))) ifadesini (ssget '((0 . "*text"))) şeklinde değiştirince MText objelerini de işleme alabilir.

08.05.2011 12:45    

k005
Merhaba arkadaşlar;

bu lisp te dtext leri alt alta sıralayabiliyor, t yi n yaptığımızda.. bir şey sormak istiyorum, bu kod sadece tek stun yada tek satırda işlem yapıyor. bunu iki sütun olarak düzenleyebilirmiyiz ?

08.05.2011 14:47    

ProhibiT
:) k005, kimsenin hevesini kırmamak için ben bunu söylemek istemedim, sorunun yalnızca mtext ile ilgili bölümüne cevap verdim. Fonksiyon anlatıldığı gibi bir algoritmaya sahip değil. Her seferinde bir tek satır seçerek, fonksiyonu satır sayısı kadar çalıştırarak belki bir şeyler yapılabilir. Üstelik seçtiğiniz satırı da sıralı seçmek gerekir...

Bir diğer konu da, oluşturulan text dosyasını doğrudan excel ile açamazsınız, (açarsanız da, her satır tek hücrede görüntülenir) dosyayı notpad veya başka bir editör ile açıp copy/paste ile excel'e aktarmak gerekiyor.

Böyle bir işlem için sitemizde

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

linkinde paylaştığım c:MtLst fonksiyonu tablo halinde bir metraj listesini doğrudan excel dosyasına yazar.


Kolay gelsin.

08.05.2011 15:12    

k005
Alıntı
ProhibiT :

Evet. anladım. yani öncelikle txt dosyasına aktarmamız gerekiyor. oradan excel e çekebilir diyorsunuz. tamam. bu txt dosyasıda belirli bir düzen içinde olmalı. ok. teşekkür..

08.05.2011 21:48    

arincakkin
Çok teşekkür ederim.Yalnız burada * eklendiğinde excele aktarılacak ifade örneğin 3fi20 l=745 ise excele aktarılmış hali {\farial b0 i0 c0 p34;5\fsymbol bo io .....L=745} şekline geliyor.

son olarak lispin çalışması acad versiyonlarına göre farklılık gösterebilirmi? lispin ilk hali 2008de sorunsuz çalışırken 2011de "; error: bad argument type: fıle nil" şeklinde error veriyor.

arincakkin (08.05.2011 22:44 GMT)

09.05.2011 07:49    

ProhibiT
Mtext'ler içinde font ve size değiştirme direktifleri olduğu için onlar da aynen alınıyorlar. böyle bir autolisp fonksiyonun çalışması autocad versiyonları arasında bir farklılık göstermez. bence bu fonksiyonla uğraşmayın boşuna. iyi yazılmamış, belki de bitmemiş bir fonksiyon. neresinden tutulsa elinizde kalır. 2011'de verdiği hataya gelince, yetkiniz olmadığı için, read-only bir klasörde dosya açmaya çalışan fonksiyon hata ile sonuçlanıyor. windows'un home premium işletim sistemini kullanıyorsanız, ya da üst versiyon bir işletim sisteminde giriş yaptığınız kullanıcıya sistem yöneticisi tarafından yetki verilmemiş ise böyle bir durum ortaya çıkar.

09.05.2011 12:59    

arincakkin
Tam istediğim cevaplar bunlardı:) fonksiyon çok iyi yazılmamış olabilir ama bu özelliğe ihtiyaç duyuyorum. forumda text ve mtextleri secince excele aktaran bir lisp var mı bildiğiniz?

win7 ultimate'i administrator olarak kullanıyorum. bazı lisplerim gayet düzgün sorunsuz çalışıyor, bazıları da(özellikle dikkatimi çeken, dışarı v eri aktaran lispler) eror vermeye devam ediyor)

arincakkin (09.05.2011 21:05 GMT)

10.05.2011 07:53    

hebedebe
Dataextraction komutu işinizi görmüyor mu?

10.05.2011 21:55    

arincakkin
Alıntı
hebedebe :
Dataextraction komutu işinizi görmüyor mu?



Çok benzer aslında dataextraction ile de yapılabilir fakat bu şekilde daha hızlı oluyor.

> 1 <
Copyright © 2004-2022 SQL: 1.283 saniye - Sorgu: 72 - Ortalama: 0.01782 saniye