VBA for AutoCAD nesne modeli kullanımına bir örnek
![]() |
Yazar | Özgür Özkurt |
| Mesleği | Mak. Müh. Öğrencisi | |
| web | ||
![]() |
Geçen yazımda OLE teknolojisine kısaca değinmiştim. Ayrıca AutoCAD ortamında OLE kullanımı üzerine küçük bir örnek de yapmıştık. Örnek basit bir yöntem ile ActiveX iletişimi başlatıyordu. Bu yazımda konuyu daha iyi kavramak için VBA’da gerekli olan ön bilgileri verdikten sonra AutoCAD’in VBA nesne modelinden bahsedeceğiz. Sonunda anlatılanları pratiğe dökmek için bir örnek ile yazı dizimin bu bölümünü bitirmiş olacağız.
AutoCAD’de VBA kullanarak OLE teknolojisiyle makro programlar geliştirebilmek için Nesne Hiyerarşisinin özümsenmiş olması önemlidir. Şekil 1.de bir kısmı görüntülenen AutoCAD nesne modelinin tamamına Help dosyalarından ulaşabilirsiniz.

Fig.1
Diyagramda görüldüğü gibi her nesnenin bir üstü bir de altı vardır. Bir nesneyi kullanmak istenildiğinde hiyerarşide üstten aşağıya doğru nesnelere ulaşılır. Tanımlama Set fonksiyonu kullanarak yapılır.
Geçen yazımdaki örnekte kullandığımız Application nesnesinin diyagramda zirvede olduğuna dikkat edin. Bu AutoCAD’in kendi sınıf adıdır. Bir önceki yazımdaki verdiğim örneği biraz daha geliştirelim. AutoCAD oturumu başlattıktan sonra aktif doküman ismini öğrenelim.
Aşağıdaki kodu yazarak çalıştırın.

Fig.2
İlk satırda autocad_oturumu isiminde bir nesne tanımı yapıyoruz. Bu değişken bir alt satırda Application nesnesini temsil ediyor. Son satırda ise aktif doküman ismi alınarak mesaj kutusu yardımıyla ekranda görüntüleniyor.
GetObject fonksiyonunun aldığı ilk parametre değerinin boş geçildiğinin dikkatinizi çekmiş olması lazım. Bu noktaya ileriki yazılarda değineceğim.
Örnek: Girilen başlangıç ve bitiş değerlerine göre çizim sayfasına bir çizgi ekliyor.
Makroyu bu adresten indirin. Daha sonra AutoCAD de Tools->Macro menüsünden Load Project’i tıklayın. İndirdiğiniz dosyayı seçin ve makroyu projenize yükleyin. Vusial Basic Düzenleyicisini başlatın (Command:vbaide). Vusial Basic düzenleyicisindeyken F7 tuşuna basın ve kodları görüntüleyin.
Şimdi sıra kodları incelemeye geldi.

Fig.3
CommandButton1 kontrolünün click (tıklama) olayı gerçekleştiğinde aşağıda açıkladığım 3 blok kod çalışacaktır.
İlk blokta çizgi, autocad_oturumu değişkenleri nesne olarak tanımladık. bas_nok, bit_nok değişkenlerini , daha sonra AddLine işlevi için kullanacağımız parametreler için dizi tipi olarak tanımlıyoruz. AutoCAD ortamında manuel olarak çizgi çizmeyi hatırlayın. Bir parametre başlangıç noktası diğer bir parametre ise bitiş noktasıydı. İşte bas_nok değişkenini başlangıç noktası (start point) , bit_nok değişkenini ise bitiş noktası (end point) için tanımlıyoruz.
Bas_nok,bit_nok değişkenlerini tanımlarken dikkat edilmesi gereken özel durum dizinin başlangıç indisinin 0 olması gerektiğidir. Bunun için 0 to 2 ifadesini kullanıyoruz. Bu kod 0 dan 2 ye kadar bir dizi tanımlamamızı sağlıyor.Yani 3 elamanlı bir dizi elde ediyoruz. Sırasıyla dizinin sıfırıncı, birinci, ikinci elamanı başlangıç noktasının x, y, z koordinatlarına karşılık geliyor. Aynı işlemleri bit_nok değişkeni için de yapıyoruz.
Değişkenleri tanımladık. Fakat değişkenlerin henüz bir değeri yok. Dolayısıyla bir çizgi çizdirebilmemiz için hazır değiller. İkinci kod bloğunda bas_nok, bit_nok değişkenlerine değerler atıyoruz. Bu değerlerin kullanıcı tarafında girilmesi için oluşturduğumuz formadaki textbox kontrollerinin içerisine yazılı olan değerler alınıp bas_nok ve bit_nok dizilerine yükleniyor.
Son kod bloğunda ise daha önceden anlattığım şekilde bir ActiveX oturumu açılıyor. Daha sonra AutoCAD nesne modelinde belirtilen hiyerarşik düzene göre AddLine metoduna ulaşılıyor. AddLine için gerekli parametreler yerine hazırladığımız dizi tipli değişkenlerimizi giriyoruz. Şimdi hazırladığımız programı deneyebiliriz.
Vusial Basic Düzenleyicisi aktif haldeyken F5’e basıp makroyu çalıştırın

Fig.4
Yukarıdaki değerleri girerek “Draw” butonuna tıklayın. Başlangıç noktası orijin, bitiş noktası 100,100 olan bir çizgi aktif AutoCAD çizim sayfasına otomatik olarak çizilir.

Fig.5
Nesne modeli kullanılarak daha bir çok otomasyon projesi gerçekleştirebilirsiniz. AutoCAD Help dosyalarında nesne modeli ağacında yer alan nesnelerin kullanımı üzerine bolca bilgi bulabilirsiniz. Hepinize kolay gelsin.
Soru, istek ve önerilerinizi yazabilirsiniz. Gelecek yazıda görüşmek üzere…
İyi günler dilerim.
Türkü gözlüme…
Technorati Tags: AutoCAD, VBA, Visual Basic, Methods, AutoCAD Günlüğü, AutoCAD programlama
Benzer Yazılar



(7 votes, average: 4.86 out of 5)
30 April 2007, Monday 8:05
güzel anlatım, güzel örnek elinize sağlık
2 May 2007, Wednesday 22:39
Merhaba,
Güzel ve açıklayıcı bir çalışma olmuş teşekkürler.
Bu ve bunun gibi çalışmaları
“Visual Basic Düzenleyicisi aktif haldeyken F5’e basıp makroyu çalıştırın”
yerine bu formları AutoCAD de oluşturacağımız bir butona nasıl atayıp direk çalıştırabiliriz.
Kolay gelsin.
3 May 2007, Thursday 12:30
Bu konuya bir sonraki yazımda değineceğim.Yorumlarınız için teşekkür ederim.
6 May 2007, Sunday 21:44
Merhaba,
Küçük bir module form mu açtırma makrosu,
sonra da bu makroyu bir butona atayıp bu sorunu aştım.
Sizin kullanacağınız yöntemi de merakla bekliyorum
yazılara devam zevkli ve eğlenceli olmaya başladı
Kolay gelsin.
22 June 2007, Friday 14:28
açıklayıcı yazınız için teşekkürler. vba ile çizdiğim çizgiyi yine vba dan seçip offsetliyebilirmiyiz diye soracaktım
iyi günler