12 Aralık 2017 Salı

AutoCAD ile VBA makro kullanımı #1


AutoCAD özelliklerini geliştirmek ve isteğe özel uygulamalar ve işlevler kazandırmak için VBA makroları kullanılabilir.

VBA kısaltmasının açılımı Visual Basic for Application(Uygulamalar için Visual Basic)dir.
BASIC öğrenilmesi ve kodlaması en kolay olan programlama dilidir. Microsoft Visual Studio Programlama seti içerisinde Microsoft Visual Basic bulunur. Bununla Windows uygulamaları geliştirip derleyebilir ve çalışabilir EXE dosyaya dönüştürebilirsiniz.

Öğrenmesi kolay bir dil olduğundan MS Office paketlerinin her sürümünde VBA eklenti olarak bulunmaktadır. Özellikle Excelde VBA yaygın olarak kullanılmaktadır. VBA'nın, Visual Studio'daki Visual Basic gibi program derleme ve exe dosyaya dönüştürme özelliği yoktur. Ancak kodlama mantığı VS'deki gibidir. VS'deki kodların çoğunluğu VBA ile uyumludur.

Office'de olan bu yararlı özellik AutoCAD'e de eklenmiştir. Kullanımı, kodlaması, çalıştırma yöntemi vs. Office VBA ile aynıdır.

AutoCAD 2013 sürümüne kadar AutoCAD kurulum paketleri içinde VBA modülü bulunuyordu ancak 2013'den sonraki sürümlerde VBA modülü kuruluma dahil edilmemiştir. VBA modülünü kurmak isteyenler AutoCAD kurulumundan sonra internetten modülü indirip kurması gerekiyor. Modül ücretsizdir.

Eğer kullandığınız AutoCAD sürümü 2013'ten sonrası ise www.autodesk.com/vba-download adresinden kullandığınız AutoCAD sürüme uygun VBA modülünü indirip kurunuz.

AutoCAD için VBA modülü kurulu ise klavyeden ALT+F11'e (Office'de olduğu gibi) basarak ya da VBAIDE komutu ile VBA editörüne geçilir. Kurulu değilse aşağıdaki gibi VBA kurulu değil diye belirten bir uyarı çıkacaktır. Bu durumda verilen adresten modülü indirip kurunuz.

Office VBA kullananlar AutoCAD VBA editöründe yabancılık çekmeyecektir.

KOD GİRME

