Reklam ver...

VBA İle AutoCAD için yazılım geliştirme



Yazar Suphi Tunalı
Mesleği Harita ve İnşaat Teknikeri
  AutoLISP ve VBA programcısı
web  
e-mail  

AutoCAD 12 ve üzeri

Merhaba arkadaşlar,

Yeni bir yazı ile yine birlikteyiz, sizlere bu yazımda AutoCAD ortamında program geliştirmemize olanak sağlayan VBA programlama dilinden bahsedeceğim. VBA, AutoCAD ortamında makrolar geliştirmemize imkân sağlayan üç yazılım dilinden biridir. VBA Makroları, AutoCAD’e entegre çalışan VBA Manager ortamında Visual Basic programlama araçlarını kullanarak geliştirilir. Visual Basic, Microsoft yazılım firması tarafından geliştirilmiştir ve Windows™ platformunda, bağımsız çalışan programlar üretmeye olanak sağlayan bir yazılım geliştirme aracıdır. VBA Makroları ise, Visual Basic ile üretilmiş yazılımlara nazaran biraz daha kısıtlı bir çalışma yapısına sahiptirler. Bunu biraz açacak olursak; VBA Makroları bağlı olarak geliştirildiği, yazılımların (AutoCAD, Microstation, Ms Excel, Ms Access, vb.) dışında çalışmaları mümkün değildir.

Visual Basic görsel programlama dilleri içinde en yaygın biçimde kullanılan yazılım dildir. Görsel programlama dilleri, adından da rahatlıkla anlaşılacağı gibi, programın görsel öğeler kullanılarak tasarlanması esasına dayanmaktadır. Bu açıdan bakıldığında, AutoLISP’e nazaran oldukça kolay ve daha esnek programlama seçenekleri sunmaktadır. Kod yazılımı da en aza indirilmiştir. Visual Basic dilinin bu kadar kolay ve anlaşılır bir yapıda olması birçok kullanıcının kafasında, sadece basit ve karmaşık olmayan problemlerin çözümünde kullanılacaktır kanısını doğurmuştur. Sanılanın aksine en karmaşık ve en kapsamlı problemlerin çözümü de Visual Basic ile yapılabilir.

VBA ile Makro geliştirmeye yeni başlayanlar için genellikle ilk adım olarak verilen örneklerde AutoCAD ortamına, ya bir “Text” objesi yazdırılır ya da bir “Line” objesi çizdirilir. Bu yazıda tasarımını ve kodlarının yapısını anlatacağım program biraz daha kapsamlı özellikler içermektedir. Bu çalışmayı anlayabilmek için, Visual Basic’te değişken ve döngü tanımı gibi bazı temel işlevleri bilmek gerekmektedir.

Tasarım aşamalarını ve kod yapısını anlatacağım program, içerisinde temel olarak iki işlev barındırmaktadır. Birinci işlevde, AutoCAD’in grafiksel ortamından cursor yardımı ile nokta seçimi yapılır. Bu işlevle birlikte eş zamanlı olarak, kullanıcının belirlediği seçenekler doğrultusunda seçilen noktalara, seçim sırasını belirten sıra no ve kullanıcı tarafından girilen metin eklenir. İkinci işlevde ise seçilen noktaların koordinat bilgilerini içeren bir tablonun AutoCAD’in grafiksel ortamına eklenmesi işlemini gerçekleştirir. Böylelikle tasarımını anlatacağım programın işlevlerinden de bahsetmiş oldum. Programlama adımlarının aşağıdaki sıralama ile takip edebiliriz.

İlk olarak “Tools\Macro\Visual Basic Editor” yolunu izleyerek, programı geliştireceğimiz Visual Basic Editörüne (Şekil 1) ulaşıyoruz.

Fig.1
Şekil 1: Visual Basic Editörü

Visual Basic Editörü, “Insert\UserForm” yolu izlenerek programın ana yapısını oluşturacak UserForm nesnesi oluşturulur (Şekil 2).

Fig.2
Şekil 2: Visual Basic Editörü - UserForm & Toolbox

UserForm1 nesnesi oluşturulduğunda, programlama esnasında kullanacağımız diğer kontrol nesnelerini içeren Toolbox’ta (Şekil 3) ekrana yüklenmiş oldu.

Fig.3
Şekil 3: Toolbox

Formu tasarlamaya başlamadan önce, programda kullanacağımız Visual Basic kontrol nesneleri ve bunların özelliklerinden bahsetmek yerinde olacaktır (Tablo 1).

