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 artiracagizY="w_deck/2+500"
ancak sol tarafta kurguladigimiz bu parametrenin degil sag taraftaki line parametresinin degistigini gorecegizBunun 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 geliprefresh
atiyorum. Kolonaprivate
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 okudumSonra 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
export
u kullanarak temele aticam. Kolon yuksekligi de role input oldugu icin kolonu temele importladigimda istedigim tum degerler gelmis olucakTemel objesini actim, parametre acikliyorum.
Paraminfo
yu 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