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.

 

Primavera için metraj esaslı hızlı kaynak ataması yapılması

Primavera kullanıcısı planlama uzmanları için kaynak ataması her zaman sıkıntılı bir süreç olmuştur. MS Project’te kaynak ataması sözcük bazlı yapıldığı için excelde bazı manipülasyonlar yapıp direkt MS Project’e atmak bize zaman kazandırırken Primavera Database tabanlı olduğundan bu işlemi yapmak süre almaktadır.

Özellikle ihale süreci gibi kısıtlı zamanlarda elimizde tüm metrajlar ve analizler olmasına rağmen bunları iş programına aktarmak büyük sıkıntı olabiliyor. Eskiden bu zorluğu elimine etmek için MS access programını kullanırken yakın zamanda Excel programının Microsoft query özelliğinin daha basit bir çözüm olacağını fark ettim. Bununla ilgili bir örneği bloğuma koymanın birçok insanın işinin kolaylaştıracağını düşündüm.

Öncellikle hayali bir örnek proje oluşturmakla başlayacağım (yazı sonunda örnek XER dosyasının indirme bağlantısını paylaşacağım). Bu sistemin işleyebilmesi için her analiz için ayrı bir aktivite tanımlamanız gerekmekte, yani sizin metraj tablonuzda beton ve demir için ayrı analizler varsa sizin güçlendirilmiş beton gibi bir aktiviteniz olmamalı onun yerine demir döşemesi ve beton dökülmesi gibi 2 ayrı aktiviteniz olmalı. Toplam 4 aktiviteli bir iş dizisinin 8 defa tekrarlandığı bir iş programı yapalım, bunlar

  • Kazı yapılması
  • Koruma betonu dökümü
  • Temel çelik döşenmesi
  • Beton dökümü

olsun

Metrajlarımız ise 200 m3 , 20 m3 , 8 ton , 100 m3 olsun

Normalde ihale aşamasında düzgün fiyat belirmek için şirketler analizlerini yapmış olurlar, bu örnekte yapılmadığını farz ediyoruz , bu durumda yapılması gereken ya önceki tecrübelerden bir analiz oluşturmak yada bazı devlet kurumlarının analizlerini kullanmaktır. Benim önceki tecrübelerim kurumların analizlerini abartılı olduğu yönünde fakat elimizde hiçbir şey yoksa bunları kullanmak mantıklı olabiliyor.

İnternetten bulduğum analizler

https://www.birimfiyat.net/y.15.001-1a-makine-ile-yumusak-ve-sert-toprak-kazilmasi-serbest-kazi

https://www.birimfiyat.net/y.16.050-03-beton-santralinde-uretilen-veya-satin-alinan-ve-beton-pompasiyla-basilan-c-16-20-basinc-dayanim-sinifinda-beton-dokulmesi-beton-nakli-dahil

https://www.birimfiyat.net/23.002-14-50-kalin-betonarme-demiri-bukulup-dosenmesi

Bu aşamada dikkat etmemiz gereken şey bu çalışma bir kesin hesap olmadığı için her şeyi olabildiğince genel tanımlamalıyız.

İlk önce bir Excel tablosu açıyoruz ve ilk sekmeye analizler diye bir tablo ekliyoruz,

Elimizdeki analizlere göre tabloyu ekteki gibi dolduruyoruz. Böylece analizlerimiz ve kullanacağımız kaynaklarımız ortaya çıkmış oldu

İkinci adım olarak aktivitelere analizleri atamamız gerekiyor, örneğimiz küçük bir program olduğu için bunu excelde yapabiliriz fakat Primaverada hem filtreleme hem de WBS yapısını daha rahat kullandığımız için ben Primaverada yapmayı tercih ediyorum.

Primaverada 1 adet aktivite kodu 1 adette “user defined field” oluşturuyoruz, aktivite kodunun ismi analiz “user defined field” ismi ise metraj olarak tanımlıyoruz ve “unit” olarak number seçiyoruz ve her aktivite için bu alanları dolduruyoruz.

Artık elimizde her aktivitenin bir analizi ve metrajının olduğu bir iş programına sahibiz.

Bu bilgiyi Excel’e aktarmamamız gerekiyor, bu sürekli değişen bir alan olsaydı Excel’in “get data” özelliği ile veri tabanından almayı düşünebilirdik fakat bu tek seferlik oluşturulan bir data olduğu için direk olarak Excel’e kopyala yapıştır yapmayı tercih ediyorum , sonraki bir yazımda veri tabanından direkt olarak Excel’e veri aktarmayı anlatmayı planlıyorum

Excel’de 2. sekmede aktiviteler isimli bir tablo oluşturup, fotoğrafta görüldüğü gibi düzenliyoruz.

Daha sonra bu Excel dosyasını kapatıp yeni bir Excel dosyası açıyoruz,

Data>get data>from Other sources >from Microsoft query  seçeneğini seçiyoruz,

Buradan “Excel files” seçeneğini seçip gördüğümü tüm kolonları seçiyoruz

Next tuşuna bastığımızda tablolar arasında bir bağlantı olmadığı uyarısı veriyor bir sonraki adımda analiz ve analiz ismi kolonlarını birbirine bağlıyoruz

Bir sonraki adımda “query” ekranından çıkıyoruz ve önümüze altta gözüken  form geliyor

Tablomuzu nasıl eklememiz gerektiğini gösteren ekran geliyor burada ok tuşuna basıyoruz. Şimdi her kaynağın aktivite metrajı ve analiz biriminin olduğu bir tablo oluşturmuş durumdayız yenidir kolonda metraj ve adet kısımlarını çarpıyoruz

Elimizdeki tüm kaynakları Primaverada tanımlıyoruz

Elimizdeki Excel dosyasından sadece activity id resource id ve budgeted units kısımlarını import dosyasına kopyalayarak import dosyasını oluşturuyoruz ve import dosyasını primaveraya yüklüyoruz.

Bloğu okuyanların inceleyebilmesi için xer, analiz, query ve import dosyasını indirebileceğiniz bir linki aşağıda veriyorum

https://planlamadanismanlik.sharepoint.com/:f:/s/genel/EiPHjHIjum5KkHS_CSXyw9IBmt09xCOnvFiVQU2QtMKOFQ?e=Rv9bmI