Fig.4
Tablo 1: Visual Basic kontrol nesneleri & Toolbox

Şimdi formumuzu tasarlamaya başlayabiliriz, Tablo 2’de verilen kontrolleri UserForm’un üzerine ekleyelim. Bilgi vermesi amacıyla Şekil 4’de bakabilirsiniz.

Fig.5
Şekil 4: Tasarım halindeki UserForm Görünümü

Fig.6
Tablo 2: Formda Kullanılacak Kontroller & Özellikleri

UserForm üzerine eklediğimiz kontrollerin özelliklerini Tablo 2’deki gibi değiştirdiğimizde Şekil 5’deki form görüntüsünü elde ederiz. Böylece programın görsel tasarım aşaması bitmiş oldu.

Fig.7
Şekil 5: Tasarımı Tamamlanmış UserForm Görünümü

Görsel tasarım aşamasından sonra kod yazım aşamasına geçebiliriz. İlk başta değişkenleri tanımlayım ve tanımladığımız değişkenlerin veri türlerini inceleyelim.

Değişkeni, programın çalışma esnasında değeri değişebilen bilgi alanıdır diye tanımlayabiliriz. Değişkenleri tanımlarken belli kurallara uymak zorundayız. Kısaca bu kurallardan bahsetmek gerekirse; değişken isimleri en fazla 255 karakterden oluşabilir. Bir değişkenin ismi alfabetik ve sayısal değerlerden oluşabilir ancak birinci karakter mutlaka alfabetik olmalıdır. Değişken adı, yordam adı ile aynı olmamalıdır ve değişken içinde nokta olmamalıdır.

Veri türleri ise, değişkenin içinde ne türde veri depolayabileceğimizi belirlemede kullanılır. Programda kullanacağımız veri tiplerini Tablo 3’de görebiliriz.

Fi.g8
Tablo 3: Bildirim deyimleri ve temsil ettikleri veri tipleri

Aşağıdaki kodlar ile tasarlamış olduğumuz program için değişkenleri tanımlıyoruz.

Fig.9
Kod.1

Program için değişkenleri tanımladıktan sonra, yukarıda bahsetmiş olduğum programın ilk kısmı olan AutoCAD’in grafiksel ortamından nokta seçme işlevini aşağıdaki kodlar ile gerçekleştiriyoruz. Kodları incelediğimizde, değişkenlere veri atama, karar işlemlerini ve döngüleri görebiliriz. Karar verme ve döngü işlemlerini kısaca açıklayacak olursak.

Programın çalışması esnasında, yapacağı bazı karşılaştırma işlemleri sonucunda; bir eylemin gerçekleşmesine karar vermelidir. Visual Basic’te bu işlemi “IF” deyimini kullanarak gerçekleştiriyoruz. Verilen koşulun doğruluk değeri “-1” ise, yani “doğru” ise “Then” kelimesini takip eden kodlar işlem görecektir. Eğer koşul gerçekleşmez ise “Else” kelimesini izleyen satırlardaki kodlar işlem görecektir. IF deyimini, “End if” deyimi ile sonlandırırız.

Programın belirli bölümlerinin defalarca işlenmesini sağlamak amacı ile döngüler oluşturulmuştur. Tasarladığımız programda iki farklı tip döngü kullanılmıştır. Bunlardan ilki “For…Next” döngü tipidir. For…Next döngü ifadeleri belirli süreklilik miktarı kadar bir ifadeyi çalıştırmak için kullanılır. For döngüleri, belirli bir sayaç yardımıyla döngü sayısını denetim altında tutarlar. Kullandığımız ikinci döngü türü ise “Do…Loop” dur. Do…Loop döngüleri koşulsuz döngülerdir. Döngü dışına Exit Do deyimini kullanarak çıkarız. Eğer döngünün başında bir koşul ileri sürerek döngü içindeki deyimlerin bu koşulun geçerli olduğu sürece işlem görmesini istiyorsak döngü Do While…Loop şeklini alır. Tasarladığımız programda da bu şekilde kullanılmıştır.

AutoCAD ortamından verilerin alınması ve tekrar eklenmesi işlevleri için kullanmış olduğumuz kullanıcı girdileri ile nesne oluşturma yöntemlerini inceleyecek olursak. Bunların başında “GetPoint” metodu gelir. GetPoint metodu kullanıcının AutoCAD komut satırından veya mause ile grafiksel ortamın herhangi bir yerine tıklayarak bir nokta girmeyi sağlar. Örnek olarak

