13.03.2010 21:34    

ProhibiT
Merhaba arkadaşlar...
AutoCAD ortamında hazırlanmış, Line ve Text objelerinden oluşan tabloyu Excel'e aktaran bir AutoLisp program paylaşmak istiyorum. Bu programı forumdan cngzklc arkadaşımızın isteğiyle yazmaya başlamıştım. Ben vakit bulup bitiremeden cngzklc yabancı kaynaklı bir Lisp bulup problemini çözmüştü :) Ancak fırsat bulup programı bitirebildim.
Buna benzer işlemleri yapan pek çok Lisp bulabilirsiniz.
Algoritma ve Programlama Mantığı bakımından çok ilginç geldiği için program yazan arkadaşlarımızın ilgisini çekebilir düşüncesiyle paylaşmak istedim.
Tablonun Satır ve Sütun sınırlarını belirleyen objelerin "LINE", hücrelerin içindeki objelerin de "TEXT" veya MTEXT olduğu kabulüne göre yazılmıştır. Bir hücre içinde (tek satır halinde olmak şartıyla) birden fazla Text objesi bulunabilir.
Fonksiyon çalıştırılınca Excel'e aktarmak istediğiniz tabloyu Window ile seçmenizi ister.
Bundan sonra çıkışların nerede ve hangi isimli dosyaya kaydedileceğini belirlemek için bir diyalog kutusu açılır. Çıkış dosyasının standart uzantısı -.csv otomatik olarak verilir.
Kod:

