Araç Servis Takip Programı (AST-v.2) foruma eklenmiştir. 
http://www.excelce.net/forum/index.php?topic=1656.0

Gönderen Konu: AutoCad için dxf Dosya yazmakla ilgili not  (Okunma sayısı 9895 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı bnazim

  • Excelce Onbaşı
  • **
  • İleti: 10
  • Puan +2/-0
  • Cinsiyet: Bay
  • Excel'den Daha Fazlası!..
  • Ad Soyad: Nazım Kocamaz
  • Doğum Yılınız: 1952
  • İl / İlçe: İzmir
  • İşletim Sisteminiz: Windows 7
  • Mesleğiniz: Emekli Teknik Ressam
  • Office Versiyonunuz: 2010
AutoCad için dxf Dosya yazmakla ilgili not
« : 22 Kasım 2011, 15:09:13 »
dxf dosya hk

   Autocad’ in Menü kısmından Help/Help/Auto LISP, Visual LISP and DXF’ i seç buradan DXF Reference kısmında DXF yazım formatı hakkında öğrenmek istediğin her şey var (İngilizce Biliyorsanız iyi, veya tarzanca ben öyle yaptım)

Versiyondan versiyona degisen cok sey varmi? Soruna gelince var ama benim sana verdiğim örnekler en basit şekli yani autocad10 versiyonunda bile çalışır. Zaten bu farklılıklarda yeni komutlarla ilgili, tahmin edersinki her autocad komutunu DXF formatta kullanmak mümkün.

   Genede ben sana bazı önemli şeyleri bire bir programı açıklayarak anlatmaya çalışayım.
   Mesela “çizimi metrik mi yoksa inch olarak mı yapmışlar” diye soruyorsun? Bu öğrenmen için elinde bulunan DXF dosyada HEADER Bölümünde şu ifadeyi araman lazım;

9
$LUNITS
70
2     
                     
9  Sayısının Peşinden bir sistem değişkeninin adının geleceği anlaşılır,
$LUNITS Sistem değişkeninin adını belirler (Ölçü sitilini belirlediğimiz değişken),
70 Sayısının peşinden Autocad’ in belirlediği bir sayının geleceği anlaşılır,
2 Sayısı ise Çizimin Ondalık Sistem
Yani “Decimal” olduğunu anlatır.

Autocad’ in belirlediği sayılar şu şekildedir;
1  FEN BİLİMLERİ    Scientific
2  ONDALIK SİSTEM   Desimal
3  MÜHENDİSLİK      Engineering
4  MİMARİ      Fractional
5  KESİRLİ      Scientific

Yanda bu seçimi Autocad menüsü şeklinde görmektesin.


Mesela bir örnek daha vereyim“çizimin açı Çinsi ne” Bu öğrenmen için elinde bulunan DXF dosyada şu ifadeyi araman lazım;

 9  Sayısının Peşinden bir sistem değişkeninin adının geleceği anlaşılır,
$DIMAUNIT Sistem değişkeninin adını belirler (Açı sitilini belirlediğimiz değişken),
70 Sayısının peşinden Autocad’ in belirlediği bir sayının geleceği anlaşılır,
2 Sayısı ise Çizimin açı biriminin Grad olduğunu anlatır.

Autocad’ in belirlediği sayılar şu şekildedir;
0 ONDALIK DERECE
1 DERECE,DAKİKA,SANİYE
2 GRAD ÇİNSİNDEN
3 RADYAN
4 TOPOGRAFİK

Yanda bu seçimi Autocad menüsü şeklinde görmektesin.
 

    Öncelikle bazı konuları hatırlatayım. Autocad Dxf formatta kod yazmak için bazı temel prensipleri bilmemiz lazım. Dxf format üç ana guruptan oluşur.

HEADER Bölümü
Bu bölümde Autocad sistem değişkenlerini kendi isteğimize göre değiştireceksek bunların girişi yapılır, Yazma zorunluluğu yoktur.

TABLES Bölümü   
Bu bölüm Autocad çizgi tipleri ve yazı stillerini kendi isteğimize göre değiştireceksek bunların girişi yapılır, Yazma zorunluluğu yoktur.

ENTITIES Bölümü
Bu bölüm Autocad çizim işlerini yaptırdığımız bölümdür ve asıl çizimi bu bölümde yaptırırız.

Bu her bölümde Autocad’ in her konu için yazmamamız gereken bazı özel kodları vardır. Bunlardan birkaç önemli olanını aşağıda program içinde örnek olarak tanımladım.

Tabiî ki yukarıda verdiğim iki örnekte HEADER Bölümü içinde aranacak,

   Autocad’ in hazırladığı DXF dosya şu şekilde görünür (yanlarına açıklamalarını yazdım;

0                   HEADER Bölümü Başlıyor,
SECTION
2
HEADER       
.
.    ……. bölümde Autocad sistem değişkenlerini kendi isteğimize göre değiştireceksek bunların girişi yapılır, Yazma zorunluluğu yoktur(yazının altında bunları yazacağım),
.
.
0
ENDSEC         HEADER Bölümü Bitti,
0                   TABLES Bölümü başlıyor,
SECTION   
2             
TABLES         
0                   çizgi tipleri başlangıcı,
TABLE
2
LTYPE"
70
2         2 adet yeni çizgi tipinin girileceği bildiriliyor,
.
.
.         ……Bu bölümde 5 adet çizgi tipi girilir,
.
0
ENDTAB                  Çizgi tipleri sonu
0                         YAZI stili başlangıcı
TABLE
2
STYLE
70
1                  1 Adet yeni yazı tipi girileceği bildiriliyor,       
.
.
.         ……Bu bölümde 1 adet yazı tipi girilir,
.
0
ENDTAB                YAZI stili sonu
0
ENDSEC                 TABLES bölümü sonu                  
0                    ENTITIES bölümü başlıyor,
SECTION     
2             
ENTITIES       
.
.
.         Bu bölümde çizim yaptırılır, (yazının altında bunları yazacağım)
.
0
ENDSEC      ENTITIES bölümü bitti,
0
EOF         Dosya sonu işareti.


Anlamış olduğun gibi DXF formatta her zaman O yazılı ifadeden sonraki sırada Bölümler, Bölüm  sonları veya Autocad komutu yer alır. 8 yazılı ifadeden sonraki sırada Layer adı, 9 dan sonra Sistem Değişkeninin adı, 10 yazılı ifadeden sonraki sırada sağa/sola değer, 20 yazılı ifadeden sonraki sırada yukarı/aşağı değer, 30 yazılı ifadeden sonraki sırada h yükseklik değeri gibi bu böyle uzar gider,

Sana elimde bulunan bazılarından örnekler vereyim;

   HEADER Bölümüne yazabileceğin veya okuyabileceğin bazı önemli değişkenler 70 ifadesinde sonra Autocad in belirlediği ölçüler girilir Aşağıda göreceksin bu ifade 40 olacak ozaman bizim belirlediğimiz değerler girilir. Anlaşılması için ben aralarında satır boşluğu bıraktım tabiî ki bu olmayacak;


    9
    $REGENMODE
    70
    1              ' 1 REGEN OTOMATİK YAPILIR
                     ' 0 REGEN KULLANICIYA SORULUR
    9
    $QTEXTMODE
    70
    0              ' 0 HIZLI YAZI MODU KAPALI
                    ' 1 HIZLI YAZI MODU AÇIK
    9
    $MIRRTEXT
    70
    0              ' 0 YAZI YANSITILDIĞINDA AYNEN KALIR
                    ' 1 YAZI YANSITILDIĞINDA TERS OLUR

DİKKAT Bak ifade 40 oldu değeri biz belirliyoruz ;

    9
    $LTSCALE
    40
    1              ' 1 ÇİZGİ TİPİ ÖLÇEĞİ

    9
    $TEXTSIZE
    40
    2              ' GECERLİ YAZI YÜKSEKLİĞİ
                             
    9
    $TRACEWID
    40
    1              ' VARSAYILAN CİZGİ GENİŞLİĞİ

    9
    $CLAYER
    8
    DAİRE         ' GEÇERLİ LAYER ADI benim çizimimde DAİRE İdi

    9
    $CECOLOR
    62
    0               ' GEÇERLİ RENK NO

    9
    $LUNITS
    70
    2              ' 1 FEN BİLİMLERİ
                    ' 2 ONDALIK SİSTEM
                    ' 3 MÜHENDİSLİK
                    ' 4 MİMARİ
                     ' 5 KESİRLİ
   
    9
    $LUPREC
    70
    2              ' 2 VİRGÜLDEN SONRAKİ HANE SAYISI

    9
    $SKETCHINC
    40
    0.1            ' ELLE ÇİZİMDE DOĞRU UZUNLUĞU

    9
    $AUNITS
    70
    2              ' 0 ONDALIK DERECE
                             ' 1 DERECE,DAKİKA,SANİYE
                             ' 2 AÇILAR GRAD ÇİNSİNDEN
                             ' 3 RADYAN
                             ' 4 TOPOGRAFİK
    9
    $AUPREC
    70
    4              ' 4 AÇILARDA VİRGÜLDEN SONRAKİ HANE SAYISI

    9
    $ELEVATION
    40
    0              ' GEÇERLİ ELEV YÜKSEKLİĞİ

    9
    $THICKNESS
    40
    0              ' ÇİZİLECEK OBJELERİN 3.BOYUT YÜKSEKLİĞİ

    9
    $SKPOLY
    70
    0              ' 0 İSE ELLE ÇİZİM NORMAL

    9
    $ANGBASE
    50
    90             ' 90 AÇI YÖNÜ YUKARISI OLACAK

    9
    $ANGDIR
    70
    1              ' 1 AÇILAR SAAT YÖNÜNDE HESAPLANACAK
                    ' 0 TERS YÖNDE

    9
    $SPLFRAME
    70
    0              ' 0 SADECE EĞRİ GÖRÜNÜR PLINE GÖRÜNMEZ
                    ' 1 EĞRİDE PLINE GÖRÜNÜR

    9
    $SPLINETYPE
    70
    5              ' 5 EĞRİ ÇİZGİ HATTA KALIR
                             ' 6 EĞRİ ÇİZGİ KÜBİK OLUR

    9
    $SPLINESEGS
    70
    8              ' 8 EĞRİ ÇİZGİ OBJE SAYISI
   
   
EN ÇOK KULLANILAN ÖLÇÜLENDİRME DEĞİŞKENLERİ;
   
    9
    $DIMSCALE
    40
    1              ' ÖLÇÜLENDİRME ÖLÇEK KAT SAYISI
   
    9
    $DIMLUNIT
    70
    2              ' 2 ONDALIK SİSTEM
                    ' 1 FEN BİLİMLERİ
                    ' 3 MÜHENDİSLİK
                    ' 4 MİMARİ
                    ' 5 KESİRLİ

    9
    $DIMDEC
    70
    2              ' 2 VİRGÜLDEN SONRAKİ HANE SAYISI

    9
    $DIMDSEP
    70
    46             ' 46 NOKTA ONDALIK AYIRACI
                    ' 44 VİRGÜL
                    ' 32 BOŞLUK

    9
    $DIMTZIN
    70
    4              ' 4 ÖLÇÜLERDE SON SIFIRLARI ATMAK

    9
    $DIMAUNIT
    70
    2              ' 2 AÇILAR GRAD ÇİNSİNDEN
                   ' 0 AÇILAR ONDALIK DERECE
                   ' 1 AÇILAR DERECE,DAKİKA,SANİYE
                   ' 3 AÇILAR RADYAN
                   ' 4 AÇILAR TOPOGRAFİK

    9
    $DIMADEC
    70
    4              ' 4 AÇILARDA VİRGÜLDEN SONRAKİ HANE SAYISI

    9
    $DIMAZIN
    70
    2              ' 4 AÇILAR SON SIFIRLARI ATMAK

    9
    $DIMASZ
    40
    2              ' ÖLÇÜ OKU BÜYÜKLÜĞÜ

    9
    $DIMEXO
    40
    2              ' ÖLÇÜ ARASI ÇİZGİSİYLE ÖLÇÜLEN ŞEKİL ARASI

    9
    $DIMDLI
    40
    4              ' 2 ÖLÇÜ ARASI MESAFESİ

    9
    $DIMEXE
    40
    2              ' ÖLÇÜ ARASI ÇİZGİLERİNİN YUKARI UZANTISI

    9
    $DIMTXT
    40
    2              ' YAZI YÜKSEKLİĞİ

    9
    $DIMCEN
    40
    1              ' DAİRE MERKEZ İŞARETİNİN BOYU
                    ' 0 İŞARET ÇİZMEZ
                    ' - İŞARET DAİRENİN DIŞINADA ÇİZER
 
    9
    $DIMTSZ
    40
    0              ' 0 İSE ÖLÇÜLER OK ARASINDA
                             ' 0 DAN BÜYÜK İSE TİK BOYU

    9
    $DIMDLE
    40
    0              ' DIMTSZ 0 DAN BÜYÜK İSE
                             ' ÇİZGİ ARALIĞI ÇIKINTISI

    9
    $DIMTIH
    70
    0              ' 0 ÖLÇÜ ÇİZGİSİNE PARALEL YAZI
                     ' 1 ÖLÇÜ ÇİZGİSİNE YATAY YAZI

    9
    $DIMTOH
    70
    0              ' 0 EĞİK ÖLÇÜ ÇİZGİSİNE PARALEL YAZI
                   ' 1 EĞİK ÖLÇÜ ÇİZGİSİNE YATAY YAZI

    9
    $DIMTVP
    40
    0.1            ' EĞER DIMTAD 0 İSE ÇİZGİ İLE YAZI ARASI MESAFESİ

    9
    $DIMTOFL
    70
    0              ' 0 ÖLÇÜ YAZISI SIĞMAZSA ARA BOŞ
                             ' 1 ÖLÇÜ YAZISI SIĞMAZSA ARA ÇİGİLİ
    9
    $DIMSTYLE
    2
    ISO -25      ' ISO STANDARTI

    9
    $DIMCLRD
    70
    0              ' ÖLÇÜ ÇİZGİSİ RENGİ

    9
    $DIMCLRE
    70
    0              ' ÖLÇÜ ARASI ÇİZGİSİ RENGİ

    9
    $DIMCLRT
    70
    0              ' YAZI RENGİ

    9
    $DIMGAP
    40
    0.5            ' YAZI İLE ÇİZGİLER ARASI BOŞLUK
                     ' DEĞER - GİRİLİRSE ÖLÇÜ KUTU İÇİNDE OLUR

    9
    $DIMTXSTY
    7
    Standard      'geçerli  YAZI SİTİLİ






   TABLES Bölümüne sana örnek olacak yazabileceğin veya okuyabileceğin çizgi tipini hazırlaya bileceğin benim hazırladığım 2 adet çizgi tipi;

    0         İlk örnek
    LTYPE
    2
    CONTINUOUS     ' çizgi tipi adı
    70
    0
    3
    SOLID LINE        ' açıklayıcı yazı
    72
    65
    73
    0
    40
    0


    0         İkinci örnek
    LTYPE
    2
    KISA_ÇİZGİ         ' çizgi tipi adı
    70
    0
    3
    - - - - -         ' açıklayıcı yazı
    72
    65
    73
    2
    40
    1
    49
    1
    49
    -0.5




   Gene TABLES Bölümüne yazabileceğin yazı tipi burada yazı stili olarak Courier New Tur seçip adını TÜRKÇE koyuyoruz;



    0                          ' YAZI STİLLERİ
    STYLE
    2
    TÜRKÇE                ' stil ismi
    70
    0
    40                      ' yazı yüksekliği
    1
    41                        ' yazı genişliği
    1
    50                      ' yazı açısı
    0
    71                      ' üretim işaretleri
    0
    42                      ' kullanılan son yükseklik
    2
    3
    Courier New Tur       ' seçilen acad fontu
    4
    1




   ENTITIES Bölümüne yazabileceğin veya okuyabileceğin örnekler;

   NOKTA ÇİZMEK;
     0
     POINT      ‘nokta çizileceğini
     8                   
     Çizim1      ' yüzey adı Çizim1
     10           
     50         ' y değeri 50
     20           
     87         ' x değeri 87
     30           
     5         ' z yüksekliği 5

   DAİRE ÇİZMEK;
     0
     CIRCLE      ‘Daire çizileceğini
     8             
     Çizim2       ' yüzey adı  Çizim2
     10           
     305.8                 ' MERKEZ y değeri 305.8           
     20           
     101         ' MERKEZ x değeri 101
     30           
     5.5          ' MERKEZ z değeri 5,5
     40           
    7          daire yarı çapı 7

   
3 BOYUTLU ÇİZGİ ÇİZMEK;

     0
     LINE
     8             
     YeniÇizim      ' yüzey adı YeniÇizim
     10           
     40         ' y değeri 40
     20           
     87         ' x değeri 87
     30                  
     99         ' x değeri 99
     11           
     128.5      ' varış y değeri 128.5
     21           
     201         ' varış x değeri 201
     31           
     5         ' varış x değeri 5

2 BOYUTLU ÇİZGİ ÇİZMEK;

     0
     LINE
     8             
     YeniÇizim      ' yüzey adı YeniÇizim
     10           
     40         ' y değeri 40
     20           
     87         ' x değeri 87
      11           
     128.5      ' varış y değeri 128.5
     21           
     201         ' varış x değeri 201

   YAY ÇİZMEK

     0
     ARC
     8                  
     YeniÇizim      ' yüzey adı YeniÇizim
     10           
     55         ' MERKEZ y değeri 55
     20           
     101         ' MERKEZ x değeri 101
     40           
     401         ' YARI ÇAP 40
     50           
     90         ' BAŞLANGIÇ AÇISI 90
     51           
     98         ' BİTİŞ AÇISI AÇISI 98

YAZI YAZMAK


     0
     TEXT
     8
     YeniÇizim       ' yüzey adı YeniÇizim
     10
     40         ' y değeri 40               
     20
     87         ' x değeri 87               
     40
     5                      ' YAZI YÜKSEKLİĞİ 5
     41
     .8                      ' SIKIŞTIRMA ORANI 0.8
     50
     0                      ' YAZININ İSTİKAMET AÇISI (derece cinsinden)     0         
     51
     0                                ' YAZININ YATIKLIK AÇISI (ayarlanan açı) 0
     1
     MERHABA                 ' YAZILACAK METİN MERHABA                         
     7
     TÜRKÇE             ' STİL İSMİ TÜRKÇE

   
     71
     0                ' 2 SOLA AYNA
                       ' 4 AŞAĞIYA AYNA
   
     72               ' YATAY da
     0                ' 0 sola dayalı
                       ' 1 merkez
                       ' 2 sağa dayalı
   
     73              ' DİKEY de
     2                ' 0 hattın üzerinde
                       ' 1 alta dayalı
                       ' 2 ortalanmış
                       ' 3 üste dayalı
     11               ' 72 ve 73 GRUPLARI VARSA Y DEĞERİ [10] aynı
     0
     21               ' 72 ve 73 GRUPLARI VARSA X DEĞERİ [20] aynı
     15

DİKKAT ETTİĞİN GİBİ ;

O yazılı ifadeden sonraki sırada Autocad komutu yer alır.
8 yazılı ifadeden sonraki sırada Layer adı yer alır.
     10 YAzılı ifadeden sonraki sırada sağa/sola değeri yer alır.
     20 yazılı ifadeden sonraki sırada yukarı/aşağı değeri yer alır.
     30 yazılı ifadeden sonraki sırada h yükseklik değeri yer alır.
     
     11 YAzılı ifadeden sonraki çizgilerde bitiş sağa/sola değeri yer alır.
     21 yazılı ifadeden sonraki çizgilerde bitiş sırada yukarı/aşağı değeri yer alır.
     31 yazılı ifadeden sonraki sırada çizgilerde bitiş h yükseklik değeri yer alır.
           
62   yazılı ifadeden sonraki sırada çizilecek renk numarası
39   yazılı ifadeden sonraki sırada çizilecek 'YÜKSEKLİK (Thickness)
6   yazılı ifadeden sonraki sırada çizgi tipi
40 yazılı ifadeden sonraki sırada Daire için yarıçap yazı için yazı yüksekliği girilir.

   İlk 0 ve komut adı ifadesin den sonra bunları sıra ile yazma şartı ve yazıp yazmama şartı yoktur.
İstediğin gibi kullanırsın eğer renk sırası 62 nolu sırayı yazmazsan geçerli renk kullanılır, tabiî ki bir çizgi çizerken başlangıç ve bitiş değerlerini mutlaka yazman gerekir ama çizgi kalınlığı, çizgi tipi veya çizgi rengini yazmasan da olur. Ama Autocad hazırlarsa bunların hepsini yazar ve o yüzden DXF dosyar DWG dosyalardan büyük olur.

Boş vaktime geldi çok yazdım. Özetle YeniLayer isimli bir layer açarak  merkezi 100,100 yarı çapı 58 olan bir daire çizdirmen için aşagıdaki satırları bir not defterine aynen yazman ve dosya uzantısınıda dxf yapmanız yeterli olur.

0
SECTION
 2
ENTITIES
 0
CIRCLE
 8             
YeniLayer
 10           
 100
 20           
 100
 30           
 0
 40           
 58
 0
ENDSEC
 0
EOF


   Eğer bunu Visual basic de yazacak olsaydın kodların şu şekilde olurdu;

Kod: [Seç]
Private Sub Form_Paint()
    DOSYA = "c:\ Deneme.dxf"
    Open DOSYA For Output As #1  ' ***** DXF DOSYA YAZIMI *****
    Print #1, 0             
    Print #1, "SECTION"
    Print #1, 2
    Print #1, "HEADER"
    Print #1, 0
    Print #1, "CIRCLE"
    Print #1, 8             
    Print #1, YüzeyAdı
    Print #1, 10           
    Print #1, 100
    Print #1, 20           
    Print #1, 100
    Print #1, 30           
    Print #1, 0
    Print #1, 40           
    Print #1, 58
    Print #1, 0
    Print #1, "ENDSEC"      '
    Print #1, 0
    Print #1, "EOF"         '
    Close
    Cls
    Show
    Print " [ c:\Deneme.dxf ] İSİMLİ DOSYA AÇILDI"
End Sub



   


   Takıldığınız bir yer olursa arayınız.
   Başarılar.

   Nazım Kocamaz
   nkocamaz@mynet.com
« Son Düzenleme: 22 Kasım 2011, 20:25:44 Gönderen: Hüseyin Çoban »
Mutlu ve sağlıklı günler dilerim.
Nazım KOCAMAZ