EGITIM 1 21/05/22

OpenBrIM Platform Training Day 1 05/21/22

PROJECT/LIBRARY/AUTHOR/TEST

  1. http://openbrim.org adresinden log-in olma

  2. Projects-Library-Authors-Tests tablarının sıralı tanıtımı

    1. Projects

      1. New butonundan Bu kısımdan yeni projeler oluşturabiliyoruz

      2. Open butonundan önceden açtığımız bir projeye ulaşabiliyoruz

    2. Library

      1. Geliştirmeleri yaptığımız ve app tarafına çağırdığımız projelerin bulunduğu kısım

      2. Bir kaç objeye gidilip gösterilecek, örn: Crossframe-K Bot

      3. Refresh, save ve publish butonları ve altta çıkan uyarı hakkında bilgilendirme

        1. Refresh sayfa yenilemeye

        2. Save objeyi kaydetmeye

        3. 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

    3. Authors

      1. Obje yazarlarının kendi geliştirmeleri yapacağı alan

      2. Sistemde kayıtlı ve obje geliştiren herkes burada görülebilir

      3. Libraryde bulunan aynı kurgular burada da geçerli

      4. Library OpenBrIM özelinde geliştirilmiş objeleri içerir

      5. Authors bireysel geliştirmeler için açıktır.

    4. Tests

      1. Sistemde yaşanan geliştirmeler sonrasında objelerde herhangi bir buga sebebiyet verip vermediğini control ettiğimiz yer

      2. 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.