EGITIM 4 29/05/22
OpenBrIM Platform Training Day 4 05/29/22
ALIGNMENT
Bu eğitimde önceki yaptığımız döşeme, kolon ve temel objelerini Alignment fonksiyonlarıyla bir yola nasıl uyumlu hale getireceğini anlatacağız.
Yolumuzun kırmızıyla çekilmiş yerlerini köprünün aks olarak düşünelim. Bir yolun tasarımında output olan verileri yatay, düşey ve enkesit olarak 3 e bölebiliriz. Bu yüzden köprü tasarımında bu 3 veri topluluğu bize yolcular tarafından gelir.
Bu dataları alignment objemizde nasıl tanımlayacağımıza appte gidiyoruz.
Alignmentta ilk girişte Start Station ve Azimuth değerlerini alıyoruz. Kuzeyi 0 derece kabul edersek Azimut pi/2 giriyoruz. Köprü boyuna aksımızı X’e eşitlemek için. Horizontalda Straight ve circular kurgularıyla yolumuzda düz ve kurpta olan bölgeleri ekleyebiliyoruz. Bu 2 objede de station parametresiyle beraber, circularda direction ve radius parametrelerini de ekleyebiliyoruz.
Vertical data ise profilden oluşuyor. Bir köprüye yandan bakıldığında görülen görüntüye profil diyoruz. Bir köprü tanımı için başlangıç ve bitiş mesafelerinde ve aralıklı istasyonlarda yükseklik tanımı gereklidir. Bu yüzden vertical datada bunları girebiliyoruz.
Transverse data ise aynı şekilde station parametresi topluyor ve yolun centerlineının yolun sol kenarına olan uzaklığını alıyoruz. Bu noktadan sonra altında oluşturduğumuz çizgilerde slope ve length alıyoruz. Left Edge to PGL verdiğimiz konumda oluşacak noktadan yolun sağına gidecek şekilde slope ve length kurgusuyla ilerliyoruz.
Önceki eğitimde yaptığımız döşeme objesini private ile getirdiğimiz alignment objesine göre aşağıdaki fonksiyonları kullanarak değiştireceğiz.
alignH
alignV
alignT
aligHX
alignHY
alignHA
DOSEME
<O N="Day3-Doseme" T="Project">
<P N="pick_align" V="" T="Alignment" D="Pick Alignment" Role="Input" />
<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="100" D="Start Station" Role="Input" />
<O T="Volume" X="startSta" Y="0" Z="-t_dos" Color="#F933FF" Opacity="0.5" Alignment="al1" AlignH="Warp" AlignT="Warp" AlignV="Warp">
<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 T="Export" Alignment="al1" AlignH="Warp" AlignT="Warp" AlignV="Warp">
<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>
<O T="Private">
<O N="al1" T="Alignment" Station="0" Azimuth="1.57079632679">
<O T="Straight" Length="4000" />
<O T="Circular" Length="12000" Radius="12000" Direction="@LEFT" />
<O T="CrossSection" Station="0" LeftEdgeToHCL="240">
<O T="CrossSectionSegment" Width="240" Slope="0.02" />
<O T="CrossSectionSegment" Width="240" Slope="-0.02" />
</O>
<O T="ElevationPoint" Station="0" Elevation="0" />
</O>
</O>
</O>
KOLON
<O N="Day3-Kolon" T="Project" TransAlignRule="Right">
<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="0" 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 T="Export">
<P N="lcoord_cols" V="linesplit(pick_deck.coords_LeftRef,(number_cols-1))" />
<P N="rcoord_cols" V="linesplit(pick_deck.coords_RightRef,(number_cols-1))" />
</O>
<P N="sortdeneme" V="sort(lcoord_cols)" />
<P N="reversedeneme" V="reverse(sortdeneme)" />
<O N="OrientationLeft" T="Group" Guard="orient_cols .EQ. 0" Color="#F7FF4B" Alignment="al1" AlignH="Warp" AlignT="Warp" AlignV="Warp">
<O N="Rep_Left" T="Repeat" S="0" E="number_cols-1" I="1" CTRL="i" i="0">
<O T="Volume" X="lcoord_cols[i][0]" Y="lcoord_cols[i][1]-w_col/2" Z="lcoord_cols[i][2]">
<O T="Surface">
<O T="Point" X="l_col/2" Y="-w_col/2" Z="0" />
<O T="Point" X="-l_col/2" Y="-w_col/2" Z="0" />
<O T="Point" X="-l_col/2" Y="w_col/2" Z="0" />
<O T="Point" X="l_col/2" Y="w_col/2" Z="0" />
</O>
<O T="Surface">
<O T="Point" X="l_col/2" Y="-w_col/2" Z="-h_col" AlignT="None" />
<O T="Point" X="-l_col/2" Y="-w_col/2" Z="-h_col" AlignT="None" />
<O T="Point" X="-l_col/2" Y="w_col/2" Z="-h_col" AlignT="None" />
<O T="Point" X="l_col/2" Y="w_col/2" Z="-h_col" AlignT="None" />
</O>
</O>
</O>
</O>
<O N="OrientationRight" T="Group" Guard="orient_cols .EQ. 1" Color="#F7FF4B" Alignment="al1" AlignH="Warp" AlignT="Warp" AlignV="Warp">
<O N="Rep_Right" T="Repeat" S="0" E="number_cols-1" I="1" CTRL="i" i="0">
<O T="Volume" X="rcoord_cols[i][0]" Y="rcoord_cols[i][1]+w_col/2" Z="rcoord_cols[i][2]">
<O T="Surface">
<O T="Point" X="l_col/2" Y="-w_col/2" Z="0" />
<O T="Point" X="-l_col/2" Y="-w_col/2" Z="0" />
<O T="Point" X="-l_col/2" Y="w_col/2" Z="0" />
<O T="Point" X="l_col/2" Y="w_col/2" Z="0" />
</O>
<O T="Surface">
<O T="Point" X="l_col/2" Y="-w_col/2" Z="-h_col" AlignT="Warp" />
<O T="Point" X="-l_col/2" Y="-w_col/2" Z="-h_col" AlignT="Warp" />
<O T="Point" X="-l_col/2" Y="w_col/2" Z="-h_col" AlignT="Warp" />
<O T="Point" X="l_col/2" Y="w_col/2" Z="-h_col" AlignT="Warp" />
</O>
</O>
</O>
</O>
<O T="Private">
<O N="al1" T="Alignment" Station="0" Azimuth="1.57079632679">
<O T="Straight" Length="4000" />
<O T="Circular" Length="12000" Radius="12000" Direction="@LEFT" />
<O T="CrossSection" Station="0" LeftEdgeToHCL="240">
<O T="CrossSectionSegment" Width="240" Slope="0.02" />
<O T="CrossSectionSegment" Width="240" Slope="-0.02" />
</O>
<O T="ElevationPoint" Station="0" Elevation="0" />
</O>
<O N="DD1" T="Day3-Doseme" Alignment="al1" AlignH="Warp" AlignT="Warp" AlignV="Warp">
<P N="pick_align" V="" T="Alignment" D="Pick Alignment" />
<P N="t_dos" V="20" D="Thickness of deck" />
<P N="l_deck" V="3000" D="Length of the Deck" />
<P N="w_deck" V="300" D="Width of the Deck" />
<P N="startSta" V="100" D="Start Station" />
<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 N="RightRef" T="Line" X="startSta" Z="-t_dos" Exported="1">
<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" Exported="1">
<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>
</O>
</O>
TEMEL
<O N="Day3-Temel" T="Project" TransAlignRule="Right">
<!-- created by Özer Gündüz on 23.05.2022 -->
<P N="t_fnd" V="30" D="Thickness of Foundation" Role="Input" />
<P N="pick_columns" V="[DK1,DK2]" T="Day3-Kolon" D="Select a Column" Role="Input" />
<O T="ParamInfo" Min="2" Max="2" Required="0" Pick="1" Param="pick_columns" List="1" RefParam="@temel" />
<P N="mapdeneme" V="map(pick_columns,a=>a.lcoord_cols)" />
<P N="Col_endl" V="pick_columns.lcoord_cols" />
<P N="Col_endr" V="pick_columns[0].rcoord_cols" />
<P N="all_coords" V="concat(Col_endl,Col_endr)" />
<P N="sort_coords" V="sort(all_coords)" />
<P N="start_coord" V="map(sort_coords, c => iif(c[0] .EQ. pick_columns[0].pick_deck.startSta, c , NULL))" />
<P N="StartCoord1" V="filter(start_coord, x .NE. NULL)" />
<P N="end_coord" V="map(sort_coords, c => iif(c[0] .EQ. pick_columns[0].pick_deck.l_deck+pick_columns[0].pick_deck.startSta, c , NULL))" />
<P N="EndCoord1" V="filter(end_coord, x .NE. NULL)" />
<O T="Volume" Z="0" Alignment="al1" AlignH="Warp" AlignT="Warp" AlignV="Warp">
<O T="Surface">
<O T="Point" X="StartCoord1[0][0]" Y="StartCoord1[0][1]" Z="StartCoord1[0][2]-pick_columns[0].h_col" />
<O T="Point" X="StartCoord1[0][0]" Y="StartCoord1[1][1]" Z="StartCoord1[1][2]-pick_columns[1].h_col" />
<O T="Point" X="StartCoord1[0][0]" Y="StartCoord1[1][1]" Z="StartCoord1[1][2]-t_fnd-pick_columns[1].h_col" />
<O T="Point" X="StartCoord1[0][0]" Y="StartCoord1[0][1]" Z="StartCoord1[0][2]-t_fnd-pick_columns[0].h_col" />
</O>
<O T="Surface">
<O T="Point" X="EndCoord1[0][0]" Y="EndCoord1[0][1]" Z="EndCoord1[0][2]-pick_columns[0].h_col" />
<O T="Point" X="EndCoord1[0][0]" Y="EndCoord1[1][1]" Z="EndCoord1[1][2]-pick_columns[1].h_col" />
<O T="Point" X="EndCoord1[0][0]" Y="EndCoord1[1][1]" Z="EndCoord1[1][2]-t_fnd-pick_columns[1].h_col" />
<O T="Point" X="EndCoord1[0][0]" Y="EndCoord1[0][1]" Z="EndCoord1[0][2]-t_fnd-pick_columns[0].h_col" />
</O>
</O>
<O T="Private">
<O N="al1" T="Alignment" Station="0" Azimuth="1.57079632679">
<O T="Straight" Length="4000" />
<O T="Circular" Length="12000" Radius="12000" Direction="@LEFT" />
<O T="CrossSection" Station="0" LeftEdgeToHCL="240">
<O T="CrossSectionSegment" Width="240" Slope="0.02" />
<O T="CrossSectionSegment" Width="240" Slope="-0.02" />
</O>
<O T="ElevationPoint" Station="0" Elevation="0" />
</O>
<O N="DD1" T="Day3-Doseme">
<P N="t_dos" V="20" D="Thickness of deck" />
<P N="l_deck" V="3000" D="Length of the Deck" />
<P N="w_deck" V="300" D="Width of the Deck" />
<P N="startSta" V="100" D="Start Station" />
<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 N="RightRef" T="Line" X="startSta" Z="-t_dos" Exported="1">
<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" Exported="1">
<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>
<O N="DK1" T="Day3-Kolon">
<P N="w_col" V="30" D="Width of the Column" />
<P N="l_col" V="30" D="Length of the Column" />
<P N="h_col" V="100" D="Height of the Column" />
<P N="number_cols" V="3" D="Number of Columns" />
<P N="orient_cols" V="1" D="Side of the Column[Left=0/Right=1]" />
<P N="pick_deck" V="DD1" T="Day3-Doseme" D="Pick a Deck" />
<P N="lcoord_cols" V="linesplit(pick_deck.coords_LeftRef,(number_cols-1))" />
<P N="rcoord_cols" V="linesplit(pick_deck.coords_RightRef,(number_cols-1))" />
</O>
<O N="DK2" T="Day3-Kolon">
<P N="w_col" V="30" D="Width of the Column" />
<P N="l_col" V="30" D="Length of the Column" />
<P N="h_col" V="100" D="Height of the Column" />
<P N="number_cols" V="3" D="Number of Columns" />
<P N="orient_cols" V="0" D="Side of the Column[Left=0/Right=1]" />
<P N="pick_deck" V="DD1" T="Day3-Doseme" D="Pick a Deck" />
<P N="lcoord_cols" V="linesplit(pick_deck.coords_LeftRef,(number_cols-1))" />
<P N="rcoord_cols" V="linesplit(pick_deck.coords_RightRef,(number_cols-1))" />
</O>
</O>
</O>