# VBA ile AutoCAD Otomasyonu Projenin amacı sürekli tekrar eden işlemleri otomize etmek ve insanın yapabileceği hataları ortadan kaldırmaktır. Bu proje yerden ısıtma sistemleri tasarlayan bir firmada çalıştığım sırada ihtiyaç olarak hayata geçirilmiştir. Yapılan işlem çizim programındaki eski semboller yerine yenilerini otomatik olacak şekilde getirmektir. Bu değişim işlemini eski sembollerin içerisinde bulunan text özelliklerini kaybetmeden yapılmaktadır. Program arayüzü olacak şekilde tasarlanmıştır. Blok nesnelerinin öznitelikleri programlamadaki "key:value" şeklinde bir yapıya sahiptir. Eski bloklardaki "value" değerlerini yenilerine aktarırken "key" değerleri değişebilmektedir. Bu sebeple program kullanıcıdan eski ve yeni bloklardaki veri aktarımı yapılacak "key" değerlerini istemektedir. Daha sonra "Search All Blocks" veya "Search With Selection" buttonlarından birisine tıklanır. Program çalışmaya başlar ve aşamaları şöyledir: - UserForm1 gizlenir ve seçim kümeleri, blok referansları, öznitelikler, patlatılmış nesneler, diziler, sayaçlar, dizeler vb. için birçok değişken tanımlanır. - AddNewLayer alt programını çağırarak iki yeni katman oluşturur: "Old_Symbols" ve "New_Symbols". - UserForm1'deki metin kutularını döngüye sokar ve değerlerini TextBoxString adlı bir diziye atar. - Varolan "SecInCorrect" seçim kümesini siler ve ekranda blokları seçerek yeni bir tane oluşturur. Blok sayısını BlockSayi adlı bir değişkene kaydeder. - Seçilen blokları döngüye sokar ve öznitelikleri olup olmadığını kontrol eder. Eğer varsa, onları patlatır ve patlatılmış nesneleri ve indekslerini dizilere kaydeder. - Varolan "SecCorrect" seçim kümesini siler ve ekranda blokları seçerek yeni bir tane oluşturur. Bu bloklara "New_Symbols" katmanını atar. - Model alanındaki tüm nesneleri döngüye sokar ve öznitelikli blok referansları olup olmadığını kontrol eder. Eğer öyleyse, onları döndürür ve "Old_Symbols" katmanına kopyalar. - Seçilen blokların patlatılmış nesnelerini model alanındaki nesnelerle karşılaştırır ve eşleşiyorsa onları "SecCorrect" seçim kümesinden gelen bloklarla değiştirir. - Değiştirilen blokların özniteliklerini TextBoxString dizisindeki değerlere göre günceller. Sonuç olarak yazmış olduğum program AutoCAD içerisinde VBA kullanımı ile insan eli ile yapılacak uzun süreli bir işlemi saniyeler içerisinde gerçekleştirerek hata payını da sıfıra indirir. Proje'nin kodlarını incelemek için [tıklayabilirsiniz.](https://github.com/ahmetsalihcozel/VBA_Project_Technical_Drawing "SymbolSwitcher")

Proje Bilgisi

  • Kategori: Çizim Programı Otomizasyonu, Masaüstü Uygulaması
  • Proje Tarihi: Nisan, 2022
  • Kazanımlar: Sayısal mantık yürütme, problemin ve çözümünün tespiti, algoritmalarının oluşturulması, Tekrarlı işlemlerin otomize edilmesi.