(defun c:mtlst ()
  (setvar "cmdecho" 0) (command "undo" "group") (setvar "modemacro" "MehmetSahinGuvercin")
  (princ "Excel'e aktarmak istediğiniz tabolyu seçiniz\n")
  (while (/= 3 (car (setq ll (grread T 4 0)))) (setq ll (cadr ll)))
  (setq ll (list (caadr ll) (cadadr ll)) x1 (car ll) y1 (cadr ll) pp1 nil)
  (while (/= 3 (car (setq ur (grread T 4 1))))
    (setq ur (list (caadr ur) (cadadr ur)) x2 (car ur) y2 (cadr ur)
          pp1 (list x1 y1) pp2 (list x2 y1) pp3 (list x2 y2) pp4 (list x1 y2))
    (redraw) (grvecs (list 252 pp1 pp2 pp2 pp3 pp3 pp4 pp4 pp1))) (redraw)
  (setq ur (list (caadr ur) (cadadr ur)) dst (/ (distance ur ll) 50.0)
        tblcz (ssget "c" ur ll (list (cons 0 "LINE")))
        l (sslength tblcz) n 0 xler nil yler nil
        f (getfiled "Çıkış Kütüğü" "" "csv" 9) fo (open f "w"))
  (while (< n l)
    (setq pvt (entget (ssname tblcz n)) n (1+ n)
          xler (append (list (cadr (assoc 10 pvt))) xler)
          xler (append (list (cadr (assoc 11 pvt))) xler)
          yler (append (list (caddr (assoc 10 pvt))) yler)
          yler (append (list (caddr (assoc 11 pvt))) yler)))
  (setq xler (vl-sort xler '<) yler (vl-sort yler '<)
        xmin (nth 0 xler) xmax (nth (- (length xler) 1) xler)
        ymin (nth 0 yler) ymax (nth (- (length yler) 1) yler)
        p11 (list (- xmin dst) ymin) p12 (list (+ xmax dst) ymax)
        p21 (list xmin (- ymin dst)) p22 (list xmax (+ ymax dst)) n 0 xler nil yler nil)
  (while (< n l)
    (setq pvt (entget (ssname tblcz n))
          p3 (list (cadr (assoc 10 pvt)) (caddr (assoc 10 pvt)))
          p4 (list (cadr (assoc 11 pvt)) (caddr (assoc 11 pvt)))
          dx (abs (- (car p3) (car p4))) dy (abs (- (cadr p3) (cadr p4)))
          intx (inters p11 p12 p3 p4) inty (inters p21 p22 p3 p4))
    (if intx (if (< dx dy) (setq xler (append (list (car intx)) xler))))
    (if inty (if (< dy dx) (setq yler (append (list (cadr inty)) yler))))
    (setq n (1+ n)))
  (setq xler (vl-sort xler '<) yler (vl-sort yler '>)
        yler (append yler (list (- (nth (- (length yler) 1) yler)
               (- (nth (- (length yler) 2) yler) (nth (- (length yler) 1) yler)))))
        row (- (length yler) 1) clm (- (length xler) 1) n 0 m 0)
  (while (< n row)
    (setq satir (strcat) mmbr (strcat))
    (while (< m clm)
      (setq p1 (list (nth m xler) (nth n yler)) p2 (list (nth (1+ m) xler) (nth (1+ n) yler))
            cell (ssget "c" p1 p2 (list (cons 0 "TEXT")))
            cellm (ssget "c" p1 p2 (list (cons 0 "MTEXT"))))
      (if cellm (progn
          (if (not cell) (setq cell (ssadd)))
          (setq ml (sslength cellm) lm 0)
          (while (< lm ml) (setq cell (ssadd (ssname cellm lm) cell) lm (1+ lm)))))
      (if cell (progn (setq len (sslength cell) o 0 val (strcat))
          (if (> len 1) (progn
              (setq grpp (entget (ssname cell o))
                    grp (list (cadr (assoc 10 grpp)) (cdr (assoc 1 grpp))))
              (while (< (setq o (1+ o)) len)
                (setq grpp (entget (ssname cell o))
                      grp (append grp (list (cadr (assoc 10 grpp)) (cdr (assoc 1 grpp))))))
              (setq o -1)
              (while (< (setq o (1+ o)) (1- len))
                (setq p o)
                (while (< (setq p (1+ p)) len)
                  (setq x1 (nth (* 2 o) grp) a1 (nth (+ (* 2 o) 1) grp)
                        x2 (nth (* 2 p) grp) a2 (nth (+ (* 2 p) 1) grp))
                  (if (> x1 x2)
                    (setq grp (subst "xx" x2 grp) grp (subst "aa" a2 grp)
                          grp (subst x2 x1 grp) grp (subst a2 a1 grp)
                          grp (subst x1 "xx" grp) grp (subst a1 "aa" grp)))))
              (setq o -1)
              (while (< (setq o (1+ o)) len)
                (setq val (strcat val (nth (+ (* 2 o) 1) grp) " "))))
            (setq val (cdr (assoc 1 (entget (ssname cell 0))))))
          (setq l1 (strlen val) l2 (strlen mmbr) syc 1 cnt T)
          (if (> l1 1)
            (while (< syc l2)
              (if (wcmatch val (substr mmbr syc l1)) (setq cnt nil)) (setq syc (1+ syc))))
          (if cnt (setq satir (strcat satir val) mmbr (strcat mmbr " " val)))
          (if (/= m (1- clm)) (setq satir (strcat satir ";"))))
        (setq satir (strcat satir ";"))) (setq m (1+ m)))
    (write-line satir fo) (setq n (1+ n) m 0))
  (close fo)
  (princ (strcat "\n\nSeçilen Tablo " f " dosyasına yazıldı..."))
  (setvar "modemacro" "") (command "undo" "e") (prin1)
)
Algoritma ile ilgilenen arkadaşlarımız için;
- Window ile seçilen objeler içinden Line objeleri ele alınarak tablonun Sol Alt Köşe (minimum) ve Sağ Üst Köşe (maksimum) koordinatları belirlenir. Bu noktalara sırasıyla P1 ve P2 diyelim.
- Aşağıda şekilde görüldüğü gibi, P1 ve P2 den türetilen P3 ve P4 noktalarını birleştiren çizgi ile tabloda yer alan yatay çizgilerin kesişim noktaları, tablomuzun satırlarını tanımlar.
- Gene P1 ve P2 den türetilen P5 ve P6 noktalarını birleştiren çizgi ile Tabloda yer alan dikey çizgilerin kesişim noktaları da, tablomuzun sütunlarını tanımlar.
- Satır ve Sütun sınırları bilindiğine göre, bu hücre sınırları içinde kalan Text objeleri belirlenerek Çıkış kütüğüne uygun formatta yazılırlar.
- Bir hücre içinde (tek satırdan oluşmak kaydıyla) birden fazla Text objesi bulunabilir. Bu durumda seçilen text objeleri X koordinatlarına göre sıralanırlar.
[IMG]http://img57.imageshack.us/img57/1563/table.png[/IMG]
Herkese Kolay Gelsin...

