EGITIM 3 28/05/22

OpenBrIM Platform Training Day 3 05/28/22

SIK KULLANILAN FONKSIYONLAR

Aşağıda listenen fonksiyonların kullanımı öğrenmemiz için yeni bir kütüphane objesi açıyoruz.

Kullanılan fonksiyonlar :

  • Ceil(Değer)

  • Floor(değer)

  • Map ve filter fonksiyonu

  • Filter fonksiyonu(değer, sınama)

  • Linesplit(Line,değer)

  • Mergel(Liste)

  • Sort

  • Reverse

  • Concat(Liste1,Liste2)

  • Refine

  • Filter

  • Maxl

  • Minl

<O N="FunctionsTry" T="Project"> <!-- Listeler --> <P N="List1" V="[0,1,2,3,4,5,6,7,8,9]" /> <P N="ceildeneme" V="ceil(1.51)" /> <P N="floordeneme" V="floor(1.51)" /> <!-- Map Örnek --> <P N="mapdeneme" V="map(List1,x)" /> <P N="CiftSayilar2" V="map(List1,a=>a%2)" /> <P N="CiftSayilar1" V="map(List1,a=>iif(a%2 .EQ. 0, a, a%2 ))" /> <P N="CiftSayilar" V="filter(map(List1,a=>iif(a%2 .EQ. 0, a, a%2 ) ),x .NE. 1)" /> <P N="TekSayilar" V="filter(map(List1,a=>iif(a%2 .EQ. 1, a, 0 )),x .NE. 0)" /> <P N="List2" V="[[1,2,3,4,5],[11,22,33,44],[111,222,333]]" /> <P N="icicemap" V="map(List2,c=>map(c, x^2))" /> <!-- Linesplit Örnek --> <P N="Line1" V="[[10,15,20],[15,20,25]]" /> <P N="StartX" V="map(Line1,b=> iif(bi .EQ. 0, b[0], 0))" /> <P N="StartXX" V="map(Line1,b=>b[0])" /> <P N="linesplit1" V="linesplit(Line1, 2)" /> <P N="linesplit2" V="linesplit(Line1,[0,0.2,0.5,0.8,1])" /> <!-- Merge Örnek --> <P N="mergedeneme" V="mergel(Line1)" /> <!-- Sort Örnek --> <P N="sortdeneme" V="sort(mergedeneme)" /> <!-- Reverse Örnek --> <P N="reversedeneme" V="reverse(sortdeneme)" /> <!-- Refine Örnek --> <P N="refinedeneme" V="refine(reversedeneme,2)" /> <!-- Concat Örnek --> <P N="concatdeneme" V="concat(List1, Line1)" /> <P N="mergedeneme2" V="mergel(Line1)" /> <P N="mergedeneme3" V="concat(List1, mergedeneme2)" /> <!-- Filter Örnek --> <P N="TekSayilar2" V="filter(List1, x%2 .NE. 0)" /> <!-- MaxL & MinL Örnek --> <P N="maxldeneme" V="maxl(List1)" /> <P N="maxldeneme" V="maxl(Line1)" /> <P N="maxldeneme2" V="maxl(Line1,x[0])" /> <P N="maxldeneme3" V="maxl(1,2)" /> <P N="maxldeneme4" V="max(1,2)" /> <P N="maxldeneme5" V="max(Line1[1])" /> <P N="maxldeneme6" V="maxl(mergel(Line1))" /> <!-- Sum & SumL Örnek --> <P N="minldeneme" V="minl(List1)" /> <P N="minldeneme2" V="minl(Line1,x[0])" /> <P N="minldeneme3" V="minl(1,2)" /> <P N="minldeneme4" V="min(1,2)" /> <P N="minldeneme5" V="min(Line1[1])" /> </O>

PRIVATE / EXPORT / REPEAT / TRANSALIGN

  • Bu eğitimde 3  yeni objeyle beraber başlıyoruz. Döşeme ve Kolon objelerimizin hazır halleri aşağıdaki gibidir

 

 

 

 

 

  • Objelerin ilk ogorunumu asagidaki sekilde. Daha sonra bunlarin uzerine kurgumuzu ekleyerek ilerleyecegiz

