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

Gönderen Konu: AUTOCAD’e DXF Formatta Çizim Gönderme  (Okunma sayısı 10716 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’e DXF Formatta Çizim Gönderme
« : 22 Kasım 2011, 14:56:19 »
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
Kod: [Seç]
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           
« Son Düzenleme: 22 Kasım 2011, 20:23:23 Gönderen: Hüseyin Çoban »
Mutlu ve sağlıklı günler dilerim.
Nazım KOCAMAZ