ProhibiT (08.01.2011 19:40 GMT)

14.03.2010 11:39    

ehya
hocam eline sağlık. böyle bir lispi açık kod vererek birçok kişinin öğrenmesine vesile oluyorsunuz. Daha ne denilebilir ki :yes

hocam lispi deneyeyim dedim. sadece yazıları excel'e attı. mesajınızda line olan nesneleri de attığını söylemişsiniz. nerde hata yapıyorum :dozingoff

algoritmasını anlatmışsınız. özellikle bu harika olmuş. resimi inceleyeyim dedim ancak resim boyutu 150x121 olunca hiçbişi göremedim :(

14.03.2010 14:48    

ProhibiT
Teşekkür ederim ehya hocam :) Resmi büyüttüm, takip edilebilir hale geldi.
Line konusuna gelince; Eksik ifade etmişim. Seçilen bölgedeki AutoCAD Line objelerini algılayıp, hücre sınırlarını buluyor. Yani Tablo içinde PolyLine kullanılmışsa bunları seçmiyor. Anlatmak istediğim buydu. Yoksa AutoCAD ortamındaki tablo çizgilerini, Excel'de kenarlık gibi kullanmıyor. Bu Fonksiyon, Excel içinde herhangi bir işlem yapmıyor. Yalnızca -.csv (Comma Separated Value) türünde Excel'in açabileceği bir dosya oluşturuyor.

