2014-12-14

2014-10-24

Revit'ten 1.5 dakikada API ve MailMerge ile BOQ paketi oluşturma



Kısa bir sürede Revit'ten alınan verilerle WORD'de Mail Merge kullanarak BOQ paketi (MTO ve QTO) oluşturmak için yazdığım add-in.

2014-10-20

BIM den Fabrikasyon

"BIM OCS Network" tıkır tıkır çalışıyor. Birkaç aydır test ediyorum. Bir aydan uzun bir süredir hiç kapatılmadan dakikalık periyodlarla sistemden gelen verileri kaydediyor.
Görünüşe göre daha fazla modifikasyon / ayarlamaya ihtiyaç kalmadı.
Muhafazalarını yapmanın zamanı geldi.
Kutuları Revit'te modelledim ve lazer kesime yolladım.

1-5 Satellite Pod Revit Model

Logger Pod  Revit Model

Gas Pod Revit Model

 Satellite Pod'ların üst plakaları da dahil tüm Revit Model

 Revit'te sheet view. Lazer kesim için DXF'e export edildi.

 Parçalar geldi!

 Ufak bir temizlik gerekti.

 Parçayı sallamak ve ya hafifçe güç uygulamak yeterli oldu.

 Parçalar temizlenmiş ve dizilmiş halde!

 Ve tüm Pod'lar monte edilmiş halde!

 Tüm Pod'lar..

 Satellite Pod yakın çekim.

 Logger Pod ve Gas Pod yakın çekim.

 Satellite Pod yakın çekim.

 Logger Pod yakın çekim.

Gas Pod yakın çekim.

2014-09-19

AUx İstanbul


Türkiye'de ilk defa düzenlenecek olan Autodesk University'nin uzantısı AUx İstanbul'da konuşmacıyım!

Böyle önemli bir organizasyonun ülkemizde gerçekleşiyor olmasından büyük heyecan duyuyorum!
Başta Autodesk Türkiye'deki dostlarımız olmak üzere tüm emeği geçenlere çok teşekkür eder başarılar dilerim.

http://www.auxistanbul.com/presentations/industry/aec

2014-09-18

En güçlü Subscription Yenilemesi - Revit 2015 R2 ve Site Designer Extension


Autodesk Subscription'ın ne kadar değerli bir yatırım olduğunu hep savunurum.
Sağladığı ticari avantajlardan çok, BIM Manager olarak benim için en önemlisi proje ortakları arasındaki sürüm savaşlarını ortadan kaldırmasıdır.
Senior Architect olarak AutoCad ile proje yaptığımız dönemlerden hatırlıyorum, mutlaka biri çıkar ve "Efendim biz fi tarihli AutoCad kullanıyoruz, öyle save edebilir misiniz?" derdi.
Bu durum sevimsiz olsa da AutoCad'in yüzde biri kullanıldığı için çok büyük sorun yaşatmazdı.

İşverenler (haklı olarak) ek değer üretmeyen eski iş akış biçimi için yatırım yapmak istemezdi.

Bugün durum çok farklı. BIM'in baş döndüren hızla geliştiği bir dönemde, bu araçları kullanarak VDC yapan ve hergün yepyeni ek değerler üreten ekipler sırtlarında eski versiyon yükünü taşıyamazlar.

İşte Autodesk Subscription bu noktada ticari avantaj ve VDC'nin ana motoru BIM araçlarının güncel tutulması konularını bir potada eritip gelişimin önünü açmıştır.

Bugün Subscription'da yayınlanan ve yepyeni bir sürüm olan "Revit 2015 R2" bunun en büyük örneğidir. R2, Revit Sundial'da gördüğümüz ve sevdiğimiz özellikler de dahil pekçok yeni aracı içeriyor.

Sessiz sedasız gelen bir bomba ise "Site Designer Extension"!
Site design'ı yıllardır domine eden "Eagle Point Siteworks" artık daha kolay erişilebilir oldu!

2014-09-07

140907 Güncellemesi BIM IoT Occupancy Comfort Sensor

Donanım bitti!
Bundan sonra ufak tefek modifikasyonlar yaparım. Çin'den sipariş ettiğim LCD ekranlar gelirse tüm Pod'lara eklemek gibi..
Bir de Pod'lara basit kutular yapmam gerekecek..



 Logger Pod

 Gas Pod

