Fakirler için AutoCAD’den Excel’e metraj aktarımı

Fakirler için serisinin 2. yazısında AutoCAD Revit gibi ürünleri almaya parası yetmeyen ama VBA ile AutoCAD ’deki bilgileri excele atmak isteyen müteahhitlerimizi hedefliyoruz.
Yaklaşık 5 senedir AutoCAD ile çok fazla haşır neşir değilim çoğu zaman işlerimi PDF formatından görüyorum , fakat bunun öncesinde AutoCAD ile çok detaylı çalışmalar yapmıştım , en son 5 sene önce teknik ofis müdürü olarak çalışırken iş sahibi firmanın bize çizimlerin demir hesap cetvellerinin bulunmadığını ve bazı çizimlerin ölçeklerinin doğru olmayabileceğini ve hızlı bir şekilde metraj çıkartılması gerektiğini ve hakkedişlerin bu metrajlar üzerinden yapılacağını ve proje başında tüm metrajların verilmesi gerektiğini söylemesi üzerine bir çözüm aramaya başladık , kısıtlı iş gücümüzle tek tek demirleri excele atmamız hem zaman alacaktı hem de çok fazla hata yapacaktır. İşverenin metraj cetvellerini paylaşmamasının esas sebebinin sözleşmemizdeki dünyanın en saçma maddesi olan eğer kesin hesap metrajı hakkediş metrajlarından az ise kesinti yapılır eğer fazla ise hakkediş değeri kabul edilir maddesiydi. Sonuç itibariyle konuya çözüm bulmak için daha önceden tecrübemin olduğu VBA ile bazı kodlar yazmak zorunda kaldım ve hem bu kodları unutmamak hem de ileride bu çalışmayı geliştirmek için bu yazıyı yazmaya karar verdim, bu noktada şunu belirtmeliyim 5 yıl içerisinde AutoCAD alternatif çözümler sunmuş olabilir, bu yazı tamamen 5 yıl öncesinin teknolojisi ile yazılmıştır.
Diğer yazılardan farklı olarak yapılanları basamak basamak anlatmaktansa çalışmamanın son halindeki önemli noktaları açıklamak daha kolay olacak, alttaki linkte kendi projelerinizde kullanabileceğiniz kodu indirilebilir dosya olarak paylaşacağım, böylece meraklı insanlar ufak değişikliklerle bu kodu kullanabilecekler.

https://planlamadanismanlik.sharepoint.com/:f:/s/genel/EsmmDQPKQEhAqpZBDwu2-bwBOHzzCnQnI-fNNNYelYfGlA?e=HNRm4s

Öncelikle bu kodu çalıştırabilmek için AutoCAD’ de Visual Basic eklentisini kurmanız gerekiyor, eskiden AutoCAD ’in içinde yüklü olarak gelirken bir süredir (galiba çok uzun bir süredir) ayrıyeten kurmanız gerekiyor, buradan milyonlarca takipçisi olan bir blogger olarak AutoDesk’e sesleniyorum, insanları lisp gibi kısıtlı, eski, diğer programlarla etkileşimi az ve benim kullanmayı bilmediğim bir programlama diline mahkûm etmeyin. Her neyse altta gördüğünüz alanda Visual Basic editör tuşuna bastığınızda önünüze bir indirme bağlantısı geliyor ve kurulum dosyasını kurduktan sonra VBA ile uğraşmaya başlayabiliyorsunuz, üstte paylaştığım bağlantı linkinden indirdiğiniz kodu yüklemek için gene altta gördüğünüz load application tuşuna basıp dosyayı yüklemeniz gerekiyor,

Artık Visual Basic editör tuşuna bastığımızda karşınıza gelecek olan ekran yaklaşık olarak alttaki gibi bir şey

 

 

 

 

 

Eğer bu ekran size tanıdık gelmiyorsa bu dakikadan sonra bloğu okumayı bırakıp 5- 6 hafta VBA öğrenip sonra geri buradan okumaya başlayabilirsiniz.

İndirdiğiniz dosyadan detaylı olarak inceleyebileceğiniz gibi ilk alt kodumuz künyemetraj (), tahminimce içinde künye barındıran bir dosyadan bilgileri çekmek için yapmıştım, değişkenleri tanımladıktan sonra ilk komutumuz