DOSEME

<O N="Day3-Doseme" T="Project"> <P N="t_dos" V="20" D="Thickness of deck" Role="Input" /> <P N="l_deck" V="3000" D="Length of the Deck" Role="Input" /> <P N="w_deck" V="300" D="Width of the Deck" Role="Input" /> <P N="startSta" V="0" D="Start Station" Role="Input" /> <O T="Volume" X="startSta" Y="0" Z="-t_dos" Color="#F933FF" Opacity="0.5"> <O T="Surface"> <O T="Point" X="0" Y="-w_deck/2" Z="t_dos" /> <O T="Point" X="0" Y="w_deck/2" Z="t_dos" /> <O T="Point" X="0" Y="w_deck/2" Z="0" /> <O T="Point" X="0" Y="-w_deck/2" Z="0" /> </O> <O T="Surface"> <O T="Point" X="l_deck" Y="-w_deck/2" Z="t_dos" /> <O T="Point" X="l_deck" Y="w_deck/2" Z="t_dos" /> <O T="Point" X="l_deck" Y="w_deck/2" Z="0" /> <O T="Point" X="l_deck" Y="-w_deck/2" Z="0" /> </O> </O> <O N="RightRef" T="Line" X="startSta" Z="-t_dos"> <O T="Point" X="0" Y="-w_deck/2" Z="0" /> <O T="Point" X="l_deck" Y="-w_deck/2" Z="0" /> </O> <O N="LeftRef" T="Line" X="startSta" Z="-t_dos"> <O T="Point" X="0" Y="w_deck/2" Z="0" /> <O T="Point" X="l_deck" Y="w_deck/2" Z="0" /> </O> <P N="coords_RightRef" V="toglobal(RightRef)" /> <P N="startRight" V="map(coords_RightRef,x[0])" /> <P N="length_RefR" V="linel(RightRef)" /> <P N="coords_LeftRef" V="toglobal(LeftRef)" /> <P N="length_RefL" V="linel(LeftRef)" /> </O>

KOLON

<O N="Day3-Kolon" T="Project" > <P N="w_col" V="30" D="Width of the Column" Role="Input" /> <P N="l_col" V="30" D="Length of the Column" Role="Input" /> <P N="h_col" V="100" D="Height of the Column" Role="Input" /> <P N="number_cols" V="3" D="Number of Columns" Role="Input" /> <P N="orient_cols" V="1" D="Side of the Column[Left=0/Right=1]" Role="Input" /> <P N="pick_deck" V="DD1" T="Day3-Doseme" D="Pick a Deck" Role="Input" /> <O T="ParamInfo" Min="1" Max="1" Required="0" Param="pick_deck" /> </O>

