EGITIM 1 21/05/22
OpenBrIM Platform Training Day 1 05/21/22
PROJECT/LIBRARY/AUTHOR/TEST
http://openbrim.org adresinden log-in olma
Projects-Library-Authors-Tests tablarının sıralı tanıtımı
Projects
New butonundan Bu kısımdan yeni projeler oluşturabiliyoruz
Open butonundan önceden açtığımız bir projeye ulaşabiliyoruz
Library
Geliştirmeleri yaptığımız ve app tarafına çağırdığımız projelerin bulunduğu kısım
Bir kaç objeye gidilip gösterilecek, örn: Crossframe-K Bot
Refresh, save ve publish butonları ve altta çıkan uyarı hakkında bilgilendirme
Refresh sayfa yenilemeye
Save objeyi kaydetmeye
Publish ise versiyonlu bir şekilde kaydetmeye yarar. Publish butonu, obje fully proper bir workflowda düzgün bir şekilde çalışmadığı zamanlarda kesinlikle kullanılmamalı. Geri dönüşü olmayan sonuçlara yol açabilir
Authors
Obje yazarlarının kendi geliştirmeleri yapacağı alan
Sistemde kayıtlı ve obje geliştiren herkes burada görülebilir
Libraryde bulunan aynı kurgular burada da geçerli
Library OpenBrIM özelinde geliştirilmiş objeleri içerir
Authors bireysel geliştirmeler için açıktır.
Tests
Sistemde yaşanan geliştirmeler sonrasında objelerde herhangi bir buga sebebiyet verip vermediğini control ettiğimiz yer
Buradaki test objeleri de paramml ile kodlanmış objeler ve sistemdeki sorunlar için önemli bir yeri var.
WORKFLOW
Arayüz tanıtımından sonra App’te Steel I girder Workflowu ile düzenlenmiş bir design example açılması i.e. https://openbrim.org/platform/?application=app&folder=Cross-Frame&obj=objidfkw0d8wjaeg9gvc4gk835&prj=objid5yvt0btov75spad8702ct&active=GraphicsView
Bu örnek üzerinden workflow kurgusunu anlatmak
Appte 3D, workflow ve sheet kısmımız mevcut. Workflowdan assign edeceğimiz objeleri seçiyoruz, parameter değerlerini spreadsheetten giriyoruz, değişimi 3D görüyoruz
Köprü mühendisi yol mühendisinden alacağı güzergah verileri ve geoteknik datalarıyla köprüyü tasarlayan kişidir
Bu tasarımda köprünün yol üstünde nereye oturacağı, üstyapı tasarımı, temel yapısı tasarımı ile ilgilenir
Bu yüzden workflowa ilk alignment ile başladık
Açıklıklarda kolonların yerlerini belirleyip, stable bir system oluşturması için span arrangement ve fixityleri dikkate almak zorundadır
Bu yüzden Span Arrangemen, Insertion Point gibi objelerimiz var
Malzeme ve kesit tanımlarını “properties” kısmından
Açıklıklarını belirlediğimiz üst yapı kesitini de superstructure componentslerden yapıyoruz.
Fixityler, enkesitler, crossframeler, bu kısımda tanımlanıyor
Bir soru: Crossframelerin sistemdeki ana görevi nedir? Cevap yoksa, Girderlar ne işe yarar? Ona da yoksa, biz neden köprü yapıyoruz?
Altyapı kısmını Substructure dan bağlıyoruz. Girderın altında kalan herşey altyapıya girer. (Bearing hariç)
Pedestal kirişlerin oturtuğu padler olmakla birlikte deprem takozu olarak da görev yapabilirler
Kenarayak, ortaayaklar altyapı elemanlarıdır. Bir çok farklı tipleri bulunmaktadır
Bir yapıyı çevresel yüklere maruz bırakmak için, stage kurgusuna ihtiyacımız var
Bu kısımda yük tanımlarını yapabilmemiz için stage set etmemiz gerekiyor. Her bir yükü aynı ve farklı stagelere assign edebiliriz. Kullanıcı beklentisine göre değişir
Analiz sonuçlarını gereken yönetmeliklerle değerlendirebilmek için codecheck objelerimiz var, bu kısımda da kullandığımız sectionların yeterliliğini ilgili yönetmelikçe control ediyor, rapor çıkarıyoruz. Şu an için AASHTO yönetmeliğini destekliyoruz
APP
App ekranında butonların tanıtımı
Objects kısmında kullanılan objelerin listesini görebiliyoruz
3 çizgiye bastığımızda sırasıyla;
Model: Köprü modelimizin 3 boyutlu yerleşimini görebileceğimiz kısım burası
FEA: Tanımlanmış objelerin finite element method modellemesini gördüğüm kısım burası
CAD: Sistemde bulunan çizimleri veya ekstra çizim yapılmak istenen kısım burası
DOCS: Uygulamada bulunan dökümante edilen verileri görebileceğimiz kısım burası
PROJECT SITE: Projenin uygulanacağı alanı polygon vey a circle ile bağladığımız yer burası
GIS: Projeye dair harita verilerini saklanan yer burası
DRONES: Drone görüntülerini bağlayabileceğimiz yer burası
ASSETS: Sistemde assign edilmiş verilerin görüntüleneceği yer burası
REVISIONS: Projede yapılan her değişiklik sistemde otomatik kaydedilir. Önceki bir kayda bu kısımdan dönülebilir.
USERS: Projenizde değişiklik yapabilme yetkisini verebileceğiniz kişileri burada ekleyebilir, silebilirsiniz.
REFERENCE: Dökümantasyon yapılmış objelerin listelendiği yer burası
SOURCE CODE:
Appte library kısmında oluşturulup çağrılan objelerin oluşturduğu bölüm
Application tarafında library objelerinde yazılmış kodlar bu tarafta system tarafından otomatik yazılıp ekranda gösterilir
Library tarafında obje yazarken bu konunun derinine inilecek
Bu kısımla alakalı bir sorun yoksa Paramml kısmına geçiş yapılacak.
PARAMML
Authors kısmına girip, yeni bir obje açıyoruz
Dünyada gördüğümüz herşeyi bir obje olarak düşünebilir ve bunları sınıflandırabiliriz. Biyolojideki sınıflandırmalar bunlara birer örnek olarak düşünülebilir. Sınıflar ve içerisinde bulunan objeler ve bu objelerin attributeleri olması nesne yönelimli programlamaya örnek olabilir. Mesela, Bu insan sınıfında olan bir şahıs için, boy isim gibi özellikler olabilir. Bu attributelar diğer objelerle arasındaki farkı yaratır ve metodlarla araştırılmak istenen veriye ulaşılır
Sizin bu örnek üzerinden verebileceğiniz başka örnekler var mı?
Hasta istatistikleri bunlara güzel örnek olabilir. Mesela kalp hastası 2 bin kişi içinde yapılan egzersizlerde, nabzı en çok düşüren egzersizlerin esneme egzersizleri olduğu bir makalede incelenmiş. Buradaki Class, Object, Attribute ve Methods ayrımları neler olabilir?
Class-> People with Heart Diseases
Object -> Adam, Joe, Ellen, Diana
Attributes -> Full Name, Age, Use of Smoking, Use of Alcohol, Exercise type, etc
Methods -> getHeartRate
Sunumda görseli mevcut
Bunu köprü özelinde düşündüğümüzde de aynı şekilde bir sınıf, obje, attributes ve methods ayrımı yapabiliriz.
Parametrelere neden ihtiyaç duyuyoruz?
Bir problem tanımlarken, aranılan cevap parametrenin kendisiyle beraber niceliğidir
Bir kare tanımlarken, kenar uzunluğunu bilmek gerekir(basit bir örnek)
Parametrik modellemenin anlamı nedir?
Köprü elemanları kesitlerden oluşan elemanlardır. Yapılan analizler sonucu kesit değişikliği, donatı değişikliği ya da daha farklı değişiklikler gerekir. Bunların hepsini parametreye bağlamak mümkündür
Parametrik modellemenin avantajları dezavantajları nelerdir?
Değişiklikler sadece cell değiştirerek güncellenebilir. Basit örnek: Kiriş genişliğini değiştirmek diğer programlarda da çoğu zaman time consuming olmayabilir. Ama açıklık değiştirmek eklemek zaman alan bir aktivite. Bu yüzden parametrik modelleme de açıklığı değiştirmek de kesit değiştirmekle aynı.
Parametrik modellemek için sağlam bir kurgu gerekir. Herşey kareden ibaret olmayacağı gibi, herşeyin noktadan ibaret olacağını düşünerek ilerlemek gerekiyor. Parametrik modelleme kurgusu one-time job gibi düşünülmeli
Parametre tanımı nasıl yapılır
<P N="a" V="10" D="Length of Edge of Square" Role="Input" />
N = Parametre ismi (Name) must
V = Value (Parametre degeri) must
D = Description (Parametre aciklamasi) optional
Role=Input (Input alinmasi gereken bir deger oldugunu bildiren bir diger parametre) optional
Bu parametreler neye refer ediyor?
Bu noktada objelere ihtiyacımız var. Bu objeler geometric olabilir, text olabilir, geodata olabilir, kurgulamak istediğimiz herşeye referans olabilir
Library tarafında kod yazarken liste açılır ve burada systemin içinde gömülü olan core objeleri görüyoruz. Bu objelerle kullanıcı tanımlı daha kompleks olan objeler tanımlanır
Küçük bir geometric obje modelleyerek dile giriş yapalım. Bir kare tanımlarken ihtiyacımız olacak şey, Karenin kenar uzunluğudur. Bunu yüzey olarak tanımlamak için bir core object çağıralım
<O T="Surface"> <O T="Point" X="0" Y="0" Z="0" /> <O T="Point" X="10" Y="0" Z="0" /> <O T="Point" X="10" Y="10" Z="0" /> <O T="Point" X="0" Y="10" Z="0" /> </O>
Bir yüzey oluşması için minimum kaç noktaya ihtiyaç vardır?
Olusturdugumuz bu yuzeyi bir parametreye baglayalim
<O T="Surface"> <O T="Point" X="0" Y="0" Z="0" /> <O T="Point" X="a" Y="0" Z="0" /> <O T="Point" X="a" Y="a" Z="0" /> <O T="Point" X="0" Y="a" Z="0" /> </O>
Bu yuzeyden bir volume objesi uretelim
2 yüzeyden oluşan volumetric objemizin 2. Yüzeyinin koordinatlarını değiştirirsem ne olur?
Pointler koordinatlı olarak sıradan okunur ve sırasıyla yüzeye, yüzeylerde sıralı pointlerden birbirine bağlanarak volume oluşturur. O yüzden noktalar kurgulanırken bir yön tayin edilip o yönde tutarlılık göstermek gerekir.
Volume objelerini X, Y ve Z yönünde hareket ettirebilme, rotation verme özelliği ekleyebilmeliyiz.
Bununla beraber diğer obje tiplerinin de volumelerini oluşturalım, rectangle prism ve cylinder
Bu kısımda app tarafına obje çağrılacak. Hem authors hem de arama sekmesinden obje bulunabilir.
Appte obje çağrıldığında, çağrıldığı andaki kaydolmuş versiyonu gelir. O yüzden objede bir değişiklik yapılıp kaydedildiğinde appi refreshlemek gerekir.
Bu objeler üstünden Guard parametresi anlatılacak. Guard parametresi belli bir koşula dayalı olarak çalışan objeyi temsil eder. Bağlı olduğu parametre değerini aldığı zaman, objeler bağlı olduğu guard durumuna göre çalışır veya çalışmaz
Objede yazılmış herşeyi app source code da görmüyoruz. Role input ya da export ile çektiğimiz parametreler görünüyor sadece
Bunun sonrasında mantıksal sınama parametreleriyle alakalı örnekler verilecek. IIF fonksiyonu tanıtılacak.
Matematik fonksiyonları https://sites.google.com/a/redeqn.com/paramml-author-s-guide/home/3-predefined-functions-and-constants?authuser=0
Sınama operatörleri https://sites.google.com/a/redeqn.com/paramml-author-s-guide/home/1-introduction/1-2-parameters/1-2-2-guard?authuser=0
Hiyerarşik değer okuma için 2 objenin içinde aynı parametreyi tanımlayarak hangi parametrenin değerinin govern edeceğini sormak gerekiyor. Bunun sebebi de 2 ayrı objede kullanılan değerin çıkaracağı hatayı bulmak çok zor olacağından kaynaklı, hiyerarşik olarak programın hangi değeri alacağından emin olmak gerekiyor. Aynı hiyerarşide bulunan 2 parametrenin sonucunu farklı alabiliriz. Bunun sebebi de evaluating de sequencial bir tarz olmaması. Bu konseptin adı da laziness olarak geçiyor. Paramml de OOP konseptini kısmen baz alırken, functional programmingin getirdiği kısıtlamalara dikkat ederek aynı isimli parametre kullanırken hiyerarşiye dikkat etmek gerekir.