Yukarıda bahsettiğim gibi cngzklc arkadaşımızın isteği üzerine başlamıştım yazmaya. Arkadaşımızın bana gönderdiği örnek AutoCAD Drawing dosyasındaki tabloda hemen başta 3 problem yaşadım.

    • Sütun sınırlarını belirleyen dikey çizgiler, her satır için ayrı ayrı çizilmişti. Bu dikey çizgilerden biri birinin devamı olan çizgilerin X koordinatları arasında, Ekranda ve Kağıt üzerine çıktı alındığında gözle fark edilmeyen, ama AutoCAD'in göz ardı edemeyeceği küçük farklılıklar vardı. Seçilen bölgedeki bütün dikey çizgileri alıp, X koordinatlarını peş peşe sıraladığımda, hataya sebep oluyor, fazladan minicik genişliğe sahip sütun genişlikleri algılanıyordu. Bunun yanında, Dikey çizgilerin başlangıç ve bitiş X koordinatları ve Yatay çizgilerin başlangıç ve bitiş Y koordinatları arasında çok küçükte olsa farklılıklar vardı. Bunu aşmak için yukarıda açıkladığım algoritmayı kullandım.

    • Bazı hücrelerde birden çok Text objesi vardı. Üstelik bu Text objeleri (ssget ... ile aldığımda X koordinatlarına göre değil, oluşturulma sıralarına göre sondan başa doğru sıralanıyorlardı. Bu problemi aşmak için de; Hücre içinde birden fazla Text objesi varsa, bunları X koordinatlarına göre sıralayıp, Text içeriklerini bu sıralama içinde (strcat ... ile birleştirerek çıkış kütüğüne yazdırdım.

    • Benzer şekilde, genellikle ilk satırda bulunan ve bir kaç sütun genişliğe yayılan başlığı oluşturan Text objesi varsa, (ssget "w"... seçeneği kullanılınca bir kaç sütun üzerine yayılan bu başlığın tamamı hiç bir hücrenin içine sığmadığı için, (ssget "c"... seçeneğini kullandım. Bu durumda aynı obje devam ettiği bütün hücrelerde tekrar tekrar okunduğu için bunun da kontrol edilmesi ve aynı objenin aynı satırda birden fazla hücrede tekrarlanmamasını sağladım.

Kolay gelsin...

ProhibiT (05.01.2011 14:53 GMT)

02.04.2010 06:54    

cngzklc
Prohibit Hocam;

Elinize sağlık. Çok sağlam bir lisp olmuş.Size göndermiş olduğum lisp programından daha pratik.

Çok teşekkur ederim. İyi çalışmalar.

02.04.2010 07:26    

ProhibiT
Teşekkür ederim cngzklc :) Beğenmenize sevindim.
Bana o programı gönderdiğinizde, "Birileri yazmış, güzel yazmış. Amerika'yı yeniden keşfetmenin anlamı kalmadı" diye yazmıştım. Sonra biraz kafa yorunca Amerika'nın henüz pek iyi keşfedilmemiş olduğunu düşünerek bir keşif gezisine çıktım, fikr-i firar ettim. Ortaya böyle bir Lisp çıktı.

Kolay Gelsin...

02.04.2010 07:50    

cngzklc
Dediğim gibi, size göndermiş olduğum lispten daha pratik işimi görebiliyorum.O lispten farklı Autocad dosyalarından sırası ile liste alamıyordum. Aldığım listeyi kaydettikten sonra bir başka Autocad sayfasının malzeme listesini excele atabiliyordum.
Ama sizin gönderdiğiniz lisp kendi kaydediyor ve çok pratik. Seri şekilde işimi ürütebiliyorum.

Birkez daha çok teşekkur ederim. :) :)
İyi çalışmalar.

25.05.2010 09:02    

haydogdu2
birde sadece y koordinatlarını almasını istiyorum ben bunu düzenleyebilirmisiniz ?
aldıgı koordinatları çizebilen bir program var mı ?
yani enkesitler üzerinden boy kesiti çıkartacak ?
enkesit üzerine noktaları işaretleyip tabloyu yapacak sonrada bunları noktasal olarak ekranda belırtecek aralarından pollyline ile cizgi gecip boy kesiti olusturacagız eger bu mumkun olursa mukemmel bir kolaylık saglayacak bize ehya cok rıca edıyorum sana.

17.10.2010 07:22    

aozanp
S.A Allah razı olsun emegınıze saglık hocam..

09.11.2010 07:10    

bud_0782
emeğinize sağlık prohibit hocam.çok işime yaradı.ancak bazı satırlarda aynı satıra gelen tüm hücreleri sola dayalı olarak tek hücreye sıkıştırmış durumda.örneğin x ve y koordinatları yazan bir tabloda bazı satırlardaki y koordinatlarını, x koordinatlarıyla aynı hücreye atmış.
ondalıklı sayılarda nokta yerine virgül kullanmak gerekiyor.tabloyu hazırlarken buna benzer dikkat edilmesi gereken bişiler mi var?

09.11.2010 08:35    

ProhibiT
Merhaba bud_0782,

Bu fonksiyonu cngzklc arkadaşımızın isteği üzerine yazmıştım. Uçanı, kaçanı, her türlü Tablouyu Excel'e atar diye bir iddiası da yok açıkçası. Algoritma ve işleyiş mantığı bakımından iyi bir örnek olarak gördüğüm için, Lisp Yazan arkadaşlarımıza bir kıvılcım olabilir düşüncesiyle burada paylaşmış, ve paylaşırken de, fonksiyonun sınırlarını detaylı olarak açıklamıştım.

Yukarıda, Program Kodunun altında algoritmayı açıklayan bir şekil verdim. Bu şekli ve şekildeki tabloyu inceleyip, devamında da yaptığım açıklamaları takip ederseniz...
Alıntı
ProhibiT :

    • ...
    • ...
    • Benzer şekilde, genellikle ilk satırda bulunan ve bir kaç sütun genişliğe yayılan başlığı oluşturan Text objesi varsa, (ssget "w"... seçeneği kullanılınca bir kaç sütun üzerine yayılan bu başlığın tamamı hiç bir hücrenin içine sığmadığı için, (ssget "c"... seçeneğini kullandım. Bu durumda aynı obje devam ettiği bütün hücrelerde tekrar tekrar okunduğu için bunun da kontrol edilmesi ve aynı objenin aynı satırda birden fazla hücrede tekrarlanmamasını sağladım.



Bazı değerlerin neden tek hücrede toplandığını görebilir ve belkide tablodaki basit bir değişiklikle problemi çözebilirsiniz. Yani tablonun en üst satırında, tablo genişliğine yayılan tek bir hücre gibi düşünüp, o satırdaki bütün değerleri tek hücreye topluyor olabilir.

Ondalık nokta olarak Nokta veya virgül kullanımıyla ilgili

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

linkinde detaylı bir açıklama paylaşmıştım;
Alıntı
ProhibiT :
- AutoCAD ve AutoLisp ortamında ondalık ayıracı (decimal separator) Ülke ve dil seçeneklerinden bağımsız olarak daima noktadır. Hatta, hemen bütün Programlama dillerinde bu bir standarttır.
- Windows ve Office ortamlarında ise, Ülke ve dil özelliklerine göre nokta veya virgül kullanılıyor.

Rakamlarla ve sayılarla uğraşmalarına rağmen Matematik ve Bilimle ilgisi olmayan bazı meslek guruplarının baskın çıkmalarıyla yerleşen bir kötü alışkanlık. Bizler, teknik elemanlar olarak "Galat-ı meşhur, Lugat-ı fasihten evladır" diyip ses çıkarma gereği görmeyince böyle bir anarşi doğmuş oldu
592.318,74 gibi bir gösterim bizim dışımızda ülkelerde pek kullanımayan bir yöntem. Bunun yerine 592,318.74 şeklinde kullanılması hem daha yaygın hemde mantıklı

AutoLisp ile yazdığımız fonksiyonlarda, nokta yerine virgül yazdırmak programa fazladan eklemeler yapmak anlamına geliyor. Üstüne üstlük Fonksiyonlarımızı genel yazmak zorundayız. Yukarıda yazdığım fonksiyonda ondalık ayıracı olarak virgül kullansaydım. Bu seferde nokta kullanan arkdaşlarımız problem yaşayacaklardı. Bunun için bu konuda AutoCAD'in ondalık ayracını esas alıp ilave bir işlem yapmamayı tercih ediyoruz.


Tekrar etmek gerekirse, ondalık ayıracı olarak virgül kullanmak genel geçer bir standart değildir! Tam tersine Genel Geçer ondalık ayıracı Noktadır, virgül kullanılması özel bir haldir. Program yazarken de, sayısal değerleri (rtos ...) (Real to String) fonksiyonuyla çevirdiğimiz değeri doğrudan çıkış kütüğüne yazdırıyoruz. Yukarıda da açıklamaya çalıştığım gibi, burada paylaştığımız fonksiyonlar, en başta Lisp Yazan arkadaşlarımızla algoritmik ve programatik detayların paylaşımıdır. Her nokta virgül farkını dikkate alarak yazmaya kalkarsak evin yolunu bulamıyoruz :)

Sonuç olarak böyle bir ondalık ayıracı kullanma alışkanlığınız ve mecburiyetiniz varsa. (Ben böyle bir mecburiyete ve alışkanlığa katılmıyorum) Fonksiyonun oluşturduğu -.csv uzantılı Excel dosyasını (Birlikte aç seçeneğini kullanarak) Notpad ile açıp, Noktaları virgül yapmanızı tavsiye ederim. Benim tavsiyem "Windows'da Ülke ve Dil seçenekleri bölümünde ondalık ayıracının Nokta olarak belirlenmesi" dir.

Kolay gelsin...

ProhibiT (03.01.2011 17:15 GMT)

09.11.2010 10:29    

bud_0782
"Galat-ı meşhur, Lugat-ı fasihten evladır" güzel bir dokundurma :)

ilginize teşekkür ederim. yazılarınızı yakından takip ediyorum. her seferinde bu defa hocamdan ne öğreneceğim diye yazdığınız hemen her yazıyı okumaya çalışıyorum. çünkü aslında bir konuyu açıklarken bağlantılı bir çok konuya da açıklık getiriyorsunuz. anlatımınız yanlış anlaşılmaya ihtimal vermeyecek kadar net ve açık. buna rağmen ilgim ve bilgim dahilinde açıkladığınız bir çok teorik terime yabancı kalabiliyorum. bu sebeple şahsınıza birşey soracaksam iki kere düşünüyorum, acaba başka yerde açıklanmış mı diye. ama dediğim gibi belki de ilgim ve bilgim dahilinde bazen kaçırabiliyorum. zamanınızı aldığım için üzgünüm ve tekrardan ilginize teşekkür ederim.

03.01.2011 13:33    

seraya
téşékkürlér hocam allah razıolsun ...

05.01.2011 08:04    

özkan-wien
emegine saglik

08.01.2011 19:55    

ProhibiT
Alıntı
hgkyrl :
Alıntı
ProhibiT :
Merhaba arkadaşlar...
AutoCAD ortamında hazırlanmış, Line ve Text objelerinden oluşan tabloyu Excel'e aktaran bir AutoLisp program paylaşmak istiyorum. Bu programı forumdan cngzklc arkadaşımızın isteğiyle yazmaya başlamıştım. Ben vakit bulup bitiremeden cngzklc yabancı kaynaklı bir Lisp bulup problemini çözmüştü :) Ancak fırsat bulup programı bitirebildim.




Merhaba,

Keşke buraya tamamını alıntıladığınız mesajımı okusaydınız.
Fonksiyon, uçanı kaçanı her türlü tabloyu Excel dosyasına yazar denmemiş ki. Belli niteliklere sahip tablolardan bahsediyoruz. Çok büyük ihtimalle, Line yerine PoLyLine kullanılmıştır. Bu durumda hücre sınırları tanımsız kalır, tablo değerleri okunamaz ve dosyaya da yazılamazlar.

Böyle bir mesaj yazarken keşke alıntı yapmadan, hiç olmazsa kod kısmını alıntı yapmadan yazsaydınız. Paylaştığım fonksiyonda bir güncelleme yaptığımda, insanlar yanlışlıkla sizin mesajınızdan indirip hataya düşebilirler...

Kolay gelsin.

10.01.2011 07:40    

hgkyrl
Merhaba
Cevabınız için teşekkür ederim öncelikle. Ama malesef Forum anlamında da hiç bir sitede yazım olmamıştı. Burada da ilk kez yazdım. Nasıl alıntı yaptığımı da ben de anlamadım açıkçası. Bu tip sitelerde hiç tecrübem yok o nedenle kusuruma bakmayın lütfen. Sorum ile ilgili olarak birkaç projede de denemiştim dosyadan kaynaklı olabilir düşüncesi ile. Ama hiç bir veri aktarımı yapamadım malesef.
Şimdi boş bir dosyada sıfırdan sadece dediğiniz gibi tablo oluşturdum gayet başarılı oldu.
Ama elimdeki dosyalarda (en azından denediğim 3-4 dosyadaki tablolarda) başarılı olmadı.
Aklıma gelen tek şey, biz rus projeleri hazırlıyoruz ve rusça fontlarla ilgili sorun yaşanıyor olabilme ihtimali.
Bu yapılamayan tabloları tekrar kontrol edeceğim. Sizin belirttiğiniz text ve line dışında tanımlanamayan farklı tipler var mı yok mu diye...
Sanırım sorun bizim dosyalarda. Mimari planlardan birini açıp denedim ve sorunsuz oldu. Bizim çevre düzenleme planlarında UCS oluşturuyoruz ve bu bazı uygulamaların çalışmamasına neden oluyor. Mesela 2 viewport la çalışma istediğimde pencereler arası geçiş yaptığımda pencerelerin ayarları hep eşitleniyor. ( zoom extend yapıyor gibi ) Bu nedenle hiç kullanamıyorum viewport'u. Tahminimce Yeni UCS oluşturduğumuz dosyalarda bu lisp de aynı sebepten çalışamıyor.
Tekrar teşekkürler
Saygılar

hgkyrl (10.01.2011 09:01 GMT)

10.01.2011 09:55    

ProhibiT
Forumda bu tür teknik aksaklıklar olabiliyor, o anlamda yazdıklarım, şahsınıza yönelik olamaz elbette, genel bir açıklamadır. Bu anlamda sizi üzmesin lütfen. Hepimiz bir yerlerden başlayıp öğreniyoruz.

Kullanılan Kiril alfabesi fontlarıyla ilgili bir problem olmaması lazım. Rusça font (true type ise) Excel'de de aynen seçilerek problemsiz aktarılmış olur. Bir tek ihtimal var, kullanılan font içindeki bazı karakterlerin ascii kodu AutoLisp'in directive olarak kabul edeceği karakterler olursa problem olabilir. Bu noktada bir şeye dikat etmek lazım. Fonksiyonun bitişi normal mi? Yoksa hata ile mi sonlanıyor? Fonksiyon çalışıp bitince AutoCAD komut satırında "nil" gibi bir yazı çıkıyorsa hata oluşuyor demektir. Fonksiyon hatasız çalışıp sonlandığında, temiz bir şekilde AutoCAD command prompt'a dönecektir.

Belki eksik anlaşılma olabilir düşüncesiyle, bir kere daha açıklamak isterim ki;

- Fonksiyon Tabloyu tanırken, LINE, TEXT ve MTEXT objelerini algılar.
- Bir Hücrede, aynı satırda olmak kaydıyla birden çok Text veya Mtext Objesi olabilir.
- Text veya Mtext Objesi aynı satır içinde birden çok hücreye yayılmış olabilir.

Kolay gelsin...

10.01.2011 10:09    

hgkyrl
Bu sabah zamanımı tamamen bu konuya ayırdım dediğiniz gibi hata vermiyor. Sadece boş bir excel dosyası açılıyor.
Sanırım, önceki yazımda bahsettiğim UCS sorunu.
Yeni tanımladığım ucs olan dosyalarda bu sorunu yaşıyor.
World düzeliyor.
İlginize tekrar teşekkür ederim. Zaman ayırdığınız için...

10.01.2011 10:22    

ProhibiT
UCS'den kaynaklanan bir hata olması ihtimali kuvvetli. Tablo elemanlarını okuturken (entget fonksiyonu kullanıyoruz. Böyle olunca da objelerin WCS'deki değerleri okunuyor. Bu durumda UCS'deki tablonuz WCS'de tanımsız hale düşüyor olabilir.

Aslında, Aktif UCS kontrol edilip, WCS'den farklıysa, transfer matrisleriyle dönüşüm uygulamayı düşündüm, ama, bir türlü fırsat bulup yazamadım :). Bu fonksiyonu epeyce uzatacak, daha komplike hale getirecektir. Daha önce de bahsettiğim gibi "Marifet iltifata tabidir, talebi olmayan marifet zayidir" misali, sizlerin ihtiyaçları beni yönlendirdikçe, fonksiyon daha kullanışlı hale gelecektir.

01.05.2011 01:27    

arincakkin
Selamlar. ben biraz geç dahil oldum bu dialoga. prohibit beyin dediği üzere acad deki tabloların line text veya mtext ten oluşmasına dikkat ederek mtlst ile lisp yazılımını kullanmaya çalıştım. fakat birkaç farklı tabloda da aldığım sonuç aynı oldu. yukardaki arkadaşlardan birinde de aynı durum olmuş. excelde her satır tek bir hücreden oluşuyor. bu durumla ilgili ne önerebilirsiniz bana?

01.05.2011 03:10    

ProhibiT


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

linkindeki (bu başlık altında) yazdıklarımı bir daha okuyun, hala problem varsa, bahsettiğiniz autocad dosyalarını bana gönderirseniz, problemi çözmeye çalışırım.

kolay gelsin.

> 1 < [2] [3] Sonraki Sayfa
Copyright © 2004-2022 SQL: 1.518 saniye - Sorgu: 98 - Ortalama: 0.01549 saniye