4. VEKTÖRİZASYON İŞLEMİNDE kullanılan YÖNTEM ve ARAÇLAR
4.4 DXF (Drawing Interchange Format) Formatına Çevirme
4.4.1 ASCII DXF Dosya Formatı
Bu formattaki dosya ASCII formatında olduğu için kolayca yazılabilir veya okunabilir. Bu sayede diğer çizim programları bu formatı kullanarak kendi aralarında çok kolay veri değişimi yapabilmektedir. AutoCAD ayrıca bu formatı binary olarak da saklayacak şekilde kullanabilir. Bu şekilde kullanılan dosya formatına ise Binary DXF denir.
4.4.1.1 Genel Dosya Formatı
DXF dosya formatının tüm dosya organizasyonu aşağıdaki gibidir. 4.4.1.1.1 HEADER Bölümü
Çizimle ilgili genel bilgiler burada tutulur. Her parametrenin bir değişken ismi ve bu isme atanmış değeri bulunur. Örneğin bu bölümde DXF dosya formatının hangi AutoCAD versiyonu için olduğu, açıların hangi tabandan başladığı, açıların saat yönünde mi yoksa saat yönünün tersi istikametinde mi olacağı gibi temel çizim özellikleri burada tanımlanmaktadır.
4.4.1.1.2 TABLES Bölümü Bu bölüm aşağıdaki tanımları içerir. Çizgi Tipleri tablosu (LTYPE) Katman Tablosu (LAYER) Yazı sitili tablosu (STYLE) Görünüm Tablosu (VIEW)
Viewport konfigürasyonu (VPORT) Kullanıcı Koordinat Sistemi tablosu (UCS) Ölçüm Sitili tablosu (DIMSTYLE)
Uygulama Tanıtım Tablosu (APPID) 4.3.1.1.3 BLOCKS Bölümü
Bu bölüm çizimde kullanılmış her blok hakkında bilgi vermektedir. 4.3.1.1.4 ENTITIES Bölümü
Bu bölüm çizim bileşenlerini içermektedir. Yani çizdiğiniz her şey bu bölümde tutulmaktadır. Çizimde kullandığınız çember, dikdörtgen, elips gibi her nesnenin boyutları ve konumu burada tutulmaktadır. Ayrıca çizimde herhangi bir blok kullanılmışsa BLOCK bölümündeki blok nesnelerine referans edilmektedir. Bu bölüm son bölümdür ve bu bölümden sonra EOF denilen dosya sonu işareti gelmektedir.
4.3.1.2 Grup Kodları
Bir DXF dosyası iki satır işgal eden gruplardan oluşmaktadır. İlk satırda grup kodu bulunmaktadır. Grup kodu sıfırdan büyük pozitif bir tam sayıdır. İkinci satır ise grup değeridir.
İstenirse özel grup kodları da tanımlanabilmektedir. Fakat bu grup koduna atanacak değer grup koduyla alakalı olarak değişmektedir. Aşağıdaki tabloda hangi grup kod aralığına hangi tür değişkenlerin atanabileceği gösterilmektedir.
Grup Kodu Alabileceği Değer
0 – 9 String
10 – 59 Kayan Noktalı Sayı
60 – 79 Integer
140 - 147 Kayan Noktalı Sayı
170 – 175 Integer
210 – 239 Kayan Noktalı Sayı
999 Açıklama (String)
1010 – 1059 Kayan Noktalı Sayı
1000 – 1009 String
Tablo 4.1. Grup Kodlarının Alabileceği Değerler
Bu yüzden herhangi bir program DXF dosyasında bulunan bir grup kodunu, nasıl kullanacağını bilmese de yukarıdaki tablo sayesinde kullanabilmektedir. DXF dosyasında bulunan değerler kullanılan UNIT komutlarından etkilenmemektedirler. Kullanılan koordinat ve açı değerleri desimal gösterim kullanılmaktadır.
Değişkenler, tablolar ve varlıklar gruplarla ifade edilirler. Gruplarda; nesnelerin tipleri, çoklu gruplarda nesneyle ilişkilendirilmiş değerler, değişkenlerin isimleri bulunur. Bunlara ek olarak, bölümlerin başını ve sonunu gösteren özel işaretler ve tablolar da ayrıca tanımlanabilmektedir. Tablolar, dosya ayıraçları ve varlıklar her zaman sıfır grup kodu ile tanımlanmaktadırlar. DXF’de kullanabileceğiniz en fazla string uzunluğu 255 karakterdir.
4.3.1.2.1 Açıklamalar
999 grup kodu bir sonraki satırın açıklama satırı olduğunu anlatır. Yani açıklama yapmak istediğiniz satırlarda bu kodu kullanarak açıklama yazılabilmektedir.
Örnek: 999
Bu bir açıklama satırıdır 999
4.3.1.2.2 Dosya Bölümü
DXF dosyası dört ayrı bölüme ve bir dosya sonu işaretinden oluşmaktadır. Dosya ayırma işaretçileri bu bölümleri birbirinden ayırmaya yaramaktadır. Aşağıdaki örnek, sadece tablo başlıklarından ve bölüm işaretçilerinden oluşan bir gösterimi ifade edilmektedir:
0 (Başlangıç HEADER Bölümü)
SECTION 2
HEADER
<<<<Burada başlık değişkenleri tanımlanıyor>>>> 0
ENDSEC (HEADER bölümünün sonu) 0 (TABLES bölümü başlıyor) SECTION 2 TABLES 0 TABLE 2
VPORT 70
(Viewport tablosundaki en fazla öğe sayısı)
<<<<viewport tablosundaki öğeler burada yazılıyor>>>> 0
ENDTAB 0
TABLE 2
APPID, DIMSTYLE, LTYPE, LAYER, STYLE, UCS, VIEW veya VPORT 70
(tablonun en fazla öğe sayısı)
<<<<tablo öğeleri buraya yazılıyor>>>> 0
ENDTAB 0
ENDSEC (TABLES bölümü bitiyor) 0 (Begin BLOCKS section) SECTION
2
BLOCKS
<<<<blok tanımlamaları>>>> 0
ENDSEC (blok tanımlarının sonu) 0 (ENTITIES bölümü başlıyor) SECTION
2
ENTITIES
<<<<çizim nesneleri burada tanımlanır>>>> 0
ENDSEC (ENTITIES bölümü burada tanımlanıyor) 0
EOF (Dosya sonu)
4.3.1.2.3 HEADER Bölümü
Bu bölüm çizimle ilgili değişkenlerin tanımları ve değerlerini içermektedir. Değişkenler derken STATUS komutuyla gösterilebilen ve birçok komutla değiştirilebilen değişkenler anlatılmaktadır. Her değişken HEADER bölümünde 9 grup komutuyla değişkenin ismini verip daha sonra değişkenin değerinin verilmesi ile
tanımlanmaktadır.
Tarih zaman değişkenleri gerçek sayılar olup aşağıdaki formatta yazılmaktadır: <Julian tarihi>.<Kesir>
Geçen süre de benzer bir formatla ifade edilir: <Gün sayısı>.<Kesir>
4.3.1.2.4 TABLES Bölümü
Her TABLES bölümü değişken sayıda tablo girdisi içeren birçok tablodan oluşmaktadır.
Tabloların yeri değişebilir, fakat LTYPE tablosu mutlaka LAYER tablosundan önce gelmelidir. Her tablo 0 grup koduyla ve TABLE etiketi ile tanıtılmaktadır. Bu değer 2 grup koduyla bilinen tablo (VPORT, LTYPE, LAYER, STYLE, VIEW, DIMSTYLE, UCS veya APPID) olup olmadığını belirtmektedir. Bundan sonra 70 grup koduyla tabloda en fazla tablo sayısı tanımlanmaktadır. Her tablo ismi büyük harflerle yazılmalıdır.
Çizimdeki tablolar silinmiş öğeler içerebilir, fakat bu DXF dosyasına yazılmaz. Bu yüzden 70 grup koduyla belirtilenden daha az tablo içeriği olabilmektedir. Dolayısı ile 70 grup kodundaki sayıyı tabloyu okumak için indeks olarak kullanmamak gerekmektedir. Fakat bu sayı kullanılarak DXF dosyasını okuyacak programın tüm tabloyu karşılayacak büyüklükte alan ayırması sağlanabilmektedir.
Bu başlığı takip eden her tablo bir tablo girdisidir. Her tablo öğesi (girdisi) 0 grup tanımlayıcısı (tablo ismi gibi, örneğin, LTYPE, LAYER) , 2 grup kodu; tablo girdisinin ismi, 70 grup, tablo girdisiyle alakalı bayrakları (her tablo için tanımlanmış) ve ek olarak tablo girdisinin değerlerini veren grup kodlarından oluşmaktadır. Her
tablonun sonu 0 grup kodu ve bu kodun “ENDTAB” değeri ile sonlandırılmaktadır. 4.3.1.2.5 BLOCKS Bölümü
BLOCK bölümü DXF dosyasında kullanılan tüm blok tanımlarını içermektedir. Bu bölüm çizimde kullanılan ve HATCH komutuyla üretilen ve ölçümle ilgili olarak kullanılan blokları da içermektedir. BLOCK bölümünde bulunan her öğe Block ve Endblk öğelerinin arasında yer almaktadır. Block ve Endblk öğeleri sadece BLOCKS bölümünde bulunmaktadır. Yani hiçbir Block ve Endblk girdisi arasında başka bir Block ve endblock öğesi yer almamaktadır. Fakat böyle bir tanıma ihtiyaç duyulduğunda INSERT öğesi kullanılabilmektedir.
Dış referanslar Blok tanımları içerisinde 1 grup kodu ile dış dosyayı gösteren yol bilgisi ile tanımlanabilmektedir.
Ör: Xref dosyaadi
4.3.1.2.6 ENTITIES Bölümü:
Entity öğeleri DXF dosyasında hem BLOCK bölümü hem de ENTITIES bölümünde bulunabilmektedir. Her iki bölümde de kullanımları hemen hemen aynıdır. İleride her iki bölümde de bu öğelerin nasıl bulunabileceği gösterilmektedir. Öğeleri tanımlayan bazı daima ortaya çıkarken, bazı gruplar ise sadece varsayılan değerleri değiştiğinde ortaya çıkmaktadır. Tüm gruplar yazılarak varsayılan değeri almasını istediğimiz grup koduna “N” değeri yazılarak bu grup koduna ait değer yerine varsayılan değerin kullanılması sağlanabilmektedir.
DXF dosyalarını okuyacak programların, öğeleri tanımlayan özelliklerin burada verilen sırada olacağını düşünmemeleri gerekmektedir. Bunun yerine 0 grup kodunu veya bölüm sonunu görene kadar özellikleri alıp değerlendirmeleri gerekebilir.
Unutulamamalıdır ki, DXF dosyası bir çizimi tanımlamak için tek başına yeterlidir. Yani AutoCAD’ in çıkaracağı yeni eklentiler ve grup kodları da bu dosya formatı ile tanımlanabilmektedir. Bu yüzden DXF okumak için yazılacak bir programın
tablo izleme yöntemini kullanması gerektiği açıktır. Çünkü sonradan eklenecek özellikler yeni tablolar okunmasını gerektirecektir. Ayrıca özelliklerin belli bir sırada gelmeyeceği de göz önüne alınarak programın bu yönde geliştirilmesi gerekmektedir.
Her öğe 0 grup tipi tanımlayıcısı ile başlamaktadır. Aşağıdaki tabloda öğeler için verilen isimler gösterilmektedir. Her öğe, hangi katmanda bulunduğunu 8 grup kodu ile belirtmektedir. Bu grup kodu ile öğenin bulunduğu katmanın ismi verilmektedir. Her öğe tabandan yükseklik, kalınlık, çizgi tipi veya renk gibi özelliklere sahip olabilir.
Eğer mümkünse her öğe bir handle değerine sahiptir. Bu değer 16’ lık tabanda bir sayı olan bir stringle ifade edilir ve 5 grup kodunun değerine karşılım gelmektedir.
Aşağıdaki grup kodları sadece öğe varsayılan değerlere sahip değilse tanımlanmaktadır. Eğer bu özelliklere değer verilmezse son kolonda bulunan değerleri almaları gerekmektedir.
Grup Kodu Anlamı Varsayılan Değeri
6 Çizgitipi adı ( eger BY-
LAYER değilse). BY- BLOCK özel olarak kayan bir çizgi tipine karşılık gelir.
BYLAYER
38 Tabandan yükseklik (eğer
sıfır değilse). Sadece R11’ den önceki AutoCAD versiyonlarında kullanılır. Daha sonraları her öğenin Z koordinatı kullanılmıştır.
0
39 Kalınlık (sıfır değilse) 0
62 Renk no’su (eğer
BYLAYER değilse). Sıfır
BYBLOCK rengini belirtir. 256 ise BYKAYER rengini belirtir.
67 Boş olması veya sıfır
olması öğenin model uzayında olduğunu beliritir. Bir ise modelin kâğıt düzleminde olduğunu anlatır. Diğer yerler ayrılmıştır.
0
210, 220, 230,
Bu gruplar Point, Circle, Shape, Text, Arc, Trace, Solid, Block Referans, Polyline, Dimension, Attribute ve AtTribute tanımı öğelerinin Z eksenlerinin dünyanın Z eksenine paralel olmaması durumunda kullanılırlar. Grup değerleri X, Y ve Z eksenlerinin kayıklıklarını belirtir.
0,0,1
Tablo 4.2. Grup Kod Değerleri
Diğer grup kodlarından ileriki bölümlerde bahsedilmektedir. Çoğu öğe “flag” grubuna sahiptir. Bunlar integer değerlerdir (6x veya 7x grupları). Her öğenin kendine has özelliklerini tanımlamak için kullanılmaktadır. Aşağıda çizimde kullanılabilecek nesneler ve bazı grup kodları gösterilmektedir.
4.3.1.2.6.1 LINE
10, 20, 30 (başlangıç noktaları), 11,21,31 (bitiş noktaları) 4.3.1.2.6.2 POINT
10,20,30 (nokta). Nokta nesnesi isteğe bağlı olarak PDMODE resimlerin yönlendirmesi için 50 grup kodunu içermektedir.
4.3.1.2.6.3 CIRCLE
10,20,30 (merkez), 40 (yarıçap) 4.3.1.2.6.4 ARC
10,20,30 (merkez), 40 (yarıçap), 50 (başlama açısı), 51 (bitiş açısı) 4.3.1.2.6.5 TRACE
TRACE cisminin köşelerini belirten noktalar : (10,20,30), (11,21,31), (12,22,32), (13,23,33)
4.3.1.2.6.6 SOLID
Dört nokta solid cisminin köşelerini belirtir. (10,20,30), (11,21,31), (12,22,32), (13,23,33). Üç noktalı bir SOLID çizmek için üçüncü ve dördüncü noktayı aynı yapmanız yeterli olacaktır.
4.3.1.2.6.7 TEXT
10,20,30 (ekleme noktası), 40 (yükseklik), 1 (text değeri), 50 (çevirme açısı - varsayılan değeri 0), 51 (eğiklik açısı-varsayılan değeri 0), 7 (text stili adı - varsayılan değeri STANDART), 71 (text yaratma bayrakları - varsayılan değeri 0), 72 (yatay doğruluk tipi – varsayılan değeri 0), 73 (dikey doğruluk tipi – varsayılan değeri 0), 11, 21, 31 hizalama noktaları. Sadece 72 veya 73 grup kodu varsa ve sıfırdan farklıysa kullanılır. Text yaratma bayrakları ve anlamları aşağıdaki tabloda yer almaktadır.
Bayrak Bit Değeri Anlamı
2 Text X eksenine göre ayna
görüntüsü yazılacak.
4 Text Y eksenine göre ayna
görüntüsü yazılacak. Tablo 4.3. Yazım oluşturma bitleri
Doğruluk tipi aşağıdaki tabloda gösterildiği gibi ekrana yazılacak yazının sağa veya sola dayalı olması gibi özellikleri ayarlamak için kullanılmaktadır.
Grup 72 (Yatay Hizalama) Grup 73 (Dikey Hizalama) 0 1 2 3 4 5 3 Yukarı Sol Yukarı Merkez Yukarı Sağ 2 Orta Sol Orta Merkez Orta Sağ
1 Alt Sol Alt Merkez Alt Sağ
0 Temel Sol Temel Merkez Temel Sağ
Hizalanmış Ortada Kaplama
Tablo 4.4. Yazım Ayarlama Grup Kodları ve Değerleri
Eğer doğruluk tipine “temel” veya “kaplama”’dan başka bir şey belirtilmemişse 11, 12, 13 grup kodları hizalama noktasını belirtmektedir (veya hizalamak için öteki noktayı veya kaplama noktasını).
4.3.1.2.6.8 SHAPE
10, 20, 30 (ekleme noktası), 40 (ölçü), 2 (şekil ismi), 50 (çevirme açısı – varsayılan değeri 0), 41 (bağıl x – ölçeklemesi – varsayılan değeri 1), 51 (eğiklik açısı – varsayılan değeri 0)
4.3.1.2.6.9 BLOCK
2 (Blok adı), 3 (diğer blok adı), 70 (blok tip bayrağı), 10, 20, 30 (blok taban noktası). Blok nesneleri sadece BLOCKS bölümünde bulunur, ENTITIES bölümünde blok bulunmaz. Blok tip bayrağının (grup 70) değerleri aşağıdaki tabloda yer almaktadır.
Bit Değeri Anlamı
1 Bu uygulamanın hatching yapmak için kullandığı adsız bir bloktur 2 Bu bloğun özelliklere sahiptir
4 Bu blok dışarıda referans edilmiştir (Xref) 8 Kullanılmaz
16 Bu blok dışa bağımlı
32 Bu çözümlenmiş bir dış referans, veya bağlı bir dış referans 64 Bu tanımlama referans edilmiştir.
Tablo 4.5. Grup 70’in Blok tablosu için bit değerleri 4.3.1.2.6.10 POLYLINE
66 (köşe izleme bayrağı), 10, 20, 30 (çoklu çizginin tabandan yüksekliği. Bu değeri sadece 30 değeri sağlar. 10 ve 20 değeri daima sıfırdır). 70 (çoklu çizgi bayrağı – varsayılan değeri sıfır), 40 (Varsayılan çizgi başlama kalınlığı – varsayılan değeri 0), 41(Varsayılan çizgi bitiş kalınlığı – varsayılan değeri sıfır), 71 ve 72 (çokgen M ve N vertex sayısının uyumluluğu – varsayılan değeri 0), 73 ve 74 (Düzgün M ve N yüzey duyarlılığı – varsayılan değeri sıfır).
Köşe izleme bayrağının değeri daima 1’ dir. Bunun anlamı bir “dizi bitti” (seqend) işareti görene kadar köşelerin izlenerek çizimin yapılacağıdır. Grup kodu 70 ir bit kodu olup alacağı değerler ve Bu değerlerin anlamı aşağıda yer almaktadır (AutoCAD 2002 Help).
Bit Değer Anlamı
1 Bu kapatılmış bir çoklu çizgi anlamına gelir. 2 Eğrisel köşeler eklendi
4 Doğrusal köseler eklendi 8 Bu üç boyutlu bir çoklu çizgi 16 Bu üç boyutlu bir çokgen mesh 32 Çokgen mesh N yönünde kapatılmış 64 Bu çoklu çizgi bir çokgen mesh
128 Çizgi tipi özelliği sürekli olarak köşelerin etrafında üretiliyor. Tablo 4.6 Grup 70’in çoklu çizgi tablosu için bit değerleri