Noktaları VBA Kullanarak AutoCAD'den CSV Dosyasına Dışa Aktarma | AutoCAD Beyni
Bu makalemde sizlere AutoCAD’den verileri bir CSV dosyasına dışa aktarmak için, basit bir VBA’nın nasıl kullanılacağını anlatacağım. Bu gerçekten çok kolay ve aynı amaca ulaşabilen başka yollar da olmasına rağmen, bu yol size bir hayli esneklik sağlamakta ve bu oldukça çok yönlüdür.
Öncelikle, içerisinde birkaç nokta olan bir çizim hazırlayacağım. Aşağıdaki çizimdeki bu noktalar dışa aktaracağımız nesneler olacaklar:
Sonraki adım VBAIDE komutunu kullanarak VBA düzenleme penceresini açmaktır. Tabi ki, şayet AutoCAD 2010 veya daha üst sürümü kullanıyorsanız, VBA eklentisini indirme ihtiyacı duyacaksınız. VBA düzenleme penceresini açtığınızda, proje araştırıcısı “project explorer“ penceresine sağ tıklayın ve yeni bir modül yaratın.
Şimdi gelelim koda….. Kodu sizlere açıklayacağım. Aşağıdaki kodun içerisinde üstten kesme (') işareti ile başlayan satırları sizlere kodun sonraki satırının ne işlem yapacağını açıklamak için yerleştirdim. Şayet yine de anlamadığınız yerler olur ise, yorum yazarak sormaktan çekinmeyin.
'Değişkenleri deklare etme
Dim currentSelectionSet As AcadSelectionSet
'Aktif olarak seçili olan nesnelerin seçim setine referans yaratma
Set currentSelectionSet = ThisDrawing.ActiveSelectionSet
'Seçili nesne olup olmadığını kontrol etme ve şayet seçili nesne yok ise, uyararak çıkış verme
If currentSelectionSet.Count = 0 Then
ThisDrawing.Utility.Prompt "Hiç seçili nesne yok
Dışa aktarmak için, birkaç nokta seçin ve bu komutu tekrar çalıştırın." & vbNewLine
'Aktif seçim setindeki tüm öğeleri taramak için, For Each döngüsünü kullanma
For Each ent In currentSelectionSet
'Burada, ent seçili öğelerden bir tanesi olacaktır.
'Şayet ent bir noktasal nesne değilse, onu ihmal etmemiz gerekmektedir
If TypeOf ent Is AcadPoint Then
'Sadece noktalar (noktasal nesneler) seçilecektir.
'Artık sadece noktasal nesneler ile ilgilendiğimizi biliyoruz.
' Belirli AcadPoint tipindeki değişkenleri kullanabiliriz.
Set pnt = ent
'Bunu yaptıktan sonra daha birçok değişkene sahip olduğunuzu fark edeceksiniz
'"pnt." Yazdığınız zaman, otomatik kod tanımlama metotlarını görürsünüz
'CSV dosyası dizgi değişkenine satır ekleme.
'İki sayıyı aralarına virgül koyarak birleştiriyoruz;
've satırı tamamlamak için, sona yeni bir satır karakteri ekliyoruz
csvFile = csvFile & pnt.Coordinates(0) & "," & pnt.Coordinates(1) & vbNewLine
' csvFile = csvFile & demek, bir dizgi değişkeninin sonuna sürekli yeni bir satır eklemenin
'kullanışlı bir yoludur.
' csvFile değişkenini C:\ sürücüsünün altına dosya adı ile aynı isimle yazdırma
'FileSystemObjects değişkeni dosyaları işlemek için gerçekten faydalıdır.
'Fakat VBA projenizde Microsoft Betik Çalışma Ortamına “Microsoft Scripting Runtime“ referansa ihtiyaç-
'Menüden Tools>References, komutuna gidin ve Microsoft Scripting Runtime betik çalışma ortamını seçin.
'Yeni bir Dosya Sistem Nesnesi yaratma
'FSO.CreateTextFile değişkenini kullanarak, bir metin dosyası olan csvFile.csv dosyasını yaratma,
've bu csvFile.csv metin dosyasını textFile değişkeninde depolama (kaydetme).
Set textFile = FSO.CreateTextFile ("C:\csvFile.csv")
'Dizgi olan csvFile değişkenini bir yazı dosyasına yazdırma
'İşimizi bitirdikten sonra yazı dosyasını kapatma.
'Dosyanın yaratıldığı konusunda kullanıcıyı uyarma
ThisDrawing.Utility.Prompt "Noktalar C:\csvFile.csv dosyasına dışa aktarılmıştır!" & vbNewLine
Evet, artık CSV dosyasını yarattık. Tabi ki, şayet isterseniz, bu koda daha fazla koşul da ekleyebilirsiniz. – şöyle ki, kodun ortasına sadece kırmızı noktaları filtreleyen diğer bir IF döngüsü yerleştirebilirsiniz. Ayrıca seçilecek nesneler sadece noktalar da olmayabilir;– bu kod herhangi bir AutoCAD nesnesinin herhangi bir özelliğiyle de çalışacaktır.