On Error Resume Next komutu

Tüm amatörlerin hayat kurtarıcısı olan bu komut hata varsa boş ver AutoCAD istediğimizi atıyorsa önemli değil diyor, bu komutu kullanmamızın sebebi seçtiğimiz 20 tane nesne içinde mesela alan özelliği olmayan nesneler olabilir böyle bir durumda makro çalışmayı bırakıp hata mesajı verecektir bu engellemek işçin her türlü olasılığı düşünüp yüzlerce durumu eleyecek kodlar yazmaktansa zaten bu hata sonuca etkileyemeyeceği için hatayı yok sayıyoruz.
Sonra gelen komutumuz,

 

Burada işlem yapacağımız dosyayı tanımlayıp, ilk satıra başlıkları atıyoruz ve alttaki döngünün 2. Satırdan başlaması için bir değer veriyoruz
Biz esc tuşuna basana kadar seçim yapmamızı sağlaması için yüksek bir döngü oluşturuyoruz

Üstteki kısmı tamamen internetten kopyaladım, o yüzden arada İngilizce açıklamalar var, aynı anda birçok nesneyi seçmenizi sağlıyor

Üstteki kodun hepsi birden fazla seçtiğimiz nesnelere teker teker bakıyor eğer bir bloksa bloğun 2. Ve 3. Niteliğine (attribute) bakıp onu sıradaki satırın 1. Ve 4. Kolonuna yazıyor, değilse sıradaki satırın 2. Ve 3 kolonuna seçilen nesnenin uzunluk ve alanını atıyor, bir sonraki nesneye geçiyor seçilen nesneler bitince esc tuşun a basana kadar yeni seçtiğiniz nesnelere aynı işlemi tekrarlıyor
Metraj () alt kodu künye metrajın nerdeyse aynısı sadece 4. Kolona nesnenin rengini yazıyor
Mahal () alt kodu künye metrajın hemen hemen aynısı sadece muhtemelen mahal isimlerini ayırt edip onların etrafına bir dikdörtgen çiziyor ve AutoCAD ’de bu alanın isim alan ve çevresini atıyor
Koordinat alt kodunda bir hata var sebebini çözemedim ama tahminim amacının bir noktayı seçip koordinatları çizime eklemesi
Demir () bir form kullandığımız alt kod, ilk önce formumuza ön tanımlı bilgileri gönderiyoruz, sonrasında da formu açıyoruz

Bu formun amacı bir önceki kodumuz gibi aynı anda birçok nesneyi seçip excele gönderirken her nesneden sonra bu formun ortaya çıkıp gerekli düzenlemelerin yapılmasını sağlamak.

 

 

 

İlk düğmemiz “AUTOCADDEN AL” düğmesi bu düğme ile ilk önce formu gizliyoruz sonra önceki kodlarda da kullandığımız yöntemle Nesneleri seçiyoruz

Burada diğer çalışmalardan farklı olarak seçtiğimiz nesnelerin katmanını(layer) önceden tanımladığımız bir katman ile değiştiriyor, eğer seçtiğimiz nesnenin katmanı önceden bizim ayarladığımız katman ile değiştirilmişse bu nesneler hesaba katılmıyor, böylece mükerrer metraj çıkartmıyoruz, nesnelerin değerleri formdaki alanlara yazılıyor ve form yeniden görülür oluyor.

Gizle düğmesi formu gizliyor böylece çizimde kontrol etmek istediğimiz noktaları kontrol edebiliyoruz,

AutoCAD’den ölç düğmesi bazı pozlarda demir boyu verilmiyordu bu pozlarda demirin uzunluğunu çizim üzerinden ölçmemiz gerekiyordu bu pozlar için bu düğme çizimde seçtiğimiz nesnenin uzunluğunu forma gönderiyordu.

Excel Aç düğmesi Excelde bir şey kontrol etmemiz gerektiğinde Excel’i görünür hale getiriyordu

Excel gönder, formdaki tüm bilgileri excele yen, bir satır olarak giriyordu.

Kiriş () alt kodunda ise üstte anlattığımız özelliklere ek bir özellik yok,

bu yazıda çok fazla detaya giremedim çünkü hem bu özellikler yıllardır kullanmıyorum hem de bu konuda  terminolojiye çok hakim değilim, umarım bazı insanların işine yarar.