Satellite Pod (1-5)

2014-08-11

140811 Güncellemesi BIM IoT Occupancy Comfort Sensor

BIM IoT OCS projesi ile ilgili yeni bir donanım planlaması ve yazılım denemesi yaptım.

7 adet Pod olacak. Bunlar birbirleri ile Zigbee protokolü kullanarak Mesh Network oluşturacak.

5 adet uydu Pod olacak:
-Arduino Micro
*Luminosity Sensor
*High Accuracy Temperature Sensor
*Temperature / Humidity / (Heat Index) Sensor

1 Gaz Pod'u olacak: (Bir tane olmasının sebebi bu verilerin homojene yakın olması ve bu sensörleri Türkiye'ye getirtmenin görece pahalı olması :) )
-Arduino Uno
*CO2 sensor
*Barometer
*Dust Sensor

1 Logger Pod:
-Arduino Yun
*Realtime Clock to sync Pods
*Micro SD Card Reader / Internet (Xively)

Yazılım kısmını tatmin edici bir seviyeye çıkarttım:


Room'un içine Mark değerleri 01'den 05'e Generic Pod Family'leri gerçek yerlerine uygun olarak yerleştiriliyor.


Yazılım Room'un alt yüzeyinden belli bir offsette Analiz yüzeyi oluşturuyor. Pod Family'lerin XYZ değerlerini bu yüzey üzerinde UV değerlerine dönüştürüyor.


Analiz tipini soruyor. (Yani Excel'den hangi veri setini okuyacağını soruyor.)


Basit bir bilgi kutusu çıkıyor. Bunları ben seviyorum debug için. Ama ilerde kapatabilirim.


Analiz Görselleştirmesi oluşturuyor, Excel'den okuduğu veri setlerini Pod Noktalarına giriyor.
Basit bir grafik arayüz çiziyor. Mouse ile bu grafiğe tıklayarak Analiz Konfigürasyonu (tarih/zaman) değiştirilebiliyor. Bu değiştirme işinde soruma cevap veren Augusto Goncalves'e teşekkürler.


Grafiği kapattığımızda yazılım döngüsü tamamlanmış oluyor. İş bitince analiz sonuçlarını silmedim, kalıyor.
Böylece Revit ortamında oynamaya devam edilebilir.

2014-07-16

BIM IoT Occupancy Comfort Sensor

Gün geçtikçe daha zengin bilgi modelleri üretiyoruz. Her yeni BIM projesi ile daha çok disiplin ve proje ortağı modele bilgi giriyor.

Bir noktada insanların bilgi girişinin yanı sıra, Objelerin de modele kendileri ve çevreleri hakkında bilgi girmesine ihtiyaç duyacağız.

Taşıyı bir elemanın üzerindeki yükleri canlı olarak modele raporladığını düşünün..
Ve ya Işık Geçirgenlik Katsayısını algılayan bir pencerenin "Beni Yıka!" diye bağırdığını :)

Tüm bunlar IoT (The Internet of Things) (Şeylerin İnterneti) ile mümkün olabilir.
IoT (Şeylerin İnterneti) tekil olarak ayırt edilebilen, gömülü bilgisayar türevi cihazların, var olan İnternet altyapısı ile bağ kurmasıdır.
Bu mikrokontrolörler ve bunlara bağlı algılayıcılar görece ucuz ve çevremizde sıklıkla rastladığımız cihazlar.
(Kullandığım Sharp toz algılayıcısı hava temizleyicilerde, Bosch barometrik basınç algılayıcısı ise çoğu otomobilde mevcut.)

Bu fikir üzerine denemeler yapabilmek için BIM OCS (Occupancy Comfort Sensors) prototipini yaptım.


Pek çok insanın bu tip cihazlar yaptığını ve bilgilerini paylaştıklarını görmek cesaret verici oldu.
Aslına bakarsanız Komfor Algılayıcı / Hava İstasyonu neredeyse Arduino'ya giriş yapan hemen hemen herkesin ilk projesi gibi görünüyor.