TEMEL

  • TransalignRule anlaticaz. Kurgumuzu islemeye baslamadan once bu parametrenin neden ve nasil calistigini ornek ile anlatacagiz

    • Koordinatimiz bu sekildeyken, LeftRef parametresinin global koordinatini +y yonunde oteleyecegiz Y="200" ve uzunlugunu +y yonunde artiracagiz Y="w_deck/2+500" ancak sol tarafta kurguladigimiz bu parametrenin degil sag taraftaki line parametresinin degistigini gorecegiz

    • Bunun olmamasinin nedeni transalignrule by default tanimlanmis degerinin left olmasi. Sebebei kopru muhendisleri atalarimiz. Bu nedenle proje satirina TransAlignRule="Right" ekliyorum.

  • Objelere sirayla eklemeler yapmaya basliyoruz.

    • Ilk amacimiz kolon objesine dosemeyi cekmek.

    • Kolonların döşemede bulunan sağ ve sol referans çizgilerinden koordinat çekebilmesi için ne yapmak gerekiyor? – EXPORT kullanmaliyim

    • Tanımlanan parametrelerden ya da objelerden hangilerini exportlamak gerekiyor? – RIGHTREF, LEFTREF, COORDS_RIGHTREF, STARTRIGHT, LENGTH_REFR, COORDS_LEFTREF, LENGTH_REFL

    • Cevaplardan sonra dosemeye export yerlestiriyorum. Kolona gelip refresh atiyorum. Kolona private ile dosemeyi cekiyorum.

    • Private ile cektigim doseme objesinin adini pick_deck parametre ismine esitliyorum. Private ile cekerken copy paste degil, objenin adini yazarak cekiceksin ki N=DD gelsin ve onu sonra DD1 olarak guncelle <O N="DD1" T="Day3-Doseme">

    • Kolon objesinin icine lcoord_cols ve rcoord_cors parametrelerini tanitiyorum. Bu parametreler, kullanicinin girdigi kolon sayisina gore ve deckin uzunlugunu kullanarak, esit araliklarla olusturulacak kolonlarin konulacagi noktalarin listesini veriyor. Debug trace ekranindan gosterelim listeyi

    • Repeat objesini tanitmaya basladim. Kolonlari olusturmaya basliyorum diye. Bu satir uzerindne repeatin nasil calistigini okudum

    • Sonra volume objesi olusturdum ve kullanici degerlerinden kolonu cizdim

    • Once varsayilan parametre degerleriyle kolon volume olusturdum, 3d viewda gordum, i kullanmadigim icin repeat donuyo ama hep ayni yerd ekolon olusuyo. Volum eobjesine x, y, z giriyorum. lcoord_cols[][] diye volume giriyorum, 3d viewda duzeldigini goruyorum. Sonra 0 i ye ceviriyorum.

    • Simdi kolonlari koordinata oturtup repeat loopunda nasil cokladigimi anlaticam

    • Sadece sol tarafa oturttuk. Sag tarafa oturtmak icin ne yapmam gerekiyo diye sorucam. Guard cevabi almayi bekliyorum. Guardi cocuklarla birlikte yazalim. Eger aynisini kopyala derse neden olmicagini aciklayalim cunku kullanicidan farkli sayida kolon alabilirim, o yuzden de farkli 2 grup tanimladim. OrientationLeft, OrientationRight

    • Temel objesini olusturmak icinizlicegimiz yontem kolonlarin altinda direk olusmasini istedigmiz icin yani kolonlara gore parametrik davranmasini istedigmiz icin, kolonlarin en alt noktasini almaya ihtiyacimiz var. Kolonlarimin tepe noktalari elimde var zaten ve yuksekligi bildigim icin temele bildirebilirim. Burda da tekrar exportu kullanarak temele aticam. Kolon yuksekligi de role input oldugu icin kolonu temele importladigimda istedigim tum degerler gelmis olucak

    • Temel objesini actim, parametre acikliyorum. Paraminfoyu acikliyorum, temelimi soldan ve sagdan birere kolon sececek sekilde olusturdugum kurgusunu soyluyorum. Required=0 kolon seiclmedigi zaman spreadsheet alanin ac ve zorunluluk bildirme ama objeyi olusturmaya calistigimda hata vericek. Pick=1 demek girilen degeri al. List=1 demek liste seklinde al.

    • Private ile hem doseme hem kolon cekiyorum, nameleri ona gore ayarladik (DD1, DK1, DK2), 2 kolon tanimliyorum dk1 ve dk2

    • Volume objesı olusturabılmek ıcın gereklı olan parametrelerımı tanitmaya basliyorum. Buradaki cumlem de kolon koordinatlarini biliyorum ve temelin koordinatlarini bunlari kullanarak bulacagim. Burada kullanici kac kolon girerse girsin, ben baslangic ve bitis kolonlarinin koordinatlarini almak istiyorum ki temeli bu koordinatlardan extrude ediyim. Bunlari anlatirken kolonda export yapmamiz gerektigini soylicez

    • Daha sonra volume objesini olusturuyorum

  • Appe gidip sirayla objeleri yaratip degerleri degistiriyorum

  • Sonunda sorum su DK2, DK3 olarak temeli olusturmusken DK3, DK2 yaptigimda temel sacamliyo, bunun sebebi nedir? Bu soruya aninda cevap veremezlerse cts dusunup Pazar sabah cevap donsunler dicez.

  • Objelerin son gorunumu asagidaki sekilde

DOSEME

KOLON

TEMEL