12 Mart 2020 Perşembe

AutoCAD ile VBA makro kullanımı #5-4

Autocad VBA Makro Kodlarını Çalıştırma Yöntemleri:


6) Lisp ile AutoCAD komutu oluşturarak makro çalıştırma

AutoCAD'de programlama için kullanılan dillerden biri de LISP'dir. Lisp hakkında başlangıç seviyesinde bir yazımı okumak için: AutoLisp ile programlama: Orijine zumla

Autocad'de LISP kodlamak için AutoCAD ile birlikte kurulan Visual Lisp for AutoCAD kullanılabilir ancak "Lisp ile AutoCAD komutu oluşturarak makro çalıştırma" için bunu kullanmayacağım. LISP kodları yazmak için Visual LISP şart değildir. Herhangi bir metin editörü kullanılabilir.

VBA makro kodlarının çalıştırılması için VBA içinde AutoCAD komut tanımlaması yoktur. LISP'de ise LISP komutlarını çalıştıracak AutoCAD komut tanımlaması yapılabiliyor.
LISP'in bu özelliğinden faydalanarak oluşturduğumuz VBA makrolara AutoCAD komutu tanımlayacağız.
İşlem çok basittir. Bu iş için LISP dillinde kodlamayı bilmek şart değildir.
Eksen Çiz VBA makromuz için LISP ile bir AutoCAD komutu oluşturacağız.

Bunun için;
Bir metin editörü(Örneğin Windows Not Defteri = notepad.exe, ya da Notepad++) açıp aşağıdaki kodları ekleyin.
(defun c:EC()
(command "_.-VBARUN" "C:/Users/Mesut/Desktop/Makrolarim.dvb!EksenCiz")
(princ)
)
Dosyayı EksenCiz.lsp olarak kaydedin. Windows'da dosya uzantılarınız gizli ise ayarlardan görünür yapın.


LISP kodlarındaki c:EC() Autocad komut satırından girilecek komut adıdır(EC), alt satır ise bu komut girildiğinde buna karşılık gelen komutu ve parametresini belirtir.

EC yerine başka bir ad verilebilir. EKSENCIZ gibi.
Lisp dosyayı AutoCAD'e yüklemek için bir kaç yol var ancak burada en basit olanı göstereceğim.
Masaüstüne kaydettiğimiz EksenCiz.lsp dosyasını sürükleyip AutoCAD çizim alanına bırakın.
VBA makroları yüklerken olduğu gibi bir güvenlik uyarısı gelecek. Burda Load Once tıklayın.
Bir dahakinde sormasını istemiyorsanız Always Load tıklayın.

Artık komut satırından EC girilerek Eksen Çiz VBA makrosu çalıştırılabilir.
İlk çalıştırmada VBA makro yüklü değilse dosyayı belleğe yükleyeceği için üstteki gibi güvenlik uyarısı çıkabilir. Load Once tıklayın.
Eğer birden fazla VBA makro kodu varsa bunlara ayrı ayrı lsp dosya oluşturmak şart değildir.
Bir lsp dosyada tüm VBA makro kodları için ayrı ayrı AutoCAD komutu tanımlanabilir.

Aşağıdaki gibi:
(defun c:EC()
(command "_.-VBARUN" "C:/Users/Mesut/Desktop/Makrolarim.dvb!EksenCiz")
(princ)
)

(defun c:DIKDORTGEN()
(command "_.-VBARUN" "C:/Users/Mesut/Desktop/Makrolarim.dvb!Dikdortgen")
(princ)
)

(defun c:SLOT()
(command "_.-VBARUN" "C:/Users/Mesut/Desktop/Makrolarim.dvb!Slot")
(princ)
)

4 yorum:

  1. Merhaba Mesut Bey;
    Autocad im içine gömülü kodu bu yöntemke çalıştıramıyorum.Macro bulunamadı hatası veriyor yardımcı olabilirmisiniz?

    YanıtlaSil
    Yanıtlar
    1. ALT+F11 ile editöre geçtiğinizde Makro kodları var mı?

      Sil
    2. Evet var kodu autocad gömdüm.
      (defun c:EC()
      (command "_.-VBARUN" "C:\Users\mcakcelik\Desktop\makrou.dwg!Module1.a")
      (princ)
      )
      yazdığım kod bu

      Sil
    3. makro, dwg dosyaya gömülü ise dwg dosya açık ve aktif olmalı.
      makro gömülü dosya açık ve aktifse;
      (defun c:EC()
      (command "_.-VBARUN" "Module1.a")
      (princ)
      )

      ile çalıştırabilirsin.
      videoda daha detaylı bilgi var

      Sil