Aslında amacım profesyonel seviyede hassasiyet yakalamak olmasa bile elimden geleni yaptım.
Kullandığım sensörleri kalibre etmemde bilgilerini paylaşan ve profesyonel ekipmanlarını kullandıran herkese teşekkür ederim.

BIM OCS algılayıcıları (Sol üstten aşağıya doğru): Aydınlık Seviyesi, Karbon Dioksit, Toz, Ses Seviyesi,
Sıcaklık, Nem, Hissedilen Sıcaklık ve Barometrik Basınç.

BIM OCS kablosuz olarak internete bağlı ve her bir döngüde algılayıcılardan gelen verileri anında Xively'e yüklüyor.
Eskiden Cosm / Pachube olarak bilinen Xively (IoT) Şeylerin İnternetini platform servisi olarak sunuyor.

BIM OCS verilerini buradan takip edebilirsiniz.

(BIM OCS her zaman çevirimiçi olmayabilir. Zaman zaman prototip üzerinde küçük modifikasyonlar yapmak için bağlantıyı kısa süreli kesebiliyorum.)

Şimdi bu bilginin BIM ile entegrasyonu üzerine çalışabilirim.
Platform olarak Autodesk Projects Dasher hakkında daha fazla bilgi alabilmek için bir ay önce falan (140627) Ramtin Attar'a mail attım. Fakat henüz bir geri dönüş olmadı.

Ben de çabalarımı emektar Revit ve onun Analysis Visualization Framework (AVF) kapasitesine yoğunlaştıracağım.

2014-06-16

Formül Tabanlı Geometrinin Gücü: Tekillik

Revit sıfır uzunluklu elemanları sevmemesine rağmen Adaptive Component'lerde müsade eder.
Fakat bir Adaptive'i referans olarak kullanırsanız, sıfır uzunluk verdiğinizde bu referans patlar.

Adaptive'in kendi Family dosyasında referans olarak kullansanız bile, sıfır uzunluk evresinde referans patlar.
Fakat başka değerler girildiğinde tekrar düzelir. Yani Revit bu durumda:
"Tamam Family patladı. Ben mevzuyu büyütmeden başka değerler girmesini bekleyeyim" diyor :)

Bu konuda denemeler yaparken Tekillik (Büyük Patlamadan önceki gibi herşeyin tek bir noktada olması gibi)
yakalamanın oldukça güç olduğunu görmüştüm.
Pozitif ve negatif değerlere gitmek kolay olmasına rağmen.. Elbette programın kullanılış amacı göz önüne alındığında bu durumda hiç bir problem yok. Önemli olan referansların kaybolmaması ve Revit bu konuda çok başarılı.

Tabi insan programı zorlamadan da edemiyor. Geometrik referanslar için formülasyon kullanmak (ve ya dış refere edici kullanmak) tekilliğe giden tek yol gibi görünüyor.

Bu fikri denemek için formül tabanlı bir Arşimet Geometrisi modelledim. Evdeki (yazık) i7 930'u üzmesin diye fazla karmaşık olmayan, beni de baymasın diye çok ta basit olmayan bir geometri seçtim.

Snub Dodecahedron (wikipedia) da ne?

Family'yi indirmek için:

Archimedean Solids - Snub Dodecahedron.rfa (2015)


Snub Dodecahedron family'si bir veri giriş parametresi, iki visibility parametresi ve beş instance bilgilendirme parametresine sahip.

e parametresine pozitif değer verildiğinde:


e'ye sıfır değeri verildiğinde Revit bizi uyarıyor. Aynı yerde bir sürü instance var diyor..


Olacak tabi. Zaten olsun diye kastırıyoruz. Bütün instance'lar tek bir noktada!


Ve Family'nin hala çalıştığını görmek için Negatif bir değer denemesi..


Yaptım oldu.. Atımı getirin..

2014-06-12

BIM Bilgi Demektir.. Peki ya?

İkinci kattaki duvarı vurmak için asabi bir kuşun atış açısı ve atış hızı bilgisi gerekirse?

Korkmayın!

Asabi bir kuşun atış açısı ve atış hızını hesaplayıcı family emrinizde!

Angry.rfa (Revit 2015)