KOOR = ThisDrawing.Utility.GetPoint(, vbCrLf & "Select First point: ")

kodu verilebir. Tasarladığımız programda LAYER, LINE, POINT ve MTEXT AutoCAD nesneleri kullanılmıştır. Kod açıklamalarını, kod yazımı ile birlikte yaptım. Böylece, açıklamaların altında yer alan kodlarla neyin yapılmak istendiği ve hangi yolun takip edildiği daha kolay anlaşılacaktır. Şimdi kodları inceleyerek programımızı kod yazımı aşamasını tamamlayalım.

Select Points Butonu için aşağıdaki kodlar kullanılacaktır.

Fig.10
Kod.2 Draw Table Butonu kodları.

Fig.11
Kod.3

Form Aktive (yüklenirken) edilirken kullanılacak kod

Fig.12
Kod.4

Hücre genişlik değerini azaltmak için kullandığımız SpinButton kodu.

Fig.13
Kod.5

Hücre genişlik değerini arttırmak için kullandığımız SpinButton kodu.

Fig.14
Kod.6

Hücre yükseklik değerini azaltmak için kullandığımız SpinButton kodu.

Fig.15
Kod.7

Hücre yükseklik değerini arttırmak için kullandığımız SpinButton kodu.

Fig.16
Kod.8

Bu son kodun yazımını da bittirdikten sonra programımız şimdilik tamamlanmış oldu. Programın çıktı görüntülerini Şekil 6a ve 6b de görebilirsiniz. Bir sonraki buluşmamızda, seçilen noktaların Excel’e aktarılması fonksiyonunu anlatacağım. Şimdilik hoşçakalın…

Fig.17
Şekil 6.a. Programın çıktı görüntüleri

Fig.18
Şekil 6.b. Programın çıktı görüntüleri

Bir dahaki yazımda görüşmek üzere.

İlgili dosyalar:

  • Download: Project1.zip  Project1.zip
     
    »(17 KB, 129 hits, 2008 March 4),
     
    Örnek VBA uygulaması - Suphi TUNALI / (c)2007 AutoCAD Günlüğü

İlgili Yazılar:

Rastgele bir yazı

4 Votes | Average: 3 out of 54 Votes | Average: 3 out of 54 Votes | Average: 3 out of 54 Votes | Average: 3 out of 54 Votes | Average: 3 out of 5 (4 oy, ortalama: 3)
Loading ... Loading ...

7 yorum “VBA İle AutoCAD için yazılım geliştirme”

  • 1
    Mehmet Baydar
    5 March 2008, Wednesday 10:09

    Çok güzel bir konu, teşekkür ederim arkadaşım. Acaba bu tür programlamada veri tabanı da kullanabilirmiyiz? Buna da bir örnek verirseniz süper olacak. Selamlar Türkiyeden…

  • 2
    Çağrı YILDIRIM
    5 March 2008, Wednesday 18:52

    Sayın Tunalı,

    Paylaşımınız için teşşekkür ederim. Özellikle kod satırlarındaki açıklamalar çok yararlı olacak. Yazılarınızın devamını bekliyoruz.

    Hoşçakalın..

  • 3
    arda
    27 March 2008, Thursday 17:37

    ya tam benim aradım ama bir türlü çalıştıramadım ilk defa macro kullanıyorum yarcımcı olursan sevinirim

  • 4
    suatozkul
    5 April 2008, Saturday 0:25

    paylasımınız icin tesekkur ederım. ve devamını dilerim

  • 5
    Genç Haritacı
    16 April 2008, Wednesday 17:27

    Oldukça açıklayıcı bir yazı olmuş. Ben de AutoCAD ile başlangıç düzeyindeyim. Hem de çok yeni. Öğrenecek çok şey var. Devamını beklerim.

    İyi çalışmalar.

  • 6
    salim koç
    17 April 2008, Thursday 16:50

    autocad tasarım programında ihtiyaç duyduğum bir makroya ihtiyacım var

  • 7
    tekin öner
    18 April 2008, Friday 16:26

    merhaba suphi bey
    biz asma germe membran sistemleri konusunda çalışıyoruz. bir poligondaki noktaların koordinatların
    excele aktarımı konusunda yazılarınızı okudum. ama
    basarılı olamadım aktarmada. macroyu aktif ettikten sonra hangi komutları kullanarak excele atmamız konusunda daha basit dille bize yardımcı olursanız
    seviniriz.
    iyi çalışmalar ve esenlikler dileğiyle

Yorum bırak