İçeriğe geç
Gökhan Coşkun.

Alphacam'de İlk VBA Makronuz: Tekrar Eden İşi Tek Tuşa Bağlamak

3 dk okuma 3 okunma Gökhan Coşkun

Tezgâh başında geçen bir günü düşünün. Aynı çizimi açıyorsunuz, aynı katmanları ayırıyorsunuz, aynı sorguyu çalıştırıyorsunuz. Tek bir parça için otuz saniye. Günde kırk parça için yirmi dakika. Ayda yedi saat.

İşte makro tam olarak bu yedi saati geri almak için var.

Alphacam, Licom’un CAD/CAM dünyasına VBA’yı ilk getiren yazılımlardan biri. Çekirdek işlevlerinin büyük kısmı bir API üzerinden dışarı açık — yani programın içinden yaptığınız hemen her şeyi koddan da yaptırabiliyorsunuz. Bu yazıda Alphacam 2019 R1 üzerinde ilk çalışan makronuzu yazacağız.

Alphacam VBA makrosunun çalışma akışı: solda editörde kod, ortada çalıştır oku, sağda çizimdeki parçaların katmanlara ayrılması

VBA editörünü açmak

Alphacam’in VBA editörü ayrı bir program değil, doğrudan içine gömülü. Utils → VBA Macros yolundan ulaşıyorsunuz. Açılan pencere Office’ten tanıdık geliyorsa şaşırmayın — aynı VBA motoru.

Editörde iki şey görüyorsunuz: modüller (kodun yaşadığı yer) ve userform‘lar (kendi diyalog pencerenizi çizdiğiniz yer). İlk makro için modül yeterli.

Makronun iskeleti

Her makro bir Sub bloğudur. En tepeye Option Explicit yazın — bu, tanımlamadığınız bir değişkeni kullanmaya kalktığınızda VBA’nın sizi uyarmasını sağlar. Yazım hatası yüzünden sessizce yanlış çalışan bir makro, hata veren makrodan çok daha pahalıdır:

Option Explicit

Sub KatmanAyir()
    ' Kod buraya
End Sub

Alphacam’e bağlanmak: App ve ActiveDrawing

Burası işin özü. Alphacam makro içinde size iki şey verir:

  • App — Alphacam uygulamasının kendisi. Makro çalıştığında zaten oradadır, ayrıca bir nesne oluşturmanız gerekmez.
  • App.ActiveDrawing — o an ekranda açık olan çizim.

Neredeyse her makro şu iki satırla başlar:

Option Explicit

Sub KatmanAyir()
    Dim Drw As Drawing
    Set Drw = App.ActiveDrawing

    Drw.RunQuery "InOut.agq"
End Sub

Bu makro, kayıtlı bir sorguyu (.agq dosyası) aktif çizim üzerinde çalıştırır — örneğin iç ceplerle dış konturu ayrı katmanlara ayıran bir sorguyu. Elle yaptığınızda birkaç tıklama; burada tek satır.

Dim Drw As Drawing satırındaki Drawing, Alphacam’in kendi nesne tipidir. Bu tipi tanıyorsa referans doğru bağlanmış demektir; tanımıyorsa editörde Tools → References altından Alphacam kütüphanesinin işaretli olduğunu kontrol edin.

Alphacam’in kurulum klasörüne kod içinden ulaşmanız gerekirse App.LicomdatPath işinizi görür — dosya yollarını makineye göre elle yazmak yerine bunu kullanın, makro başka bilgisayarda da çalışır.

Makroyu çalıştırmak ve bir tuşa bağlamak

Editörde F5 ile hemen deneyebilirsiniz. Ama asıl kazanç, makroyu Alphacam arayüzünde bir butona bağladığınızda başlıyor — o zaman artık editörü hiç açmadan, tek tıkla çalışıyor.

Çalışmadığında

İlk makronuz muhtemelen ilk seferde çalışmayacak. Birkaç pratik nokta:

Çizim gerçekten aktif mi? En sık karşılaşılan sorun bu. Yeni oluşturduğunuz çizimde çalışan makro, kaydedilmiş bir çizimi tekrar açtığınızda çalışmayabiliyor — App.ActiveDrawing beklediğiniz çizimi göstermiyor olabilir. Editörde Watch penceresi ekleyip Drw değişkeninin gerçekten dolduğunu görmek en hızlı teşhis yolu.

Option Explicit yazdınız mı? Yazmadıysanız, Drw yerine Drww yazdığınızda VBA buna itiraz etmez; boş bir değişkenle çalışmaya devam eder ve makro sessizce hiçbir şey yapmaz.

Nesne tarayıcısını kullanın

Bu yazıdaki çekirdek (App, ActiveDrawing, RunQuery) sürümler arasında istikrarlı. Ama geometri oluşturma, operasyon ekleme, takım seçme gibi konularda imza ve özellik adları Alphacam sürümüne göre değişebiliyor.

Bu yüzden ezberlemek yerine keşfetmeyi öneriyorum: VBA editöründe F2 ile Nesne Tarayıcısı’nı (Object Browser) açın, Alphacam kütüphanesini seçin ve nesneleri gezin. Kendi sürümünüzün size gerçekte ne sunduğunu orada görürsünüz — internetteki hiçbir örnek bu kadar kesin değildir.

Bundan sonrası

Bir makronun değeri, ne kadar akıllı olduğunda değil, kaç kere çalıştığında. En karmaşık işinizi değil, en çok tekrarladığınız işinizi otomatikleştirerek başlayın.

Sırada, bu makroyu çizimdeki geometriler üzerinde döngüye sokmak ve koşula göre farklı katmanlara dağıtmak var. Onu da yazacağım.

Benzer yazılar

WhatsApp'tan mesaj gönderin (yeni sekmede açılır)