Angry family'sinde 3 veri giriş parametresi, bir bilgi ve bir visibility parametresi var.


θo = Atış açısı
Vo = Atış hızı
t = Tahmin edilen çarpışma süresi
tflight = Toplam uçuş süresi
cheat = Zorlananlara hile visibility parametresi


cheat parametresi aktif hale getirildiğinde yukarıdaki gibi görünüyor.

Uyarmadı demeyin! Birşeyler vurmak göründüğü kadar kolay değil!
Özellikle karmaşık BIM projelerinde..
Bir de workshared ortamlarda pis bağımlılık yapıyor :)

2014-06-02

İki Tarih Arasındaki Gün Sayısını Hesaplama

revitforum.org'da takvim family'si ile ilgili dedim ki:

-Şu an iyilik ve kötülük için kullanabilirsiniz. Comments label'ı oluşturun, bir tarih ayarlayın, workshared bir projede view'lara koyun..
İyilik: "Ofis partisini unutma!"
Kötülük: "Evet. Bunların teslim tarihi dündü!

Cevap:
-Yes, for Evil. I have also been thinking about doing some kind of project planning in Revit. For example if you make "Comment Objects" that a project manager or lead designer, with very little Revit experience, can place on drawings and fill in with date and actions they can be scheduled. This gives a clear overview of what needs to be done, by whom, when and if actions have been completed or not. It would be very useful to have Date and Time available as parameters in Revit so that actions approaching deadlines could be shown in ever brighter colours as the moment of death or glory approaches...

Yani kötülük kazandı..


Ya arkadaşım meydan okumayın! Yaparım :)

D_GEN_DEADLINE.rfa (Revit 2015)


Deadline family'sinin 2 veri girme parametresi var:
DateA ve DateB. Family DateA'nın DateB'den önce gerçekleşmesini bekliyor.

2 kontrol parametresi var:
DateAcheck ve DateBcheck. Bunlar girdiğimiz parametrelerin Family tarafından nasıl yorumlandığını gösteriyor.

Ve 6 farklı sonucu olan txtMessage parametresi.


Çözüm için bakınırken wikipedia'da şunu buldum:
Julian Day özellikle astronomlar tarafından kullanılan, Julian döneminden itibaren günlerin kesintisiz sayımıdır.

Her gün için bir sayım demek, bunları birbirinden çıkarır aradaki gün sayısını bulurum demek. Bu seferki tahmin ettiğimden de kolay olacak!

Ayrıca iki tarih için toplamda 6 adet(y/m/d) veri giriş parametresi olsun istemedim. Bu sebeple 2 tane Integer parametresi yaptım. Bunlar y/m/d olarak parse oluyor, DRV(drive) parametreleri ile düzeltiliyor ve check parametrelerinde tekrar birleştiriliyor.

DateA (Integer Parameter)

yıl(en az 1 basamak)ay(2 basamak)gün(2 basamak). Yani girilebilecek en erken tarih 10101.
(Bu tarihten önce bir teslim tarihiniz varsa haberim olsun :)

Parsing  doğru ondalık basamakları alarak yapıldı.

AyearParse = rounddown(DateA / 10000)
AmonthParse = rounddown(DateA / 100) - (AyearParse * 100)
AdayParse = DateA - (AyearParse * 10000) - (AmonthParse * 100)

day / month / yearDRV(drive) parametrelerini Revit Takvimi family'sinden aldım.

Julian Day Number

Önce Julian dönemi başlangıcından itibaren ay ve yılı hesaplamak gerekiyor.


Aa = rounddown((14 - AmonthDRV) / 12)
Ay = AyearDRV + 4800 - Aa
Am = AmonthDRV + (12 * Aa) - 3

Sonra Julian Day bulunuyor:


AJulianDay = AdayDRV + rounddown(((153 * Am) + 2) / 5) + (365 * Ay) + rounddown(Ay / 4) - rounddown(Ay / 100) + rounddown(Ay / 400) - 32045

DateB için aynı işlemleri tekrarladım.
BJulianDay - AJulianDay bize aradığımız gün sayısını veriyor!

Normalde formüller oturduğunda fazla parametre olmaması adına birbirlerinin içine gömerim.
Burada anlaşılır olması için yapmadım.