VB, EXCEL veya NOT DEFTERİ İle AUTOCAD’e DXF Formatta Çizim Gönderme;
Değerli arkadaşlar,
Sizlere VISUAL BASIC, EXCEL veya NOT DEFTERİ İle AUTOCAD’ e DXF formatında çizim Gönderme işini en kolay program yazarak anlatacağımı düşündüm ve aşağıdaki örnek programı hazırladım.
Visual Basic Programı içindeki açılamalar ile ne yapıldığını tek tek anlattım, Tabiî ki aynı kodları Notpac de yazmak için Print #1, ve “” tırnak işaretlerini çıkararak yazmanız gerektiğini hatırlatmama gerek varmı?
Ö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.
Örnek Olarak;
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ğer yer alır.
20 yazılı ifadeden sonraki sırada yukarı/aşağı değer yer alır.
30 yazılı ifadeden sonraki sırada h yükseklik değeri yer alır.
Şimdi isterseniz aşağıdaki programı kullanarak olayı anlamaya çalışalım. Eğer takıldığınız bir yer olursa bana mail atabilirsiniz.
Nazım KOCAMAZ
nkocamaz@mynet.com
BU KISIMDAN AŞAĞISINI KOPYALIYARAK VB'ye Sorunsuz AKTARABİLİRSİNİZ
Private Sub Form_Paint()
DOSYA = "C:\YeniDosya.DXF" ' YENİ DXF DOSYA ADI VERİYORUZ
Open DOSYA For Output As #1 ' DOSYA AÇIYORUZ
' ----- HEADER BÖLÜMÜ SİSTEM DEĞİŞKENLERİ GİRİŞİNİN BAŞLANGICI
' ----- [ Bu bölümün yazma zorunluluğu yoktur isteğe bağlıdır.]
Print #1, 0 ' YAZMAYA BAŞLIYORUZ İLK KODUMUZ
Print #1, "SECTION"
Print #1, 2
Print #1, "HEADER" 'HEADER BÖLÜMÜNÜ AÇTIK
' ----- ACAD DEĞİŞKENLERİNİ TANIMLIYORUZ
' ----- [ Bu bölümde istediğimiz kadar acad değişkenini tanımlayabiliriz. ]
' ----- Sistem değişkeni eğer Autocad' in kendi tanımladığı bir sayıyı istiyorsa
' ----- "70" kodunu bizim tanımladığımız bir sayıyı istiyorsa "40" kodunu giriyoruz
'------ Ben 6 adet sistem değişkeni tanımladım.
Print #1, 9
Print #1, "$LUNITS" '
Print #1, 70 ' SİSTEM DEĞİŞKENİ KENDİ BELİRLEDİĞİ DEĞER İÇİN 70 KODU KULLANILDI
Print #1, 2 ' 1 FEN BİLİMLERİ [Ben 2 yi kullandım.]
' 2 ONDALIK SİSTEM
' 3 MÜHENDİSLİK
' 4 MİMARİ
' 5 KESİRLİ
Print #1, 9
Print #1, "$LUPREC"
Print #1, 70 ' SİSTEM DEĞİŞKENİ KENDİ BELİRLEDİĞİ DEĞER İÇİN 70 KODU KULLANILDI
Print #1, 2 ' VİRGÜLDEN SONRAKİ HANE SAYISI 2 [Siz istediğinizi girin.]
Print #1, 9
Print #1, "$AUNITS"
Print #1, 70 ' SİSTEM DEĞİŞKENİ KENDİ BELİRLEDİĞİ DEĞER İÇİN 70 KODU KULLANILDI
Print #1, 2 ' 0 ONDALIK DERECE [Ben 2 yi kullandım.]
' 1 DERECE,DAKİKA,SANİYE
' 2 AÇILAR GRAD ÇİNSİNDEN
' 3 RADYAN
' 4 TOPOGRAFİK
Print #1, 9
Print #1, "$AUPREC"
Print #1, 70 ' SİSTEM DEĞİŞKENİ KENDİ BELİRLEDİĞİ DEĞER İÇİN 70 KODU KULLANILDI
Print #1, 4 ' AÇILARDA VİRGÜLDEN SONRAKİ HANE SAYISI 4
Print #1, 9
Print #1, "$ELEVATION"
Print #1, 40 ' SİSTEM DEĞİŞKENİ KENDİ BELİRLEDİĞİ DEĞER İÇİN 40 KODU KULLANILDI
Print #1, 0 ' GEÇERLİ ELEV YÜKSEKLİĞİ 0
Print #1, 9
Print #1, "$THICKNESS"
Print #1, 40 ' SİSTEM DEĞİŞKENİ KENDİ BELİRLEDİĞİ DEĞER İÇİN 40 KODU KULLANILDI
Print #1, 0 ' ÇİZİLECEK OBJELERİN 3.BOYUT YÜKSEKLİĞİ 0
Print #1, 0
Print #1, "ENDSEC" ' ----- HEADER BÖLÜMÜ SİSTEM DEĞİŞKENLERİ GİRİŞİNİN SONU
'***************************************************
'***************************************************
Print #1, 0 ' ----- TABLES BÖLÜMÜ BAŞLANGICI
Print #1, "SECTION" '------ ÇİZGİ TİPLERİ ve YAZI SİTİLLERİNİN GİRİŞ BÖLÜMÜ
Print #1, 2 ' ----- [ Bu bölümün yazma zorunluluğu yoktur isteğe bağlıdır.]
Print #1, "TABLES"
Print #1, 0 ' ÇİZGİ TİPLERİ BAŞLANGICI
Print #1, "TABLE"
Print #1, 2
Print #1, "LTYPE"
Print #1, 70
Print #1, 2 ' çizgi tablosu eleman sayısı ben 2 cizgi tipi tanımlıyorum.
Print #1, 0 '1 NCİ ÇİZGİ TİPİ
Print #1, "LTYPE"
Print #1, 2
Print #1, "CONTINUOUS" ' TANIMLANAN çİZGİ TİPİNİN ADI
Print #1, 70
Print #1, 0
Print #1, 3
Print #1, "SOLID LINE" ' açıklayıcı yazı
Print #1, 72
Print #1, 65
Print #1, 73
Print #1, 0
Print #1, 40
Print #1, 0
Print #1, 0 '2 NCİ ÇİZGİ TİPİ
Print #1, "LTYPE"
Print #1, 2
Print #1, "KISA_ÇİZGİ" ' çizgi tipi adı
Print #1, 70
Print #1, 0
Print #1, 3
Print #1, "- - - - - " ' açıklayıcı yazı
Print #1, 72
Print #1, 65
Print #1, 73
Print #1, 2
Print #1, 40
Print #1, 1
Print #1, 49
Print #1, 1
Print #1, 49
Print #1, -0.5
Print #1, 0
Print #1, "ENDTAB" ' ÇİZGİ TİPLERİ SONU
Print #1, 0 ' YAZI STİLİ BAŞLANGICI
Print #1, "TABLE"
Print #1, 2
Print #1, "STYLE"
Print #1, 70
Print #1, 1 ' yazı tablosu eleman sayısı 1 stil var
Print #1, 0 ' YAZI STİLLERİ
Print #1, "STYLE"
Print #1, 2
Print #1, "TÜRKÇE" ' stil ismi
Print #1, 70
Print #1, 0
Print #1, 40 ' yazı yüksekliği
Print #1, 1
Print #1, 41 ' yazı genişliği
Print #1, 1
Print #1, 50 ' yazı açısı
Print #1, 0
Print #1, 71 ' üretim işaretleri
Print #1, 0
Print #1, 42 ' kullanılan son yükseklik
Print #1, 2
Print #1, 3
Print #1, "Arial" ' seçilen acad fontu "Arial" yazı fontunu
Print #1, 4 ' Autocad e TÜRKÇE olarak tanıtıyorum
Print #1,
Print #1, 0
Print #1, "ENDTAB" ' YAZI STİLİ SONU
Print #1, 0
Print #1, "ENDSEC" ' ----- TABLES BÖLÜMÜ SONU
Print #1, 0 ' ----- ENTITIES BAŞLANGICI ÇİZİM GİRİŞLERİ
Print #1, "SECTION" '------ ÇİZİME BAŞLIYORUZ
Print #1, 2 ' Ben kolaylık olsun ve her çizgide ayrı ayrı kod yazmamak
Print #1, "ENTITIES" 'için her komut için alt programlar hazıladım ve aşağıda
'onları çağırıyorum.
'önce girdiğimiz değerleri tanımlayalım.
YüzeyAdı = "YENİ"
Y = 0
X = 0
H = 0
YarıÇap = 10
başlangıçY = 10
başlangıçX = 8
başlangıçH = 50
bitişY = 50
bitişX = 80
bitişH = 100
BaşlangıçAçısı = 0
BitişAçısı = 126
YazıYüksekliği = 5
yazı = "Merhaba AutoCad"
AcadNoktaCiz YüzeyAdı, Y, X, H
AcadDaireCiz YüzeyAdı, Y, X, H, YarıÇap
Y = 40
X = 60
AcadÇizgiÇiz2D YüzeyAdı, başlangıçY, başlangıçX, bitişY, bitişX
AcadÇizgiÇiz3D YüzeyAdı, başlangıçY, başlangıçX, başlangıçH, bitişY, bitişX, bitişH
AcadYayÇiz YüzeyAdı, Y, X, YarıÇap, BaşlangıçAçısı, BitişAçısı
AcadYazıYaz YüzeyAdı, Y, X, YazıYüksekliği, yazı
' ----- ENTITIES SONU ve ÇİZİM GİRİŞLERİ SONU
Print #1, 0
Print #1, "ENDSEC"
Print #1, 0
Print #1, "EOF"
Close ' ***** DOSYA KAPANIŞI *****
Print " [C:\YeniDosya.Dxf ] İSİMLİ DOSYA YARATILDI"
End Sub
'YUKARIDAKİ ÇİZİMLERİN ALTPROGRAMLARI;
'Nokta Çizmek [Point];
Public Sub AcadNoktaCiz(YüzeyAdı, Y, X, H)
Print #1, 0
Print #1, "POINT"
Print #1, 8 ' yüzey adı
Print #1, YüzeyAdı
Print #1, 10 ' y değeri
Print #1, Y
Print #1, 20 ' x değeri
Print #1, X
Print #1, 30 ' z yüksekliği
Print #1, H
End Sub
'Daire Çizmek [Circle];
Public Sub AcadDaireCiz(YüzeyAdı, Y, X, H, YarıÇap)
Print #1, 0
Print #1, "CIRCLE"
Print #1, 8 ' yüzey adı
Print #1, YüzeyAdı
Print #1, 10 ' MERKEZ y değeri
Print #1, Y
Print #1, 20 ' MERKEZ x değeri
Print #1, X
Print #1, 30 ' MERKEZ z değeri
Print #1, H
Print #1, 40 ' daire yarı çapı
Print #1, YarıÇap
End Sub
'3D Çizgi Çizmek [Line];
Public Sub AcadÇizgiÇiz3D(YüzeyAdı, başlangıçY, başlangıçX, başlangıçH, bitişY, bitişX, bitişH)
Print #1, 0
Print #1, "LINE"
Print #1, 8 ' yüzey adı
Print #1, YüzeyAdı
Print #1, 10 ' y değeri
Print #1, başlangıçY
Print #1, 20 ' x değeri
Print #1, başlangıçX
Print #1, 30 ' x değeri
Print #1, başlangıçH
Print #1, 11 ' varış y değeri
Print #1, bitişY
Print #1, 21 ' varış x değeri
Print #1, bitişX
Print #1, 31 ' varış x değeri
Print #1, bitişH
End Sub
'2D Çizgi Çizmek [Line];
Public Sub AcadÇizgiÇiz2D(YüzeyAdı, başlangıçY, başlangıçX, bitişY, bitişX)
Print #1, 0
Print #1, "LINE"
Print #1, 8 ' yüzey adı
Print #1, YüzeyAdı
Print #1, 10 ' y değeri
Print #1, başlangıçY
Print #1, 20 ' x değeri
Print #1, başlangıçX
Print #1, 11 ' varış y değeri
Print #1, bitişY
Print #1, 21 ' varış x değeri
Print #1, bitişX
End Sub
'Yay Çizmek [Arc];
Public Sub AcadYayÇiz(YüzeyAdı, Y, X, YarıÇap, BaşlangıçAçısı, BitişAçısı)
Print #1, 0
Print #1, "ARC"
Print #1, 8 ' yüzey adı
Print #1, YüzeyAdı
Print #1, 10 ' MERKEZ y değeri
Print #1, Y
Print #1, 20 ' MERKEZ x değeri
Print #1, X
Print #1, 40 ' YARI ÇAP
Print #1, YarıÇap
Print #1, 50 ' BAŞLANGIÇ AÇISI
Print #1, BaşlangıçAçısı
Print #1, 51 ' BİTİŞ AÇISI AÇISI
Print #1, BitişAçısı
End Sub
'Yazı Yazmak [Text];
Public Sub AcadYazıYaz(YüzeyAdı, Y, X, YazıYüksekliği, yazı)
'YAZILAR'
Print #1, 0
Print #1, "TEXT"
Print #1, 8
Print #1, YüzeyAdı ' YÜZEY ADI
Print #1, 10
Print #1, Y ' Y DEĞERİ
Print #1, 20
Print #1, Y ' X DEĞERİ
Print #1, 40
Print #1, YazıYüksekliği ' YAZI YÜKSEKLİĞİ
Print #1, 1
Print #1, yazı ' YAZILACAK METİN
Print #1, 7
Print #1, "TÜRKÇE" ' STİL İSMİ
Print #1, 62
Print #1, 10 ' RENK NO (10 kırmızı)
End Sub