(Verilen örnek kodlar AutoCAD 2007 ve AutoCAD 2017'de denenmiştir)
Örnek olarak bir kod ekleyelim.
ALT+F11 ile ya da VBAIDE komutuyla VBA editörünü açın.
Kod eklemek için sol bölmedeki ThisDrawing'i çift tıklayın. Sağ tarafta Kod alanı açılacak.
Kod alanına aşağıdaki kodları ekleyin.
Sub Merhaba()
	MsgBox "Merhaba Dünya !"
End Sub
Bu verdiğim kod VBA için en basit kod tabii ki. İşlevi Ekrana bir mesaj kutusu ile Merhaba Dünya ! yazdırmak.

KODLARI ÇALIŞTIRMA:

Kodları çalıştırmak için birkaç yol var:
Klavyeden F5'e basabilir,
Çalıştır simgesi tıklanabilir,
Menüden Run / Run Sub/UserForm tıklanabilir.

AutoCAD penceresi aktifken VBA kod çalıştırmak için ise;
Klavyeden ALT+F8,
Komut satırından VBARUN,
Ribbon menüden Manage / Applications / Run VBA Macro tıklanabilir.

Üsttekilerden birini uyguladığımızda hangi makroyu çalıştıracağımızı soran bir pencere açılacak.
Şimdilik bir makro var ama daha çok makro da olabilirdi.
Bu pencerede Run tıklanarak makro çalıştırılır.
Kodlarda bir hata yoksa aşağıdaki gibi bir ileti penceresinde Merhaba Dünya ! yazacaktır.
Evet biliyorum bu çok çok basit bir kodlama oldu. AutoCAD çizim programı hani? Çizim yapan kod nerede? diyeceksiniz. Bu kodu vermemdeki amaç kodlamanın nasıl yapıldığını en basit haliyle açıklamaktı.

Şimdi kodlarla bir çizgi çizelim.
Kod alanındaki kodları silin ya da kodların altındaki boş satıra aşağıdaki kodları ekleyin.
Sub CizgiCiz()
	Dim lineObj As AcadLine
	Dim bslNokta(0 To 2) As Double
	Dim btsNokta(0 To 2) As Double
	bslNokta(0) = 10#: bslNokta(1) = 10#
	btsNokta(0) = 50#: btsNokta(1) = 40# 
	Set lineObj = ThisDrawing.ModelSpace.AddLine(bslNokta, btsNokta)
	ZoomAll
End Sub

Kodları çalıştırdığınızda model alanında (10,10) koordinatından (50,40) koordinatına uzanan bir doğru çizgi çizildiğini göreceksiniz
Kodların açıklaması:
Sub CizgiCiz()
	Dim lineObj As AcadLine
	'Çizgi çizebilmek için lineObj adında AcadLine nesnesini örnek alan
	'bir değişken oluşturuluyor
	Dim bslNokta(0 To 2) As Double
	Dim btsNokta(0 To 2) As Double
	'Başlama ve bitiş noktalarını belirtmek için 2 tane 3 elemanlı değişken 
	'oluşturuluyor.
	'AutoCADde bir nokta 3 koordinat değeri ile belirtilir.
	' 0. eleman X için
	' 1. eleman Y için
	' 2. eleman Z için
	bslNokta(0) = 10#: bslNokta(1) = 10#
	'Değişkenlere değer atanıyor. Başlangıç noktası için XYZ değerleri 10,10,0 
	'olacak.
	'Z değeri girilmedi. Varsayılan olarak 0 kabul edilir. Kod ile girilecek olursa
	'bslNokta(2) = 0#
	'yazılır.
	'x=10 diye belirtmek için bslNokta değişkeninin 0. boyuta 10 değeri aktarıldı
	'y=10 için bslNokta değişkeninin 1. boyutuna 10 değeri aktarıldı
	btsNokta(0) = 50#: btsNokta(1) = 40#
	'Bitiş noktası için XYZ değerleri 50,40,0 olacak
	Set lineObj = ThisDrawing.ModelSpace.AddLine(bslNokta, btsNokta)
	'Aktif çizim dosyasının Model Alanına başlangıç ve bitiş noktaları verilen çizgiyi 
	'çiz
	ZoomAll
	'Tüm çizimi ekrana yaklaştır
End Sub
Evet, bilenler için bu da çok basit bir koddu. Ancak yeni başlayanlar için iyi bir başlangıç olacaktır.
Şimdi biraz daha geliştirelim kodları. Bu kodlar öncekine göre daha interaktif olacak. Kullanıcıdan başlangıç ve bitiş noktalarının koordinatlarını isteyecek.

Koordinatları AutoCAD komutlarında olduğu gibi fare ile tıklayarak ya da klavye ile koordinat girerek verebiliriz.
Kod alanına aşağıdaki kodları girin:
Sub CizgiCizInteraktif()
	Dim lineObj As AcadLine
	Dim bslNokta As Variant, btsNokta As Variant

	bslNokta = ThisDrawing.Utility.GetPoint(, "Başlangıç noktasını belirtin:")
	btsNokta = ThisDrawing.Utility.GetPoint(bslNokta, "Bitiş noktasını belirtin:")
	Set lineObj = ThisDrawing.ModelSpace.AddLine(bslNokta, btsNokta)
End Sub


Kodları çalıştırdığınızda Başlangıç noktasını girmenizi isteyecek, nokta girildikten sonra bitiş noktasını isteyecek, nokta girildikten sonra 2 nokta arası çizgi ile birleştirilecek.

GetPoint fonksiyonu ekranda bir nokta belirtmenizi ister bunu fare ile bir koordinatı tıklayarak veya diğer komutlarda olduğu gibi klavyeden 50,40 ya da @100,50 ya da @100<60 ya da #100,50 gibi değerler girebilirsiniz.

Umarım yeni başlayanlar veya AutoCAD'de VBA kodlamayı merak edenler için faydalı olmuştur.

6 yorum:

  1. cok güzel devamı varmı.kıtap yada site tavsiye edermisiniz. 05313248698 saitcandemir@hotmail.com

    YanıtlaSil
    Yanıtlar
    1. benim kitap ya da cd'im yok.
      googleda aratırsanız ingilizce pdf dosyalar bulabilirsiniz.

      Sil
  2. the macros in this project are disabled hatası alıyorum sorunu nasıl düzeltebilirim?

    YanıtlaSil
    Yanıtlar
    1. makro güvenlik ayarlarında makroların çalışmasına izin vermelisiniz.

      Sil