
blocklyAlgorithms allow to create rules for large scale 3D structures. Composing such objects from small components makes building process easier. Discrete parts can be assembled more easily. This script illustrates the possibilities of our platform. We make use of professional geometry kernels. In the latest release we tuned performance for faster rendering of such objects.
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="CDZ0yV9i^/I4D(1hh:5N">points</variable>
<variable id="(w_I)eNw(w^A2^!fDaoR">roofElements</variable>
<variable id="Obk[vz^n7Mv)Cg?T^FJ^">columnElements</variable>
<variable id="No-.@!ajW`iZNhtYFs:|">walkway</variable>
<variable id=")JDd/$?9d@/)Q;8uHsOh">pts1</variable>
<variable id="D?;jOf0wLZbE4dA0t0jA">surfaceMain</variable>
<variable id="[zm1f7j{n!%h6krajW07">transformedPoints</variable>
<variable id="z1)P]:Q8Nc^e2e?^rZg7">grid</variable>
<variable id="OC![oF$0|+P/T?a;yJTj">pts2</variable>
<variable id="m$+ZiW?SBj/+-L2AGg1h">j</variable>
<variable id="zY,-3Xz-hVmXZ4oCNr_f">uvsPromise</variable>
<variable id="$yivl^(Am[EkP_A06+[|">uDivColumns</variable>
<variable id=":{:pInCv~v4mN}VULXJe">roofTopOptions</variable>
<variable id="~wVJAVr.~@%#AYbA:a-N">pts3</variable>
<variable id="^rvuq!wt/JF*90FsJOeQ">vDivColumns</variable>
<variable id="uTzH((#w}Ij;zzjur!5F">roofBottomOptions</variable>
<variable id="{KFi.~;$`.^:S~:pGPLG">resSurfaceMain</variable>
<variable id="SP{8^mo@bpDq_GT6lTS?">pts4</variable>
<variable id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</variable>
<variable id="5M/tUeLH#WBo8c9eS6B=">uSubdivisions</variable>
<variable id="K|Koc`l+CDW}3!pNIo!l">vSubdivisions</variable>
<variable id="$p2$U}Vb3*GvO2k$]Om%">uStepDist</variable>
<variable id="/%(HsU-ilHZm{!Zif:#Y">groundFace</variable>
<variable id="_sI/G~-@l^Q$uG9O*Iee">roofGlassOptions</variable>
<variable id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</variable>
<variable id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</variable>
<variable id="SXdUZ]|Yz(6xfEDCx_wd">uvs</variable>
<variable id="*lx^8ZUn[Q^L|qSZuhHY">uvsGroundPromise</variable>
<variable id="(c**hXH!56[y}eFm`:om">columnBaseOptions</variable>
<variable id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</variable>
<variable id="CBa30-Qz_F3Vu!Lw2u=|">pts5</variable>
<variable id="VuD}(DXs1m6QMh7.FUZw">prlOuterTranslatedPromise</variable>
<variable id="TdcI-~EpnVX}!RhQtDWM">wireOnMiddleColumn</variable>
<variable id="Lb#;CZTb.U=]?/FE0R}d">columnTopOptions</variable>
<variable id="[KonGC98P9UI$KTOaZ0x">prlTranslatedInnerPromise</variable>
<variable id="6Ev54^^AhgVN#L,t([Zf">wireOnGroundForColumn</variable>
<variable id="mvsRC!k3oyO4_t%xUm=B">walkwayOptions</variable>
<variable id="|$PN]{}GVX[u:7#KZ}]j">prlTranslatedCenterPromise</variable>
<variable id="V/60%4QKJ38i9{K=U9N,">wireOnRoofForColumn</variable>
<variable id="%JzY:cK3~3fxNUBozxc8">groundOptions</variable>
<variable id="z=G]bU^k~e{7NB?oW4^D">parallelogramOuter</variable>
<variable id="!eaT~+j[NqITtgX2;rg[">faceToEvalColumns</variable>
<variable id=")jFwhfJ64YHbuNK27:RE">roofTopMeshPromise</variable>
<variable id="i*GbLP4K*{nZ^r(aot$0">parallelogramCenter</variable>
<variable id="cSfBm{4/in%#SI5u3ZMy">uvsGround</variable>
<variable id="0G}AZ%IK~JyC.!ows@Uc">roofBottomMeshPromise</variable>
<variable id="1u?USp-?Oz$`IwPQ*#hc">uMin</variable>
<variable id="r+/!Yi8+#X!-eR|s|rGI">prallelogramInner</variable>
<variable id=":rhC^bPjxDTND+_A6FP8">columnBase</variable>
<variable id="f$6G-eXhk_lJ,Cn=?1iA">roofGlassMeshPromise</variable>
<variable id="}6uDqz(r(CCA}*my._s!">uMax</variable>
<variable id="{MJv/x02PeZvH9A#m?Jo">i</variable>
<variable id="b@rIR_v#^_UW:xWos{C#">columnTop</variable>
<variable id="V8rL(y|lr.Q.8[Zsf/mE">columnBaseMeshPromise</variable>
<variable id="@ROlmvf}?w%|vAC}5/Uv">vMin</variable>
<variable id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</variable>
<variable id="[aGwA%Xg!t{a)tJ5}eD:">prlOuterOnFace</variable>
<variable id="{en%a36.!YbF*V[[j7?|">m</variable>
<variable id="Xmx4o3$9iSkLnYrnJW3,">columnTopMeshPromise</variable>
<variable id="B4GJ,/r+G;0*@cpcz.h*">vMax</variable>
<variable id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</variable>
<variable id="NP)@GjOv4@SCk.GDOX39">groundMeshPromise</variable>
<variable id="XDJ,1#`g?AW/H4JSh$W;">uTotal</variable>
<variable id="-bZIDPD6jxuP!iFMX[((">prlCenterOnFace</variable>
<variable id="A,Y.pPFWC(TWX%*j5qX=">walkwayMeshPromise</variable>
<variable id="VO{bl0#LNo4KR/~%?sQy">vTotal</variable>
<variable id=",gKkM!R;f4g;gS^{t8fI">framesTopPromise</variable>
<variable id="R8)c{9+bvT]-=}NW|$n-">roofTopMesh</variable>
<variable id="AB[dWnl[/fDKtNAp#;HU">framesBottomPromise</variable>
<variable id="+ZT@[lpq#c?%#)3xGEE*">roofBottomMesh</variable>
<variable id="jZX5)i68[Y)`yPY_noM^">windowsPromise</variable>
<variable id="v=$m@*Rp!Ni=tnXa!HGQ">roofGlassMesh</variable>
<variable id="3-ph`bM~;B3iFbn2+4zw">k</variable>
<variable id="WksPa84K#Qwk9@IeZaM}">columnBaseMesh</variable>
<variable id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</variable>
<variable id="#-ty|wDMJZV7nS6Z{dp,">columnTopMesh</variable>
<variable id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</variable>
<variable id="3S[CRP*red-@zg#qee,e">walkwayMesh</variable>
<variable id="[_r.QsyJ}zx:~r#7dOWs">timeElapsedFromPreviousFrame</variable>
</variables>
<block type="bitbybit.occt.cleanAllCache" id="QR31vc_rE?~G4LWZn_Ku" x="-1063" y="-497">
<next>
<block type="bitbybit.babylon.scene.enableSkybox" id="g2?7,665O9*oKfd`$}{~">
<value name="Skybox">
<block type="bitbybit.babylon.enums.skyboxEnum" id="4smkPD!]:(oA]j_zF%|i">
<field name="bitbybit.babylon.enums.skyboxEnum">'clearSky'</field>
</block>
</value>
<value name="Size">
<block type="math_number" id="iE[@_w58.dWZ|B9/^)g*">
<field name="NUM">1000</field>
</block>
</value>
<value name="Blur">
<block type="math_number" id="w4AUNRb;`qdvsxTyP|zt">
<field name="NUM">0.4</field>
</block>
</value>
<value name="EnvironmentIntensity">
<block type="math_number" id="mX+to:~Mr!k3a~gavCfz">
<field name="NUM">0.8</field>
</block>
</value>
<next>
<block type="variables_set" id="h3/^N9un?cK)xZI`])qQ">
<field name="VAR" id="z1)P]:Q8Nc^e2e?^rZg7">grid</field>
<value name="VALUE">
<block type="bitbybit.draw.drawGridMesh" id="Z.U!)WMPm8C^~67p|8]A">
<value name="Width">
<block type="math_number" id="NlJ]uMr+_?b[Wd0Ib;D[">
<field name="NUM">400</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="@YFnT7jVtGBbCR6DcLIf">
<field name="NUM">400</field>
</block>
</value>
<value name="Subdivisions">
<block type="math_number" id="{)F[+MfbWm~k`wFc]#8~">
<field name="NUM">10</field>
</block>
</value>
<value name="MajorUnitFrequency">
<block type="math_number" id="BbavQrC_+#uYV#G5mALj">
<field name="NUM">10</field>
</block>
</value>
<value name="MinorUnitVisibility">
<block type="math_number" id="+-9s2%fS0A^sqT3vB}%4">
<field name="NUM">0.45</field>
</block>
</value>
<value name="GridRatio">
<block type="math_number" id="u|iuQuBZ@T_;D6{*Q{p$">
<field name="NUM">0.5</field>
</block>
</value>
<value name="Opacity">
<block type="math_number" id="epC/Uy;ogFUOLXE0XFyE">
<field name="NUM">0.5</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="%a3Oaia[ZHi.2:o1e@Ee">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="MainColor">
<block type="colour_picker" id="[;icG=(wU$JjtN;Y3!7T">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="SecondaryColor">
<block type="colour_picker" id="3fNOZ*=TRfgb8aW23vGX">
<field name="COLOUR">#ffffff</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.drawDirectionalLightNoReturn" id=":N!lMyflO|DXPXkvvx!R">
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id=",IpyUl+*$W!B%}{i;@;m">
<value name="X">
<block type="math_number" id="0~lWavHT+9Y411E],{i(">
<field name="NUM">-50</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="f/iQErYhZ,D/3X{JGtX`">
<field name="NUM">-100</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="TPF96OWWzHfKt#)04Ba9">
<field name="NUM">-50</field>
</block>
</value>
</block>
</value>
<value name="Intensity">
<block type="math_number" id="+E}Jx.qJ1`.S3h[6+%MK">
<field name="NUM">2</field>
</block>
</value>
<value name="Diffuse">
<block type="colour_picker" id="lBW%OG[oDPe!/B*.x0(~">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="Specular">
<block type="colour_picker" id="*$j7V%%~~zj/T+G71DD%">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="ShadowGeneratorMapSize">
<block type="math_number" id="b}qIh!iJg-HAHZBLq4_Z">
<field name="NUM">4000</field>
</block>
</value>
<value name="EnableShadows">
<block type="logic_boolean" id="Ca%;AMi}=jm+6d+K#([`">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ShadowDarkness">
<block type="math_number" id="+rfYp/$yTvb!?J4/U{+f">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="U`AV*w=ri,yufr9m%AD0">
<field name="VAR" id="{KFi.~;$`.^:S~:pGPLG">resSurfaceMain</field>
<value name="VALUE">
<block type="bitbybit.occt.transforms.translate" id=",jCT7HOat4a0Zwiri#2X">
<value name="Shape">
<block type="procedures_callreturn" id="^rg*oH5cttihO(x.{E23">
<mutation name="createInitialSurface">
</mutation>
</block>
</value>
<value name="Translation">
<block type="bitbybit.point.pointXYZ" id="e]GkJZ3G-p(Gr1qPn6Ke">
<value name="X">
<block type="math_number" id="7j;WB6x#]%8/o}h6u]8W">
<field name="NUM">-15</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="L6UCqCWn~OXWDS_XJur.">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="wEJr{.=0`e*`#ICg_gy!">
<field name="NUM">15</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="q`E(_JYLNTLtS27gVHS0">
<field name="VAR" id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</field>
<value name="VALUE">
<block type="bitbybit.occt.transforms.translate" id="pfWa{4R#I~$ogaBuC),m">
<value name="Shape">
<block type="variables_get" id="1W?Yp?8k!cbk*uPX9`iH">
<field name="VAR" id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</field>
</block>
</value>
<value name="Translation">
<block type="bitbybit.point.pointXYZ" id="{1L93+shNFb*cKF,h,u(">
<value name="X">
<block type="math_number" id="13!/U7hd,C+,b=1HyGmg">
<field name="NUM">-15</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="^mQ$_53d=Z0Z^NmDJ1?e">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="+)ps3VPs?Tcl*NwjqvWJ">
<field name="NUM">15</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="jNbyiNew1z}R}$`g/W=m">
<field name="VAR" id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.offset" id="hcpro2*:1(Ji+UrNSwXp">
<value name="Shape">
<block type="variables_get" id="t19_|)mg8BmoF6-xY!$q">
<field name="VAR" id="{KFi.~;$`.^:S~:pGPLG">resSurfaceMain</field>
</block>
</value>
<value name="Distance">
<block type="math_number" id="b_6wKb*vsEHf|]mU44BR">
<field name="NUM">0.3</field>
</block>
</value>
<value name="Tolerance">
<block type="math_number" id="{gvo:YVzkyxxp+O9AE$^">
<field name="NUM">1e-7</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="V0r*[^mnIL]%*k1mx9f?">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.getFace" id=".[T0lx+!5#QYj[J$7x;w">
<value name="Shape">
<block type="variables_get" id="#LRlhX/p$G2#|Z(*^l!$">
<field name="VAR" id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="ywQ+~-ofxNlqrI3*SYzI">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="6USfM^i^L-63QUpZ(a^`">
<field name="VAR" id="5M/tUeLH#WBo8c9eS6B=">uSubdivisions</field>
<value name="VALUE">
<block type="math_number" id="O|.8z7}+?fk]4uhUzPq=">
<field name="NUM">30</field>
</block>
</value>
<next>
<block type="variables_set" id="aThZj],C::+7?U$=bpO?">
<field name="VAR" id="K|Koc`l+CDW}3!pNIo!l">vSubdivisions</field>
<value name="VALUE">
<block type="math_number" id="+:U6D3d,g#`w_+kDwxR9">
<field name="NUM">33</field>
</block>
</value>
<next>
<block type="base_time_async_context" id="s!$up=7i^PSSX:lpgW/m">
<statement name="Then">
<block type="variables_set" id="/{*ZrCh7f=U/wS~N1Vm[">
<field name="VAR" id="1u?USp-?Oz$`IwPQ*#hc">uMin</field>
<value name="VALUE">
<block type="base_time_await_return" id="4dt{cK=5Ho~mBa7bt,yN">
<value name="Promise">
<block type="bitbybit.occt.shapes.face.getUMinBound" id="2b:g7+MCbn@L@|ooWJBy">
<value name="Shape">
<block type="variables_get" id="T2,FwPbA}G_I,U6uj`Pv">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="e]WEZt%^ah[uecM1^yxc">
<field name="VAR" id="}6uDqz(r(CCA}*my._s!">uMax</field>
<value name="VALUE">
<block type="base_time_await_return" id="g0E6;wR2=zCKy2c2/~n5">
<value name="Promise">
<block type="bitbybit.occt.shapes.face.getUMaxBound" id="lQKlMQsDGAfuSzO`1N^#">
<value name="Shape">
<block type="variables_get" id="K.n.)l0/w!DMY6k[:C(t">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="AB|GBlcQnn!q0bvb$=a~">
<field name="VAR" id="@ROlmvf}?w%|vAC}5/Uv">vMin</field>
<value name="VALUE">
<block type="base_time_await_return" id="##`d}t/RBS1|y37~ES8k">
<value name="Promise">
<block type="bitbybit.occt.shapes.face.getVMinBound" id="l61u2q2Ql-=XrU){tl|~">
<value name="Shape">
<block type="variables_get" id="@IpwkcF+w*ExD-0D|B[Y">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="iJ~2r3MU0T7H,$DCBhlS">
<field name="VAR" id="B4GJ,/r+G;0*@cpcz.h*">vMax</field>
<value name="VALUE">
<block type="base_time_await_return" id="g[}?L;ew`jvz_W+..{eu">
<value name="Promise">
<block type="bitbybit.occt.shapes.face.getVMaxBound" id="}nV(gb@}lSq$hN4hgCTj">
<value name="Shape">
<block type="variables_get" id="Tu[3W_``zs+5S`vf%?5J">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=".B!/WX-Q.zxTRf*-MA`6">
<field name="VAR" id="XDJ,1#`g?AW/H4JSh$W;">uTotal</field>
<value name="VALUE">
<block type="math_arithmetic" id="6r+}lK*|ToUZji%^rqP0">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="*.Q6?Id[y1Ut+%V=oIUC">
<field name="VAR" id="}6uDqz(r(CCA}*my._s!">uMax</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="]FzQ$9d,D1whg{eNmkf8">
<field name="VAR" id="1u?USp-?Oz$`IwPQ*#hc">uMin</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="{WQUr;I_cADz)`,@.=mu">
<field name="VAR" id="VO{bl0#LNo4KR/~%?sQy">vTotal</field>
<value name="VALUE">
<block type="math_arithmetic" id="k).T-a|se!kdWsz_QuJ`">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="18;aaa$aV3_!d6gIdk^9">
<field name="VAR" id="B4GJ,/r+G;0*@cpcz.h*">vMax</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="6}:Z)Y`6i1%5R{b|D^y?">
<field name="VAR" id="@ROlmvf}?w%|vAC}5/Uv">vMin</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="^dmj1zZdDEJ@bLN#o.{C">
<field name="VAR" id="$p2$U}Vb3*GvO2k$]Om%">uStepDist</field>
<value name="VALUE">
<block type="math_arithmetic" id="bp!]v~7DF0W!OHWPn`/b">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id=")D#tk|zI=`;sH,{{KKLz">
<field name="VAR" id="XDJ,1#`g?AW/H4JSh$W;">uTotal</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="Ym8Q]RYoz[k#2Bise~j(">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="9|H#za6+H7}@6ZgN+QO,">
<field name="VAR" id="5M/tUeLH#WBo8c9eS6B=">uSubdivisions</field>
</block>
</value>
<value name="B">
<block type="math_number" id="o3ch.7#YgYFAm8)Vl=7a">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="yig2OSj1^Z-yIjIx3H`)">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
<value name="VALUE">
<block type="math_arithmetic" id="VMl.qmeHyibnjbzrfZgY">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="itMaa|EHFyGPrVfEW,n,">
<field name="VAR" id="VO{bl0#LNo4KR/~%?sQy">vTotal</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="hdh%@4L^zei{Nst}2ybe">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="~uF.`*2^sV.~PooZ1kSK">
<field name="VAR" id="K|Koc`l+CDW}3!pNIo!l">vSubdivisions</field>
</block>
</value>
<value name="B">
<block type="math_number" id="2y9Ta%V/u`R@o]iy5HmS">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" id="l-*8PuqTPA3pT+ctk?7S">
<mutation name="createRoof">
</mutation>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defreturn" id="ju+L5%,uFv/B=?j80zW4" x="-139" y="-533">
<field name="NAME">createInitialSurface</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="_qq]ad*hCt3SN~!l)u.T">
<field name="VAR" id=")JDd/$?9d@/)Q;8uHsOh">pts1</field>
<value name="VALUE">
<block type="lists_create_with" id="J6UG6uhyng{=#^lv,HDt">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="BYsKpqsK*_VL{8_9Iu{z">
<value name="X">
<block type="math_number" id="J1NvH,oQcAMPwKlbl4!_">
<field name="NUM">1</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="B`i!(^E(v!=:WMJcc]E:">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="h?tH2=,9*]7k*5,QwuVZ">
<field name="NUM">-15</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="r:4*n~::v(Mj4$96X?:j">
<value name="X">
<block type="math_number" id=";ovk!HX^FudgbJQ3O/:y">
<field name="NUM">-3</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="7Ii)Uw3z@d7lzs?@pyUJ">
<field name="NUM">12</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="#$P.(a%^b[hlk:o4s)le">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="zOvK0zvD.!V))KiDA{h/">
<value name="X">
<block type="math_number" id="a654DKllMCb@jU}.$Ars">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="toYld}iiZnU|xUau6I{b">
<field name="NUM">4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="p18muRg7cE^-lu(rFGCj">
<field name="NUM">17</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="n=s!sfT4LM;fk9EOr:~B">
<field name="VAR" id="OC![oF$0|+P/T?a;yJTj">pts2</field>
<value name="VALUE">
<block type="lists_create_with" id="HPRWL[Wh.3$a+Nom]k3%">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="1x4Q8PALrq`zGnD|0Y}h">
<value name="X">
<block type="math_number" id="UulK2dP4)q(HkSqvZ]6C">
<field name="NUM">10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="oMVzNUg/8}~8_C)S~EG!">
<field name="NUM">3</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="+eD!52(R?s@x|.(4g~?N">
<field name="NUM">-7</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="{@em]6C=,XqS4TlX~d1L">
<value name="X">
<block type="math_number" id="h9}EFOn^H22bEPcw*qzi">
<field name="NUM">9</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="q86K4_hi_)C`N9neVi1~">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="}TWYhqM1L}Qzv6c^Hy,o">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="6rv62!cP:(!KNF+eT9k2">
<value name="X">
<block type="math_number" id="*OU#e=p1Yr4LA?Y5EQ7{">
<field name="NUM">10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="4f.%fzV/Mq#|*.o,;)Rq">
<field name="NUM">4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="-tHrn1LP}W(gnupGz]mE">
<field name="NUM">8</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="RHRbQo8!$=-]H6aWkFx(">
<field name="VAR" id="~wVJAVr.~@%#AYbA:a-N">pts3</field>
<value name="VALUE">
<block type="lists_create_with" id="*V/el0#zm^jeZWC`=Rz3">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="5x5OaB_VeEaWc:p]3#K:">
<value name="X">
<block type="math_number" id="?SJ(01E^1v$:8U[8]evR">
<field name="NUM">20</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="26;.tZAMR/y5w*_iEJe;">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="#SFRVns:bGcx-?QNzJ!2">
<field name="NUM">-8</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="Nj)xr*z,^A1hUi:sGRY5">
<value name="X">
<block type="math_number" id="*B*PA@0s[1$n+azxDOly">
<field name="NUM">22</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="-L61yq/z8uxCw[zXU|$F">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=",G[MK6O3$B7_-YZ%LX_s">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="G_!3wqm[X[vg{aq_n7s?">
<value name="X">
<block type="math_number" id="1:y.yK(d[/0/xvL9N([K">
<field name="NUM">23</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="SxJPKg2@a#6Q4k/cMUth">
<field name="NUM">4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=":XE6CZv}y1SS,]Y,_Ik]">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="|1]N56Ni=HED)jY6GkSF">
<field name="VAR" id="SP{8^mo@bpDq_GT6lTS?">pts4</field>
<value name="VALUE">
<block type="lists_create_with" id="Odai^.gLO[IxT^%^;m[~">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="*)reQV/zG8~YIzi%5Px}">
<value name="X">
<block type="math_number" id="^]=sY5s06J[Zz@O+0(._">
<field name="NUM">25</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Ma:+dnys^1ci.mq@+Gz(">
<field name="NUM">2</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="l}Oo!QF5s|UR~/8@XUL*">
<field name="NUM">-30</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="wP!R)srCyHm33=S_OmOY">
<value name="X">
<block type="math_number" id="g:.CsIpW(K(:|S=gZ!f2">
<field name="NUM">30</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="g=Xs)`WhqV078-F_ie~+">
<field name="NUM">8</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="b%Z0byh6ykh5Oq$fP0/s">
<field name="NUM">-25</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="_3dkm8@;D3gPe+8Y16kH">
<value name="X">
<block type="math_number" id="Ct~$WT|6$ElK8$TvIEPB">
<field name="NUM">40</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="GuiwLMh)^Bh|nR8W4:t`">
<field name="NUM">4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="1svK(.;zvKd^!a1_QCSH">
<field name="NUM">-10</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="X!d)M*dMgk$46?X4/~@w">
<field name="VAR" id="SP{8^mo@bpDq_GT6lTS?">pts4</field>
<value name="VALUE">
<block type="lists_create_with" id="~2tAx06PVOd}CywA0VEV">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="=XAz=?-6v1W.{I*t(uP)">
<value name="X">
<block type="math_number" id="1njGl$6!3x@(~e+)Zf7R">
<field name="NUM">25</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="yR]^m[lP2+|1RV)F%Eed">
<field name="NUM">2</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="ndPOw{{@XK6$B/q]5!/y">
<field name="NUM">-20</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="IT,cAcS2W~XDEniV?y!8">
<value name="X">
<block type="math_number" id="1X8Culy0[xHHNS}m6LwT">
<field name="NUM">30</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="pK#$^dkJBsOGR0FH!m[J">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="7E9p[Kd0IP|[j4n:|@~Y">
<field name="NUM">-20</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="j9P+udYZ,A)Z,G#DnZ16">
<value name="X">
<block type="math_number" id="k,FMfTu=Rn_L;2e~$-G@">
<field name="NUM">40</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="e4Fa#g3h)Gxt^r=oUVR=">
<field name="NUM">4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="(ohp1my!d;?%AQ^pr.JY">
<field name="NUM">-21</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="`kFQi~A]Q9$yCA7`s_x-">
<field name="VAR" id="CBa30-Qz_F3Vu!Lw2u=|">pts5</field>
<value name="VALUE">
<block type="lists_create_with" id="`tXy@[wXzR(FbU$r,JbP">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="r}|#;P~A@|d^I6ZAwCCy">
<value name="X">
<block type="math_number" id=";j~).p+xEX#%PC+h6Pp:">
<field name="NUM">15</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="o]eB+ZbsIP`QkNS.WL.N">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="is7b)e,P{7v=NLki@des">
<field name="NUM">-30</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="gfRkVQ=wMo[l]kLJ%p{X">
<value name="X">
<block type="math_number" id="|NU)Fxt_ihA~is1k_K_P">
<field name="NUM">30</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="sPP+v:J7m(igjg4sp;Q%">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="hOV%_PdC,uaqkO*_|9Mh">
<field name="NUM">-35</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="e*7!4N5E)fa2$si849}K">
<value name="X">
<block type="math_number" id="%;`?C6Fs,!oK]vJPAPBz">
<field name="NUM">35</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="|0sO_t3n}_yYCU9`Qi0W">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="t9-!GpeV@*`WP,a(MX2m">
<field name="NUM">-37</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=".hSQd?g*6Tq-)eHHVerK">
<field name="VAR" id="D?;jOf0wLZbE4dA0t0jA">surfaceMain</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.loft" id="UW;Bu0qOJyjy7peVQaGo">
<value name="Shapes">
<block type="lists_create_with" id="3+eAn}}hSzD]a+mmZo1%">
<mutation items="5">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="K:8PoY;R^5m}ZDMbt6ks">
<value name="Points">
<block type="variables_get" id="ntFj^@#?fRicjNXMN~d5">
<field name="VAR" id=")JDd/$?9d@/)Q;8uHsOh">pts1</field>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="Y.D@17qU+5Gs$`(4be%4">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="]^ckaOaEDc}O#L6I_jCf">
<value name="Points">
<block type="variables_get" id="RiS@z8)k)g`Km+45o{H#">
<field name="VAR" id="OC![oF$0|+P/T?a;yJTj">pts2</field>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="VF3%k}u0+^7PP2y^(?}z">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="y.EQWitz7zOVim|hRkq{">
<value name="Points">
<block type="variables_get" id="Ej|,AxtEB{BGuRz+RN$O">
<field name="VAR" id="~wVJAVr.~@%#AYbA:a-N">pts3</field>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="6`0?!f_+DB:Ie.;//H37">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD3">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="!}G70,ZlT#b2$,|7O[s*">
<value name="Points">
<block type="variables_get" id="8nn+*MJR-E1jZqk0h0Eg">
<field name="VAR" id="SP{8^mo@bpDq_GT6lTS?">pts4</field>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="/++#!]nOa8kW;POS9Ud5">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD4">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="Vb+#tA-iE5a/N!m%CI)B">
<value name="Points">
<block type="variables_get" id="y,+rHrw^C;,!S+tZ`iCC">
<field name="VAR" id="CBa30-Qz_F3Vu!Lw2u=|">pts5</field>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="mQp{DAebGSZuR?nxK%67">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="j=V8G*(R@3lNN^21{$cY">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="m!TP!$p-g)09-Kz``u:l">
<field name="VAR" id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.loft" id="H={z8AjJ`HQ79/.7SZ94">
<value name="Shapes">
<block type="lists_create_with" id="HGnR^*Y4wI+7UJ#3/Dy4">
<mutation items="5">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="0|a*$wPd,Ski8TNZs247">
<value name="Points">
<block type="procedures_callreturn" id="W!#tv,Ni~9cMY7LIQ:_9">
<mutation name="flattenPointsOnY">
<arg name="points">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="=+d$yPkgYcy||MFcu0F=">
<field name="VAR" id=")JDd/$?9d@/)Q;8uHsOh">pts1</field>
</block>
</value>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="T=PA/T.$S=xRp(T+gMj2">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="z?#@sW5Wui~09;|J]]9`">
<value name="Points">
<block type="procedures_callreturn" id=")Dx$i=![Rhslwb[5BT/v">
<mutation name="flattenPointsOnY">
<arg name="points">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="SEmtZRb_BJnAhc.OUY09">
<field name="VAR" id="OC![oF$0|+P/T?a;yJTj">pts2</field>
</block>
</value>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="+k*-I{}Ew.,LN+_+|/9^">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="@Rp^[|@z,C;li((-MPI%">
<value name="Points">
<block type="procedures_callreturn" id="!O,GVV6ZCdsf)6(VeO2P">
<mutation name="flattenPointsOnY">
<arg name="points">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="r_.2)5)a*]hw23#^~[gp">
<field name="VAR" id="~wVJAVr.~@%#AYbA:a-N">pts3</field>
</block>
</value>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="yom}NTsxM(LW%Q~8E]]h">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD3">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="PQI1/auBnIox;W5bsWg8">
<value name="Points">
<block type="procedures_callreturn" id="6UFwp@@rZ_]02/tP%lxA">
<mutation name="flattenPointsOnY">
<arg name="points">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="Y=!)4BnL3+pv!j{62CT*">
<field name="VAR" id="SP{8^mo@bpDq_GT6lTS?">pts4</field>
</block>
</value>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="$w;=(H!^rHj,*Mh=]El3">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD4">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="7}E8[ES[X:[1bDUf%M,6">
<value name="Points">
<block type="procedures_callreturn" id="0EuC!5LgwK(/J+hl+5t4">
<mutation name="flattenPointsOnY">
<arg name="points">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="oCN*^/X6od4@G3bU/);(">
<field name="VAR" id="CBa30-Qz_F3Vu!Lw2u=|">pts5</field>
</block>
</value>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="H-V~-jSgIBZ+a[B3U$j,">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="T*j+TgR}uBHhUdEkM)nU">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<value name="RETURN">
<block type="variables_get" id="=rB]L`pDBn#lUGJd(w|^">
<field name="VAR" id="D?;jOf0wLZbE4dA0t0jA">surfaceMain</field>
</block>
</value>
</block>
<block type="procedures_defreturn" id="-=WWu0iLKdY#,[b36hq@" x="730" y="-535">
<mutation>
<arg name="points" varid="CDZ0yV9i^/I4D(1hh:5N">
</arg>
</mutation>
<field name="NAME">flattenPointsOnY</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="}Cr1=O3B7b3YtZS`-xlK">
<field name="VAR" id="[zm1f7j{n!%h6krajW07">transformedPoints</field>
<value name="VALUE">
<block type="lists_create_with" id="y[?(UIQnUgHRoJ|qJwdh">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_forEach" id="IPL/,{h5cJ$$Cj66ZS}U">
<field name="VAR" id="m$+ZiW?SBj/+-L2AGg1h">j</field>
<value name="LIST">
<block type="variables_get" id="8NJjDhMPMxS7mYyMHwQ6">
<field name="VAR" id="CDZ0yV9i^/I4D(1hh:5N">points</field>
</block>
</value>
<statement name="DO">
<block type="lists_setIndex" id="_(~Nq}cr+=xG^4|ES[%B">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="ziY%l6fFGtR8O]UGAfXW">
<field name="VAR" id="[zm1f7j{n!%h6krajW07">transformedPoints</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.point.pointXYZ" id="WG-]k^w[LKc,s0;z:!sR">
<value name="X">
<block type="bitbybit.point.getX" id="Do;)A0@vfw.]x$}Xz3dm">
<value name="Point">
<block type="variables_get" id="i?=}Y|Kr(tJQ9+U[OatU">
<field name="VAR" id="m$+ZiW?SBj/+-L2AGg1h">j</field>
</block>
</value>
</block>
</value>
<value name="Y">
<block type="math_number" id="x-HZi3Ga_FJ^SMHYi8/d">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="bitbybit.point.getZ" id="qN!4)2^%t32T/y14BOJz">
<value name="Point">
<block type="variables_get" id="mG;BOL#[R2w+,IE[CTRk">
<field name="VAR" id="m$+ZiW?SBj/+-L2AGg1h">j</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="RETURN">
<block type="variables_get" id="IIgd)RQG!pH]oPM5aQiQ">
<field name="VAR" id="[zm1f7j{n!%h6krajW07">transformedPoints</field>
</block>
</value>
</block>
<block type="procedures_defnoreturn" id="~91$Fsn%zTRQD3-tl^S9" x="1871" y="-552">
<field name="NAME">createRoof</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="base_time_async_context" id="CsQs]l,BYvw@4`qrn@A3">
<statement name="Then">
<block type="variables_set" id="oB3]uK}u~_$p;?z?geU(">
<field name="VAR" id="zY,-3Xz-hVmXZ4oCNr_f">uvsPromise</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.subdivideToUV" id="ryy1OvF!cH@wn_IkmA2{">
<value name="Shape">
<block type="variables_get" id="TZXi(/yyZIY6asR:OjW_">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
<value name="NrDivisionsU">
<block type="variables_get" id="3zTprA;y0={byDP,16Pu">
<field name="VAR" id="5M/tUeLH#WBo8c9eS6B=">uSubdivisions</field>
</block>
</value>
<value name="NrDivisionsV">
<block type="variables_get" id="g$KOz!y/Vna?D%{!BVuw">
<field name="VAR" id="K|Koc`l+CDW}3!pNIo!l">vSubdivisions</field>
</block>
</value>
<value name="ShiftHalfStepU">
<block type="logic_boolean" id="UjsS`h$#_;s2G(HUwH%u">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="RemoveStartEdgeU">
<block type="logic_boolean" id="PU`X8Af8yuNZmrXnoPxb">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="RemoveEndEdgeU">
<block type="logic_boolean" id="@K~Nh~:8^6qEK#/8E#8I">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ShiftHalfStepV">
<block type="logic_boolean" id="=r)6)Zk|HCm3+Puxdg?E">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="RemoveStartEdgeV">
<block type="logic_boolean" id="3:1rA8z;fp@0|Gsr;PL*">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="RemoveEndEdgeV">
<block type="logic_boolean" id="RIVMPOzEcj)$I~T;GNg.">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<next>
<block type="base_io_console_log" id="zvrm[.BOgur.!B-y(=IL">
<value name="Text">
<block type="variables_get" id="8r8E@6{wAGwZSmKQiP`{">
<field name="VAR" id="$p2$U}Vb3*GvO2k$]Om%">uStepDist</field>
</block>
</value>
<next>
<block type="base_io_console_log" id="f]APWtNthH]7(SX)pvPH">
<value name="Text">
<block type="variables_get" id="eZ),$wD;yE4QR0B6Y-)G">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<next>
<block type="variables_set" id="=AeAiN5{Pm!E93uvk`9v">
<field name="VAR" id="SXdUZ]|Yz(6xfEDCx_wd">uvs</field>
<value name="VALUE">
<block type="base_time_await_return" id="a^:7^@2#FPF|X0PCd9Y9">
<value name="Promise">
<block type="variables_get" id="%uN8voveC3bpR[37gPNc">
<field name="VAR" id="zY,-3Xz-hVmXZ4oCNr_f">uvsPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="R]BQtk1{KUh/vO8Vx66x">
<field name="VAR" id="VuD}(DXs1m6QMh7.FUZw">prlOuterTranslatedPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="Z:tG1]H4Y2+SPL,/PUw0">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="ml};7F*KuWL2m1MV_4$v">
<field name="VAR" id="[KonGC98P9UI$KTOaZ0x">prlTranslatedInnerPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="qzfs1Uw0GeBZ1Q-]}@CO">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="eH{Jtqi]k/`IQ=t+slg4">
<field name="VAR" id="|$PN]{}GVX[u:7#KZ}]j">prlTranslatedCenterPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="KFCiz/s,x!*Up.)bL[P;">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="%RR@yCMOliTCZP}VafP`">
<field name="VAR" id="z=G]bU^k~e{7NB?oW4^D">parallelogramOuter</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="OBZi}1w=6zwJiRZ+I?Pc">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="x|1CBg^R[v_s-^k=WI76">
<value name="X">
<block type="math_number" id="DIDe^J}7{-F=}zFQ+^^e">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="GL^@ZYY3G5HXFSyi.hk)">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="wb5Y?%][CKnhR0-o$X}_">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="~E}|b1.D(g[*U~Z`CG!L">
<value name="X">
<block type="math_number" id="v0h[h8d?lc?2Yb0`|I1%">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Zf@4za*$OjML*C1{qOBn">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="#/+fzrD*vwxZMpg!%C},">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="4L1T}BU[9S-FY(_06$aK">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="variables_get" id="$B%^hvh1CCR}FMLG!g?U">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="Height">
<block type="variables_get" id="TmT(^J5|S^,;dTsEPetF">
<field name="VAR" id="$p2$U}Vb3*GvO2k$]Om%">uStepDist</field>
</block>
</value>
<value name="Angle">
<block type="math_number" id="gg6/3gXMzTFK.+M{:Vml">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="^.F#QR8l9Uio.bsF#EO;">
<field name="VAR" id="i*GbLP4K*{nZ^r(aot$0">parallelogramCenter</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="$g0Xc.sor^6Xzu(QhS(5">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="A}p/k8cjY6T_@!feDD}!">
<value name="X">
<block type="math_number" id="m/Nx#S#(T,%tU#4d!NAt">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="lR3g_Y##8UhYSvwaX1@Q">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="0fugz~!vx3@^oPU_pWK9">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="HT(,S4+culR|h(:nM`E^">
<value name="X">
<block type="math_number" id="W+A^`?;Vv-`5`3j$)9%9">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="mE66_LC2H5?]ql#k;x)H">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="4iCWMc{GUZH9ib,4bF:#">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="-r-mQ-sTg,1W/h%Q(yd_">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="math_number" id="IaHdt!7f2R,a`+uzzI;u">
<field name="NUM">0.00002</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="6]7kV9:hI6Zmj!Yuy/Dn">
<field name="NUM">0.00002</field>
</block>
</value>
<value name="Angle">
<block type="math_number" id="-vMeTrcqbD)+g%l:Y5.;">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="9)A`%`F.#=V%ndYCcqC+">
<field name="VAR" id="r+/!Yi8+#X!-eR|s|rGI">prallelogramInner</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="vg+]|IAB|fm-%?(KgeP[">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="Phi8*p4=|/_5Hv7mcYTy">
<value name="X">
<block type="math_number" id="V72P[4e9Izj7|%Mf{:}3">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="6}*4]wF)pMWC).pr$E{J">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=";M)iuP9uvAU^:O@4=`3w">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="3W^z30`I4n%nh/xS,G,Z">
<value name="X">
<block type="math_number" id="q2mW,_r@o`~eZ[+PU.0H">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="j[5|cfUg]Y-)[+?24f_K">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="K$2j;)i44u8$GLWrrH_,">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="Z~p}}X[wOw-x.T#RL1H@">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="math_arithmetic" id="3p0Hg$wX*U]217x?Earm">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="#_yN=u#}JsvdwlU,t,[3">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="0QjV:_!TCH:jfYBGD0Se">
<field name="NUM">0.8</field>
</block>
</value>
</block>
</value>
<value name="Height">
<block type="math_arithmetic" id="y2{y^%]M7YRfwOnM4#qn">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="QM^Tmxy=I,^Tb)`7xUrO">
<field name="VAR" id="$p2$U}Vb3*GvO2k$]Om%">uStepDist</field>
</block>
</value>
<value name="B">
<block type="math_number" id="1q.MHX-SVEEKayHR)n;;">
<field name="NUM">0.8</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="s1;mV0MFE-mu+6E@Es0l">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_forEach" id="|=_O_O8=DIE2fm|g%h+d">
<field name="VAR" id="{MJv/x02PeZvH9A#m?Jo">i</field>
<value name="LIST">
<block type="variables_get" id="C~-1JA@y6gwH4(MeFPy[">
<field name="VAR" id="SXdUZ]|Yz(6xfEDCx_wd">uvs</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="+-a(/2}m}LwkuU@Y:2fX">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
<value name="VALUE">
<block type="bitbybit.point.pointXYZ" id="M,t/`7X2kWAc?k*waO@y">
<value name="X">
<block type="lists_getIndex" id="e5%k35~k4/(H:9L5c(fl">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="variables_get" id="t}Q2:~.e.E*HuhTY9?B#">
<field name="VAR" id="{MJv/x02PeZvH9A#m?Jo">i</field>
</block>
</value>
</block>
</value>
<value name="Y">
<block type="math_number" id="*@!qD]!%-yR5=8n]*t3:">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="lists_getIndex" id="=e4:PHT5uQ[lG9O0.a[C">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="N0%-.a=.V|a,/4VKbQ=C">
<field name="VAR" id="{MJv/x02PeZvH9A#m?Jo">i</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="#wtH85KfXo:9yw.H75m]">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="YIaFF^!0jNiL7MoN1yU=">
<field name="VAR" id="VuD}(DXs1m6QMh7.FUZw">prlOuterTranslatedPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.transforms.translate" id="d~oGvOuxuV?7Li=ODE#i">
<value name="Shape">
<block type="variables_get" id="iG_zQ^x86CT2I4*5u7Iu">
<field name="VAR" id="z=G]bU^k~e{7NB?oW4^D">parallelogramOuter</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="4RNf13zP;fZk@pccRVAr">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id=",Ds$A]U#*oKcsbA5q3SY">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="WkIQpIS9./wl2MpE58$n">
<field name="VAR" id="[KonGC98P9UI$KTOaZ0x">prlTranslatedInnerPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.transforms.translate" id="WvsLZAoEGM|VF.kF|xHE">
<value name="Shape">
<block type="variables_get" id="[dsMtJ66*m45PGqyTWVW">
<field name="VAR" id="r+/!Yi8+#X!-eR|s|rGI">prallelogramInner</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="(eBvl!(m=dNBf[5B4;I,">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="tRd~82O4_%+^m|;l=9Gq">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="Q]QZ;uO~w4oy.,x(~m8*">
<field name="VAR" id="|$PN]{}GVX[u:7#KZ}]j">prlTranslatedCenterPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.transforms.translate" id="%vokxyPh6b?#4we8Qa1(">
<value name="Shape">
<block type="variables_get" id="%;6zQ(6:Kkh%d:|y``j!">
<field name="VAR" id="i*GbLP4K*{nZ^r(aot$0">parallelogramCenter</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="Yx5N%~Nlev|Im9DcJ[ov">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="variables_set" id="Rfuw+6XfU{,jfXXgz0Ur">
<field name="VAR" id="[aGwA%Xg!t{a)tJ5}eD:">prlOuterOnFace</field>
<value name="VALUE">
<block type="base_time_await_return" id="7wxRZ.~)6BcX~?|qmR`z">
<value name="Promise">
<block type="bitbybit.occt.shapes.wire.placeWiresOnFace" id="[A%2k@sC*yap^O#5V}z*">
<value name="Wires">
<block type="variables_get" id="93{n4}2}|*CfuM5}+m^H">
<field name="VAR" id="VuD}(DXs1m6QMh7.FUZw">prlOuterTranslatedPromise</field>
</block>
</value>
<value name="Face">
<block type="bitbybit.occt.shapes.face.getFace" id="FG08Q)blH%0$7uPUzlkc">
<value name="Shape">
<block type="variables_get" id="E_E6Wl2.V~R}TLMmNKIN">
<field name="VAR" id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="QjL#._UobfPxEjBEau12">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="1X4:l=`AG:,].81J;k!R">
<field name="VAR" id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</field>
<value name="VALUE">
<block type="base_time_await_return" id="^Hy07fbP~E`V`h*-NeO|">
<value name="Promise">
<block type="bitbybit.occt.shapes.wire.placeWiresOnFace" id="vC](q=7D[3P*B+vS#NI4">
<value name="Wires">
<block type="variables_get" id="4=wzF32Mlj0/+7sJyQ6y">
<field name="VAR" id="[KonGC98P9UI$KTOaZ0x">prlTranslatedInnerPromise</field>
</block>
</value>
<value name="Face">
<block type="bitbybit.occt.shapes.face.getFace" id=";i~RVl.|BGu1(rAwy6Oi">
<value name="Shape">
<block type="variables_get" id="r+8StO]LfNBQV)_CQxR3">
<field name="VAR" id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="Er}3Cr4P^5d._2k:X/yA">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="]P0H)Jzm$G3k)ulq|qn_">
<field name="VAR" id="-bZIDPD6jxuP!iFMX[((">prlCenterOnFace</field>
<value name="VALUE">
<block type="base_time_await_return" id="jPB4`7gdslwnTMJDZzJ^">
<value name="Promise">
<block type="bitbybit.occt.shapes.wire.placeWiresOnFace" id="cNZhURwpItB@?roOCw;d">
<value name="Wires">
<block type="variables_get" id="~maF4)7^c8/m[S4?YP|[">
<field name="VAR" id="|$PN]{}GVX[u:7#KZ}]j">prlTranslatedCenterPromise</field>
</block>
</value>
<value name="Face">
<block type="bitbybit.occt.shapes.face.getFace" id="p6;LYau52dxu@m~-MG+X">
<value name="Shape">
<block type="variables_get" id="O7sF2rScE%rLU2kq90bM">
<field name="VAR" id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="Gbjwf,0j?RFuX:Vf.7%l">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="maO)e=c+F)st6x,THPJb">
<field name="VAR" id=",gKkM!R;f4g;gS^{t8fI">framesTopPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="IY@q.7C^8*b(trJm6d70">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="E;=#Jtzr9]pqz1{UyY!F">
<field name="VAR" id="AB[dWnl[/fDKtNAp#;HU">framesBottomPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="!H#XSMq1({S=B.NMgaw$">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="R#M^!xJTElt-ojmc8GR=">
<field name="VAR" id="jZX5)i68[Y)`yPY_noM^">windowsPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="a~O`iQ(+61vT(i)MMm}W">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_for" id=")mhw6F1N~g_5LuN@}*NW">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
<value name="FROM">
<block type="math_number" id="pN;l6@n]5u^y]HJ|6kX~">
<field name="NUM">1</field>
</block>
</value>
<value name="TO">
<block type="lists_length" id="qj7!kV^zRl:hlE)?+we5">
<value name="VALUE">
<block type="variables_get" id="ydL[+*-143sz.kT,nM:k">
<field name="VAR" id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</field>
</block>
</value>
</block>
</value>
<value name="BY">
<block type="math_number" id="LmO@}SN+5tR.,H9K0l+3">
<field name="NUM">1</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="g)P@[f6[ak@va2H:0PTr">
<field name="VAR" id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</field>
<value name="VALUE">
<block type="math_number" id="xHNtoG9*VvOJxB.u#gUr">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="controls_if" id="bW35iP{+u]}KpDY;~DeH">
<mutation else="1">
</mutation>
<value name="IF0">
<block type="logic_compare" id="q`|QOy}pc_9!)m1;eE!!">
<field name="OP">EQ</field>
<value name="A">
<block type="bitbybit.math.modulus" id="yCE.$PO*`eh?pF;n*:i0">
<value name="Number">
<block type="variables_get" id="TXuh`9K}vVyVD`,_ieg+">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
<value name="Modulus">
<block type="math_number" id="zZD06E4+t5.=X%%6nPxR">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="@PX]ty=UUtjQ+Puz+sq}">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="Eg@FNU^PR]E*BUyJZSIp">
<field name="VAR" id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</field>
<value name="VALUE">
<block type="math_number" id="jDB*/FYaU4Wo@y?Hsi3m">
<field name="NUM">-0.1</field>
</block>
</value>
</block>
</statement>
<statement name="ELSE">
<block type="variables_set" id="ar:ZF=8ur){^T@,}F.+x">
<field name="VAR" id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</field>
<value name="VALUE">
<block type="math_number" id="yxXDftNo|NJ1ZWfgol=U">
<field name="NUM">-0.2</field>
</block>
</value>
</block>
</statement>
<next>
<block type="lists_setIndex" id="YLwFx:PG_=*M`cq83Rg9">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="*N[,4S-hs;tHxI2qX!eH">
<field name="VAR" id=",gKkM!R;f4g;gS^{t8fI">framesTopPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.operations.makeThickSolidSimple" id="Z!5?#6tN58UB#uY1d^)@">
<value name="Shape">
<block type="bitbybit.occt.operations.loft" id="D;(IfsS/Rk14?-l6Bxa_">
<value name="Shapes">
<block type="lists_create_with" id="BC`x1Cow$jcMN[UrguWc">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="lists_getIndex" id="KH4pDuzeOkL4djdQPTYp">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="G[{I=3Qw7/Jec90Km/*C">
<field name="VAR" id="[aGwA%Xg!t{a)tJ5}eD:">prlOuterOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id=";XEM5L|(Ril8o6%4L*T[">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="lists_getIndex" id="n6T|EOCW=]4lvVPnbN$r">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="=c6URBR[~Z$qA(bF.Bu^">
<field name="VAR" id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="[2|g;Kdhz`tpUaxwFK7G">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="E5uI|U4i#Ej-[1uHoDRr">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="Offset">
<block type="variables_get" id="m#1V0t]]`h3n};Dg1nx:">
<field name="VAR" id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="8qx{ZnFtXdC~rj0zclr(">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="*(~a^*zvK5bwj@RXsGcE">
<field name="VAR" id="AB[dWnl[/fDKtNAp#;HU">framesBottomPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.operations.makeThickSolidSimple" id="_||o`DN{#Jty,N=d4M(y">
<value name="Shape">
<block type="bitbybit.occt.operations.loft" id="%yv=zKoElZFn`1Rm-#,@">
<value name="Shapes">
<block type="lists_create_with" id="spNyE@m(0_n9*OxBG|2}">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="lists_getIndex" id="aun[vH=YU)rhS7M/o%~*">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="CQ;yJoX|sAdX*.*_HM4E">
<field name="VAR" id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="3.evBP)Q@WK7um4U^P5r">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="lists_getIndex" id="DsgW@pw66jF_,BdygkUZ">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="$mq9/2T8cm}dsH7rdHY3">
<field name="VAR" id="[aGwA%Xg!t{a)tJ5}eD:">prlOuterOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="/.x(mi`b!@PgM%MD05IZ">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="KLsm`:(okFmO:0_Tg7;K">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="Offset">
<block type="math_arithmetic" id="kZ;pEF6[Nh#0xY{U:qMs">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="~uhP4)bj;i_~NCa*iImV">
<field name="VAR" id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</field>
</block>
</value>
<value name="B">
<block type="math_number" id="!b+H;_ep~(F/MY4evT*8">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id=".@O-h0rqe.)A#O#0%z^R">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="EGb[4}bG7j/43yhOVrSP">
<field name="VAR" id="jZX5)i68[Y)`yPY_noM^">windowsPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.shapes.face.reversedFace" id="WX_K4!kENH3;#Y)![lZ|">
<value name="Shape">
<block type="bitbybit.occt.operations.loft" id="=rLB:oi-q^UItsM.*=I)">
<value name="Shapes">
<block type="lists_create_with" id="e`!]{nn,+y2{`vsqy/:-">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="lists_getIndex" id="[|auIqrU7`5a-kR|i8zm">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="]X6o:@Lk+lNzRhG893?k">
<field name="VAR" id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="7`tHRiTJJxCnSuP~PUt]">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="lists_getIndex" id="88(P|%kQ:puB+L+yKM[M">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="^]_HJwPSk4fKx,VA6Fo[">
<field name="VAR" id="-bZIDPD6jxuP!iFMX[((">prlCenterOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="]W{)LnY9da*Ahbd6WC,I">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="bBRquJMD(3DrH6TEKR;O">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="variables_set" id="BT?x^*{r(_K/#NCHF)!6">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
<value name="VALUE">
<block type="lists_create_with" id="AoW)Ux2vp+1n1~HuvImg">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="QM~opaA(DQI2`P:q!o]6">
<value name="Shapes">
<block type="variables_get" id="xL1I,vt/)HZr@-pR+B!g">
<field name="VAR" id=",gKkM!R;f4g;gS^{t8fI">framesTopPromise</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="|78tHs6JP$CSk)S6OE:P">
<value name="Shapes">
<block type="variables_get" id="|TFJWb?{qJ75(_4SVnop">
<field name="VAR" id="AB[dWnl[/fDKtNAp#;HU">framesBottomPromise</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="i1rh;eh8dI]|@gDxP#~T">
<value name="Shapes">
<block type="variables_get" id="z7CUmG|-?o%/t{n%-VEX">
<field name="VAR" id="jZX5)i68[Y)`yPY_noM^">windowsPromise</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" id="%]qRLAU:_m:m^QQYE}Bf">
<mutation name="createColumns">
<arg name="roofElements">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="SF=2@C,@=+m#wlBdh6BY">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id=":W.^|z$(WGWsLeJlw(aV" x="3492" y="-538">
<mutation>
<arg name="roofElements" varid="(w_I)eNw(w^A2^!fDaoR">
</arg>
</mutation>
<field name="NAME">createColumns</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="base_time_async_context" id="Y`~l+CuW/+_T2{OE%_yZ">
<statement name="Then">
<block type="variables_set" id="-JFB0C?jqRB)As{;8?Y5">
<field name="VAR" id="$yivl^(Am[EkP_A06+[|">uDivColumns</field>
<value name="VALUE">
<block type="math_number" id="zIDb,g?@TU4AK{Ax=b+Q">
<field name="NUM">6</field>
</block>
</value>
<next>
<block type="variables_set" id="qDV=172Ay~?*yoJYDs}w">
<field name="VAR" id="^rvuq!wt/JF*90FsJOeQ">vDivColumns</field>
<value name="VALUE">
<block type="math_number" id="n-7oR%VQ./h^2m_pRBM(">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="variables_set" id=")5P={|[c$LRM9g=,cwsc">
<field name="VAR" id="/%(HsU-ilHZm{!Zif:#Y">groundFace</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.getFace" id="A{kgn$fN4d./FfS`$/.:">
<value name="Shape">
<block type="variables_get" id="r_u@X$H^QyD+8p%OV~/I">
<field name="VAR" id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="O=%CLqw;1(VQyNTY_:)y">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="O+Ut{v0v/7?)IpbGV8k)">
<field name="VAR" id="*lx^8ZUn[Q^L|qSZuhHY">uvsGroundPromise</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.subdivideToUV" id="q$wR7z3kIOIJ%)|~LM^N">
<value name="Shape">
<block type="variables_get" id="LcH+3jhfUNutlxL-s[S0">
<field name="VAR" id="/%(HsU-ilHZm{!Zif:#Y">groundFace</field>
</block>
</value>
<value name="NrDivisionsU">
<block type="math_number" id="fWr(Yiw5!9o*/FBa#cAM">
<field name="NUM">3</field>
</block>
</value>
<value name="NrDivisionsV">
<block type="math_arithmetic" id="oYq:Yd;cT,UQiz;a296=">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id=",KDXKD!BS%2.!jgnOJ$D">
<field name="VAR" id="K|Koc`l+CDW}3!pNIo!l">vSubdivisions</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="f,BqYKm0r-1b!b@%$e;2">
<field name="VAR" id="^rvuq!wt/JF*90FsJOeQ">vDivColumns</field>
</block>
</value>
</block>
</value>
<value name="ShiftHalfStepU">
<block type="logic_boolean" id="IMnuG)}8%H99Waswpbup">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="RemoveStartEdgeU">
<block type="logic_boolean" id="Yu]DCGNCV1G/Zr{0;*1n">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="RemoveEndEdgeU">
<block type="logic_boolean" id="M2`WopN23;;#N:B*(jEP">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ShiftHalfStepV">
<block type="logic_boolean" id="5zPSj`[U2*SjJ.U-{8I?">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="RemoveStartEdgeV">
<block type="logic_boolean" id="7RQjlGg:]NyDm|)4n66}">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="RemoveEndEdgeV">
<block type="logic_boolean" id="eMFxngzsdG_cG$:L#/BC">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="VA+APF:$uuih/Uy~uyrX">
<field name="VAR" id="TdcI-~EpnVX}!RhQtDWM">wireOnMiddleColumn</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="chULa?@$cs(3|F%+RheF">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="Y{?}|3(AzfmzYo{TZhb[">
<value name="X">
<block type="math_number" id="^[PqG`@Jihs*bW]j0;Pa">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=")(=fWBhn~g^C63ooMys5">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="$XuBJ02C?i#.7%g7:SPt">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="]o_JdqlZs5aHIG$UJhUV">
<value name="X">
<block type="math_number" id="SoWA`v3$22Qy(4!^qvfH">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Mc9uTXp;yj6D3YgZ60a_">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="nC[Vm_=}JW)@2}0i@ec6">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="o2,+qgX/whbt}6/AcnP1">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="math_arithmetic" id="mq`fc++yKn((;kL7JgNK">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="-BZKb`TNMc}PIM)#.48]">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="L,.d7`Pb+R]F$,`l`GrE">
<field name="NUM">4</field>
</block>
</value>
</block>
</value>
<value name="Height">
<block type="math_arithmetic" id="g[0J07(q}x4zwMZb$Y9Z">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="wj|g$V[[dwmFkrL0Fk-+">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="H~qK71(wmFK0y9j#R@|}">
<field name="NUM">-7</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="/$Vb[R?vN4#RA?)F:(:y">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="+U$vEXZZq%3x,;ACHmc$">
<field name="VAR" id="6Ev54^^AhgVN#L,t([Zf">wireOnGroundForColumn</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="9vKmrB+L_*5^*N81Cj9`">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="M8PZ{K:y{tv3R~LVk@2!">
<value name="X">
<block type="math_number" id=".QR*ZxXt7uWe*5i3{[zj">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="qdTYA)Y;+-uM%uIQr.Xs">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="TL7%m6a/sBg3SZuT8F%n">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id=".7@XbQMZ`5EDP4!$AuG5">
<value name="X">
<block type="math_number" id="[1v-pjIAK?V=A{{ocZH?">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="qvViHgI)IZ(4q,Q+Zfl{">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="{XW?fd5[`K1sKE^}frG#">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="j)CwlJ^r2;^Sx?X,=B?]">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="math_arithmetic" id="EeD)D3J}l=1`kR8,#^5B">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="U#md1@*}09C{,6Fo*a-^">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="JAEl@P8G#sO~WE#n+Fk-">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<value name="Height">
<block type="math_arithmetic" id="ey,SmD{.yu`yn,X8|WcI">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="z[uqhVn)KAVv6g%t%@_q">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="9sxe%^B{xvCT[nvH?6xd">
<field name="NUM">-3</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="aFTw;2G3g!--ukodn]gu">
<field name="NUM">15</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="ns;XtZ;Is8ysDh$1G67z">
<field name="VAR" id="V/60%4QKJ38i9{K=U9N,">wireOnRoofForColumn</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="!fjkbpjtqP@}LM+cl.FE">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="/uTQE?M8)LhOQ(T/791B">
<value name="X">
<block type="math_number" id="]KmO{FejHTlH]]3K%tcj">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="#E@4)y5ha[?LB[Usfh~X">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="E]::F3#*E{,=jU$ws(z8">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="JG2.ekbs+|,rKG20,(E(">
<value name="X">
<block type="math_number" id="*(3nw1:Q~5cG4%nj[~^V">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="I;=UQ.Rr-!{pdtw}pY=5">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="0?C;;U3$@%n,2xCR_QrJ">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="MRkke!W#vi_SQYI*)@46">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="math_arithmetic" id="*zlFQt?dj.5VP@kX?p)?">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="ZPv#xB,YegD5jvYl9Zio">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="uXY*)G-I6Sn|B~Pp%RBm">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="Height">
<block type="math_arithmetic" id="{)qat%5a},@]{og|9Vn@">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id=";/g!R1q[J~6}*Pn%5_0t">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="v!aqRd[YbSwiIgk7cqF,">
<field name="NUM">-8</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="D8`iJ}D_GO+(]!W$SrGf">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="/zH=IV(eTk$9;552Bd@V">
<field name="VAR" id="!eaT~+j[NqITtgX2;rg[">faceToEvalColumns</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.getFace" id="og@z[pK)OEh73n6x|%A#">
<value name="Shape">
<block type="bitbybit.occt.operations.offset" id="LZZ`geA;VpWDn]2!`mX+">
<value name="Shape">
<block type="variables_get" id="~OZ+3m@d$(YLM922~3#(">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
<value name="Distance">
<block type="math_number" id="n_#u|=O?~J`xLYn;%+$J">
<field name="NUM">-0.23</field>
</block>
</value>
<value name="Tolerance">
<block type="math_number" id="9jPfM=CRUfgJeNo9gCcz">
<field name="NUM">1e-7</field>
</block>
</value>
</block>
</value>
<value name="Index">
<block type="math_number" id="x`{hAPysj|nLk-vZyb:z">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=",QgXQ~s/m)8-`Tb4rRnc">
<field name="VAR" id="cSfBm{4/in%#SI5u3ZMy">uvsGround</field>
<value name="VALUE">
<block type="base_time_await_return" id="XRxtrk)6s?h_iG~N+fMk">
<value name="Promise">
<block type="variables_get" id="|U?PRQRv|:,p_7js];i.">
<field name="VAR" id="*lx^8ZUn[Q^L|qSZuhHY">uvsGroundPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="u/HtNRL|vmV$h;wwEB_1">
<field name="VAR" id=":rhC^bPjxDTND+_A6FP8">columnBase</field>
<value name="VALUE">
<block type="lists_create_with" id="S$+.oR;YST8[BO`:oMQ3">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="fX#F5]D/S/tyoZ$?K4|M">
<field name="VAR" id="b@rIR_v#^_UW:xWos{C#">columnTop</field>
<value name="VALUE">
<block type="lists_create_with" id="ePnKUzkup49^FTeACaIY">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_forEach" id=";DzU6|$-J9/BIw1H[RCd">
<field name="VAR" id="{en%a36.!YbF*V[[j7?|">m</field>
<value name="LIST">
<block type="variables_get" id="v)Z+:~G}~)?,?`dtz+6`">
<field name="VAR" id="cSfBm{4/in%#SI5u3ZMy">uvsGround</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="L5G1rV[JQeLe1TYVMC)J">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
<value name="VALUE">
<block type="bitbybit.point.pointXYZ" id="f|vF43[]uoNefWJ;B].1">
<value name="X">
<block type="lists_getIndex" id="YLW4uiU?[6^c#_b;172l">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="variables_get" id="F$#Bf/6.F^Y=!;Po(Q$]">
<field name="VAR" id="{en%a36.!YbF*V[[j7?|">m</field>
</block>
</value>
</block>
</value>
<value name="Y">
<block type="math_number" id="a8}.!3VJfb^qKS[*|7k:">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="lists_getIndex" id="BeYY?fyIz=xBH(*U(6N{">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="!}I*3F6.oCNjzuMA]*mZ">
<field name="VAR" id="{en%a36.!YbF*V[[j7?|">m</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id=")eJ{L|Jzv@g,fwkX$|go">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="9k:!4MCMQ@uQK$@@Xk|k">
<field name="VAR" id=":rhC^bPjxDTND+_A6FP8">columnBase</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.operations.loft" id="pSi*)}BQt^c2:Q!+XXBw">
<value name="Shapes">
<block type="lists_create_with" id=",`4hoHT6r_IzvYJ={6A#">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.transforms.translate" id="-h?zS1l}NWXAE9VsBBLr">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.placeWireOnFace" id="f.[x^Em/P=fq:%~F3=)U">
<value name="Wire">
<block type="bitbybit.occt.transforms.translate" id="WVav%fSX96.rsm1CA3I6">
<value name="Shape">
<block type="variables_get" id="/)qs(q1R6-1Tmm#SAc(E">
<field name="VAR" id="TdcI-~EpnVX}!RhQtDWM">wireOnMiddleColumn</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="o^BykVriW4za}1Nk(8!;">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<value name="Face">
<block type="variables_get" id="]hvs9s/ImVbOd[ARQ(p$">
<field name="VAR" id="!eaT~+j[NqITtgX2;rg[">faceToEvalColumns</field>
</block>
</value>
</block>
</value>
<value name="Translation">
<block type="bitbybit.point.pointXYZ" id="YlNFde]_l`ib@V^ps/|a">
<value name="X">
<block type="math_number" id="f;fo+Wv-Y=h61jUI{@cR">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=")e_:y:wi1gdsM5Z33bTU">
<field name="NUM">-1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="sx~qOBoKanZ.8m{QQ}Iy">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.wire.placeWireOnFace" id="^BJu#ue^{db;`z+dl,kg">
<value name="Wire">
<block type="bitbybit.occt.transforms.translate" id="Lkn@ddIy`Q|cEfSmBP=l">
<value name="Shape">
<block type="variables_get" id=",#p,)~vhCvhK|!0`||CE">
<field name="VAR" id="6Ev54^^AhgVN#L,t([Zf">wireOnGroundForColumn</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="HY/?zqx:g4tsZ4Jwq(tp">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<value name="Face">
<block type="variables_get" id="#/Oow5RsAktzcmWJI57:">
<field name="VAR" id="/%(HsU-ilHZm{!Zif:#Y">groundFace</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="2G%l26`1XlA`fI:8@#X~">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="0CIb]bE,!TB:W|n4fe2t">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="!0FRqbo3w(e2R3o-qJKK">
<field name="VAR" id="b@rIR_v#^_UW:xWos{C#">columnTop</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.operations.loft" id="WqrmowW]GPxpm*h!-Mz7">
<value name="Shapes">
<block type="lists_create_with" id="3Q:?m@ry@titP:$|PLOs">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.transforms.translate" id="Nx1yqoA?ERRzYEIWu,$Q">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.placeWireOnFace" id="GpM5C0F=H/hyR;^S!*C?">
<value name="Wire">
<block type="bitbybit.occt.transforms.translate" id="_G=;hK~o)p47qn=XBe^0">
<value name="Shape">
<block type="variables_get" id="v7{6n|1E~F+lK*6TL}O*">
<field name="VAR" id="TdcI-~EpnVX}!RhQtDWM">wireOnMiddleColumn</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="1TfhK-RDI#Nh:ok7a|zk">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<value name="Face">
<block type="variables_get" id="5x]Sz]?3fn(Z#H)=6|ba">
<field name="VAR" id="!eaT~+j[NqITtgX2;rg[">faceToEvalColumns</field>
</block>
</value>
</block>
</value>
<value name="Translation">
<block type="bitbybit.point.pointXYZ" id="Hw)Y5G36U;^cbKjW-|F0">
<value name="X">
<block type="math_number" id="~13l}PHGtN-p3SKi+uK:">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="/5qONZjwvcN03E:(Fx*=">
<field name="NUM">-1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="2E{,b@1xj=dq=mj#ycag">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.wire.placeWireOnFace" id="/:g-),Q$#5deltG1UH^G">
<value name="Wire">
<block type="bitbybit.occt.transforms.translate" id="eV`elciuax/)zq,+?|5n">
<value name="Shape">
<block type="variables_get" id="X4t_,2wKaU7aAPS$h:xL">
<field name="VAR" id="V/60%4QKJ38i9{K=U9N,">wireOnRoofForColumn</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="YZh80~2vgtm$Y]h-s@r*">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<value name="Face">
<block type="variables_get" id="c_%q)]|Rr?N8HiZ-bA-r">
<field name="VAR" id="!eaT~+j[NqITtgX2;rg[">faceToEvalColumns</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="Q1kM*/tp/=NAS^J?04{J">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="variables_set" id="F!}fIaRtwlqbp`5}iW6A">
<field name="VAR" id="Obk[vz^n7Mv)Cg?T^FJ^">columnElements</field>
<value name="VALUE">
<block type="lists_create_with" id="zZ]j1kd;G]},!}8Esn6Q">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="?f58nX1N?$B!4erftLD|">
<value name="Shapes">
<block type="variables_get" id="L$TdvB:D=Wv-P}#5Pp[9">
<field name="VAR" id=":rhC^bPjxDTND+_A6FP8">columnBase</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="[,5g;mH-Ta}e7Dp+iLr9">
<value name="Shapes">
<block type="variables_get" id="2oOF$_Izs#(ti8~k,Pxk">
<field name="VAR" id="b@rIR_v#^_UW:xWos{C#">columnTop</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="cgDhE11NfE#qPi,YOr0F">
<field name="VAR" id="No-.@!ajW`iZNhtYFs:|">walkway</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.makeThickSolidSimple" id="j3A5!92q#w_^$tt~*@tl">
<value name="Shape">
<block type="bitbybit.occt.fillets.filletEdges" id="7f]M8|nS^O(eaaF#6EB3">
<value name="Shape">
<block type="bitbybit.occt.operations.extrude" id="FK59LnodoH(p5u~1/Kg`">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.getWire" id="qZkl{1DU:a,Lw+F4gw|Y">
<value name="Shape">
<block type="variables_get" id="y7=OHgQUvQ2w]i@Q(Ds@">
<field name="VAR" id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="5jG!7RHl%OQ)6PL[U_?,">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="5VT#@,qwV||dP$}mDs[:">
<value name="X">
<block type="math_number" id="i=FS|Dt|zgU~E+y;mR~p">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="ugI?{B45#~M4uUs_2uO`">
<field name="NUM">0.2</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="i{-x*n-NU]n[TRWD8de;">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Radius">
<block type="math_number" id="nXwZ..j~tW.5HOT0OHi-">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
<value name="Offset">
<block type="math_number" id=":q1/lXs|C8,$p]STB1zw">
<field name="NUM">-4</field>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" id="FxP7qO(:)*S1hNAF?B@z">
<mutation name="drawEverything">
<arg name="roofElements">
</arg>
<arg name="columnElements">
</arg>
<arg name="walkway">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="a~J$`b_8B]h*W1TSflTk">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
</block>
</value>
<value name="ARG1">
<block type="variables_get" id="wzVY(AE|ROsu[HjLm{tl">
<field name="VAR" id="Obk[vz^n7Mv)Cg?T^FJ^">columnElements</field>
</block>
</value>
<value name="ARG2">
<block type="variables_get" id="V[uMYmo37/@Z$huEm*y;">
<field name="VAR" id="No-.@!ajW`iZNhtYFs:|">walkway</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id=",I!i8qQNgzepZ=RV[-1;" x="5453" y="-601">
<mutation>
<arg name="roofElements" varid="(w_I)eNw(w^A2^!fDaoR">
</arg>
<arg name="columnElements" varid="Obk[vz^n7Mv)Cg?T^FJ^">
</arg>
<arg name="walkway" varid="No-.@!ajW`iZNhtYFs:|">
</arg>
</mutation>
<field name="NAME">drawEverything</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="base_time_async_context" id=";B#x_pc4x:LE={f4Ul0?">
<statement name="Then">
<block type="variables_set" id="!xZ;GVarH1oL6t:`q~-f">
<field name="VAR" id=":{:pInCv~v4mN}VULXJe">roofTopOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="L+J4Ngjqlk,PMVR/`d}a">
<value name="Precision">
<block type="math_number" id="y7Ih2Is-r?:@,-c1hBH%">
<field name="NUM">0.005</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="/vN0HpK+dlOq)y2N*lb`">
<value name="Name">
<block type="text" id="gMA,(,FNTlP(]hSP]pEF">
<field name="TEXT">TopRoof</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="DtTjt+rM6@(N6gp`9B9$">
<field name="COLOUR">#333333</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="bY6+e[$2|*l%r`Jx.y(f">
<field name="NUM">0.6</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="Bg%F-*l7Lhqo1K#OWl~n">
<field name="NUM">0.5</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="KTzPts?vD`zd=LT^YPc%">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="hE|ACps}aCI6BK3`~bmM">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="A#/2-+#*ugG#yT|vz`@;">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="6u`2~Pgas]6q,J~x.oR9">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="c/_}#+FhB/5cy_j%S/D*">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id=":M~o{n53%C!Ik%J{j^]-">
<field name="NUM">0.05</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="zfM]{!gKdfr{5i$mu-Cg">
<field name="VAR" id="uTzH((#w}Ij;zzjur!5F">roofBottomOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="^H@@r0W6o*o*)8`obj32">
<value name="Precision">
<block type="math_number" id="vorD8D;:EmA@iXnjwr9N">
<field name="NUM">0.005</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="ZuOBVU8tNXc8`b*0z$gF">
<value name="Name">
<block type="text" id="d3uBVHWHVaF0eci;E?vR">
<field name="TEXT">BottomRoof</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="6L-]/ySk[Yqa#6`6YSs[">
<field name="COLOUR">#6600cc</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="/g0SeOUJ?!X-`CkXVXrL">
<field name="NUM">0.7</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="owZ|SvtRXCzTGjq0S=nU">
<field name="NUM">0.4</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="_=*v%VMr=i14hqrzGyT*">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id=";s@VpMXW1p{(ZT~28!k6">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="]G*0/z*0~#O)Fva-$jf.">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="av~|vW=A(gSM0MW)z,+E">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="3=93*#-6r3oRn$U;Bbza">
<field name="COLOUR">#333399</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="{iB{y)ga{GYM@fm?qE7I">
<field name="NUM">0.05</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="-Wr,`Oe,a-%(/t?ukEio">
<field name="VAR" id="_sI/G~-@l^Q$uG9O*Iee">roofGlassOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="VVZVq]N6hr}J+vS((E]~">
<value name="Precision">
<block type="math_number" id="BvVxbB;294j_pme(aa-A">
<field name="NUM">0.1</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="),.g)%to_j;rC32=X2,C">
<value name="Name">
<block type="text" id="Hi;N5($S|80IEi8BE1T5">
<field name="TEXT">Glass</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="WkOe!S^Nm~NZYu}Hc1bR">
<field name="COLOUR">#3366ff</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="!h!2sY^BQoJz*/a!5Y5Q">
<field name="NUM">0.7</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="rfCm.NjwTg]s.WW*.bqv">
<field name="NUM">0.1</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="wtq#Y4Nq!=`*2rW?@kAg">
<field name="NUM">0.5</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="e,X6)wOZRT=1[m@WN?,L">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="ugp=6!poL*`Szz[$`flJ">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id=":UCANEIAn0_Fbcal89Be">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id=".$Kcb)}/RbJkIs8;wcH%">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="W04:=z8UX}t~p0PSjFyK">
<field name="NUM">0.05</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="Drf`E@j`euHVGjW@6X47">
<field name="VAR" id="(c**hXH!56[y}eFm`:om">columnBaseOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeSimple" id="0nwCZ%s!AI4*4$w,!VvP">
<value name="Precision">
<block type="math_number" id="ULdDDv6N#wd;RD*XApjc">
<field name="NUM">0.05</field>
</block>
</value>
<value name="DrawFaces">
<block type="logic_boolean" id="?VPEa{JIlzcnhVy+Gv9T">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="FaceColour">
<block type="colour_picker" id="AOdg#d}0O.SrS-ApcBD|">
<field name="COLOUR">#0000ff</field>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="E|%0Yu.7ZjGsJB(`)~cC">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="qIaFl|B0h0bdO=9~/54o">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="Koz!VX$6W%(+GoNDBSPa">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="9IVO+T-E+Q^7CLY|I(ve">
<field name="VAR" id="Lb#;CZTb.U=]?/FE0R}d">columnTopOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="y[zlH2zbq^}/?6IZ-;N.">
<value name="Precision">
<block type="math_number" id="bmcs~.X|XhPjKmjwcHjZ">
<field name="NUM">0.001</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="|reF8kzRjxZOf!|_7:|[">
<value name="Name">
<block type="text" id="C2wrm:(U$b6~gLMf?zJK">
<field name="TEXT">Custom Name1</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="KpoPy^b%9,J94oZMUMMH">
<field name="COLOUR">#6600cc</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="M$UsYfI{2@daMygeZ?%k">
<field name="NUM">0.6</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="OX8X(0T.uTrjbfXTr@4h">
<field name="NUM">0.5</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="_32PRgU}9EaHizkw:qpC">
<field name="NUM">0.1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="Klx*fFtoI6eQt%Nm|Y_r">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="XK,|IU:A.)/MO6/1M7R8">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="dUd7cgzr~$!QdIR$tQd}">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="9~_($YjtX-$*GPFjRUo|">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="x$?$Nnsb7BL71S;LWyve">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="vbUDkFJI(d(8%/bv3tv_">
<field name="VAR" id="mvsRC!k3oyO4_t%xUm=B">walkwayOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="EtI-vrEYcU?q4Iaz#o29">
<value name="Precision">
<block type="math_number" id="wqEvFIQ%^Ct*4Hi(Juh8">
<field name="NUM">0.001</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="8SQK)??UeP0+(s(VFry;">
<value name="Name">
<block type="text" id="~w%~nwq6coVE)+^7!Y9H">
<field name="TEXT">Custom Name2</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="^/[Wid?*r3)z%Hl-E@_y">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="Nb?fS4Li{s1oVRe0rf~p">
<field name="NUM">0.7</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="caW)Kt(gWZ#_jjZ*8_hr">
<field name="NUM">0.4</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="(v]xw.]^UJ!gp;Nq!QJi">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="B;%4}|-~V~@I,jl?C9;)">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="7J,7^FZS`ntQkt|_X7`G">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="YE(@pDHaidbS/!6m]~[Z">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="x[DX0r4`h|;$MS)nP*^S">
<field name="COLOUR">#6666cc</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="aC@KBj=Ub^7HxWUC3F[|">
<field name="NUM">0.05</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="td4hZ8Pu@k9=i#gXEuDs">
<field name="VAR" id="%JzY:cK3~3fxNUBozxc8">groundOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="4t);#jaAzq$kYGd}.5=F">
<value name="Precision">
<block type="math_number" id="S?%v7H?e`-?0e|hBPDC1">
<field name="NUM">0.05</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="^1gt$?uG;x+PD:2Nw3i2">
<value name="Name">
<block type="text" id="h-ESyIQObIpo?}l+)tgn">
<field name="TEXT">Custom Name2</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="tLUfB]QsZG40mA-ozC[7">
<field name="COLOUR">#3366ff</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="`+5PwCqO+:xeWoZ*h^Kc">
<field name="NUM">0.7</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="fKLz{aSlA,4XENz8o/q5">
<field name="NUM">0.4</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="JC%N7pF|nrscsb!.TZcH">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="AbXODPkg.aT!tR7WxoiW">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="XVmaOxrmxEzx_bk3mDTD">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="}sAx7Vm_mHr)~:rn=Y-{">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="j)(b^j;hCw+zm_J?/y=W">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="0Gaa2}V0OFf7[Y9Fw1/K">
<field name="NUM">0.05</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="lBi@1vx_sR)H+G.B~zI;">
<field name="VAR" id=")jFwhfJ64YHbuNK27:RE">roofTopMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="oo-zcEuxrah#r|@#i*Ne">
<value name="Entity">
<block type="lists_getIndex" id="+C+?#AIwG9)3fT0%,6Gf">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="!_t`FtWNC.b?gwO/F6p=">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="1B}IRa.Gv`0=P~x%+d0a">
<field name="VAR" id=":{:pInCv~v4mN}VULXJe">roofTopOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="c1]bWeu6+rB3=VbS_Q]u">
<field name="VAR" id="0G}AZ%IK~JyC.!ows@Uc">roofBottomMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="xymiMbn`;y75b!1rD2_+">
<value name="Entity">
<block type="lists_getIndex" id="S!,f7bvb]Axx,^GW/zd|">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="Q?4aJdtkd86STUM5zo@H">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
</block>
</value>
<value name="AT">
<block type="math_number" id="1Jp$P*H7gY;*tsPEyF/2">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="7*EQFk5r~curYQOxaT7E">
<field name="VAR" id="uTzH((#w}Ij;zzjur!5F">roofBottomOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="W^$X8#MMteI*mTvgN@(l">
<field name="VAR" id="f$6G-eXhk_lJ,Cn=?1iA">roofGlassMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="(i45ib`7k6s:I$_1$eND">
<value name="Entity">
<block type="lists_getIndex" id="rW7T/X}uZnCrVpxx0efR">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="variables_get" id="3mhD;i%Ak[AVn})pP7b@">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="OvMt;4v[*DC]~lI~!D%f">
<field name="VAR" id="_sI/G~-@l^Q$uG9O*Iee">roofGlassOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="J3@F}a:U48YNPh73eMk4">
<field name="VAR" id="V8rL(y|lr.Q.8[Zsf/mE">columnBaseMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="r;:uCr3m8XuPd5F{PzsP">
<value name="Entity">
<block type="lists_getIndex" id="7y:uJONm{w%-)Hk%kgWr">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="@EmbPK7JD(arO*9_|!4a">
<field name="VAR" id="Obk[vz^n7Mv)Cg?T^FJ^">columnElements</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="zZ6q_0$||w*T!|K%|XCS">
<field name="VAR" id="(c**hXH!56[y}eFm`:om">columnBaseOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="ggob9Z,Cj0793WdObVgw">
<field name="VAR" id="Xmx4o3$9iSkLnYrnJW3,">columnTopMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="ph8w8Fof5`~c@D7NNz/=">
<value name="Entity">
<block type="lists_getIndex" id="#OSBH7y`ARB~qX2^9!3@">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="variables_get" id="vj1_p~p-.]-A8q,k#gI7">
<field name="VAR" id="Obk[vz^n7Mv)Cg?T^FJ^">columnElements</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="u1SB;YOUEA]/0U1k2F8+">
<field name="VAR" id="Lb#;CZTb.U=]?/FE0R}d">columnTopOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="`I2=MT)m0~57h;KCOg$z">
<field name="VAR" id="NP)@GjOv4@SCk.GDOX39">groundMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="Nc4Q?1g0hRf8kvG.w(I_">
<value name="Entity">
<block type="bitbybit.occt.shapes.face.createCircleFace" id="O3}s]r]GR+AhAeX83fa,">
<value name="Radius">
<block type="math_number" id="@9aLSZ05{uQLsI=rhCe]">
<field name="NUM">40</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="Wg`%Pw~MRgCsGnq}oX$K">
<value name="X">
<block type="math_number" id="m##=,hSnUz+r.mY~F8k6">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=".hiwMKqlskF$UX0;#xMV">
<field name="NUM">-0.2</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="6+6?7_17~4?VO_tgj6!M">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="XK0bg|x;@24z[=qWIkpx">
<value name="X">
<block type="math_number" id="(tz@?]TuSa]g{bpp1O.u">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="ns;H#=ij+1^W_4g$g6y,">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="VO|S]248.F[*BZOqHArS">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="Z-PuQPk~)n!.%Z@D[P%,">
<field name="VAR" id="%JzY:cK3~3fxNUBozxc8">groundOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="22uY-5O+rASSRK!HWJp`">
<field name="VAR" id="A,Y.pPFWC(TWX%*j5qX=">walkwayMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="DdTne$(W$cj$;tZntFA/">
<value name="Entity">
<block type="variables_get" id="Y%Vt.GuS1a~*)i3EF;,3">
<field name="VAR" id="No-.@!ajW`iZNhtYFs:|">walkway</field>
</block>
</value>
<value name="Options">
<block type="variables_get" id="4O9P};dPki$k[ig%()8b">
<field name="VAR" id="mvsRC!k3oyO4_t%xUm=B">walkwayOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="6q-C8O8Q1f-QHix:C4*O">
<field name="VAR" id="R8)c{9+bvT]-=}NW|$n-">roofTopMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="xGC2gy{4kF:H)Qq%8K-2">
<value name="Promise">
<block type="variables_get" id="7{Dlf-06W5y3[AVl4~sd">
<field name="VAR" id=")jFwhfJ64YHbuNK27:RE">roofTopMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="_.@56CZp3e/k5#zfC9Ne">
<field name="VAR" id="+ZT@[lpq#c?%#)3xGEE*">roofBottomMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="h|=1R,f*/+v6tFw1n9uM">
<value name="Promise">
<block type="variables_get" id="*j/7RXf|v9E*o]f03All">
<field name="VAR" id="0G}AZ%IK~JyC.!ows@Uc">roofBottomMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="blN_].OYXi{rpbx!#e%w">
<field name="VAR" id="v=$m@*Rp!Ni=tnXa!HGQ">roofGlassMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="vc5wz9D`eH#NKRu|V30b">
<value name="Promise">
<block type="variables_get" id="da1x:UCuZ#f.Sg)#|^({">
<field name="VAR" id="f$6G-eXhk_lJ,Cn=?1iA">roofGlassMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="C@}x_g3n-b4[yl(Vx5ml">
<field name="VAR" id="WksPa84K#Qwk9@IeZaM}">columnBaseMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="dj^]9PB[v?yEO1.9NZqv">
<value name="Promise">
<block type="variables_get" id="~h[{?m*g#9Lk=W2rZoiS">
<field name="VAR" id="V8rL(y|lr.Q.8[Zsf/mE">columnBaseMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="k{Z;OJ*!_}]k:S8}5Gj/">
<field name="VAR" id="#-ty|wDMJZV7nS6Z{dp,">columnTopMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id=";SRT/54c[,2D2fm,gdY`">
<value name="Promise">
<block type="variables_get" id="fWx2?seRRf+-^,2%U@,1">
<field name="VAR" id="Xmx4o3$9iSkLnYrnJW3,">columnTopMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="vE;`;W.|*,JF/qdMwbYs">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="1|k!q;x|[,ZZ!ov4Ng;?">
<value name="Promise">
<block type="variables_get" id="3d$2G+DJ91:7dLHZ+bBM">
<field name="VAR" id="NP)@GjOv4@SCk.GDOX39">groundMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="/$S,VTsU?X]*#9ur1L)r">
<field name="VAR" id="3S[CRP*red-@zg#qee,e">walkwayMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="!4LB~t9W`@R4,Z/jCj[h">
<value name="Promise">
<block type="variables_get" id="g6_Z%h)rOWP5B[pNT=``">
<field name="VAR" id="A,Y.pPFWC(TWX%*j5qX=">walkwayMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="dN+KM/p=X57~c@fQH_;|">
<value name="BabylonMesh">
<block type="variables_get" id="kv3-1%S1-4u4hT$RLfh(">
<field name="VAR" id="R8)c{9+bvT]-=}NW|$n-">roofTopMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="f@HW+5ZgcjB3:.q|Kds6">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="14(!Jiv52FSG?h%_Vb!e">
<value name="BabylonMesh">
<block type="variables_get" id="nHym:LtP+wt77+,[i8Xw">
<field name="VAR" id="+ZT@[lpq#c?%#)3xGEE*">roofBottomMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="Jnix1n;ft~swvY|nvpCm">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="DIHM3+R/:j|8GF8svdK[">
<value name="BabylonMesh">
<block type="variables_get" id="PE%np`Dw_2X9h;:EC8Uh">
<field name="VAR" id="v=$m@*Rp!Ni=tnXa!HGQ">roofGlassMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="g}8Y[(0|Z(fF~MeF-]@)">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="lS8SVzSpt:9xSSz!nXw?">
<value name="BabylonMesh">
<block type="variables_get" id=";vJ6N~^_HhOE1Xr^ohqP">
<field name="VAR" id="WksPa84K#Qwk9@IeZaM}">columnBaseMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="|0o)XYD6.-*!sOd*@VMI">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id=",//qN)@ttmI5^b4c{Y)1">
<value name="BabylonMesh">
<block type="variables_get" id="Nx5e`f@e|sS;T@KI,uC4">
<field name="VAR" id="#-ty|wDMJZV7nS6Z{dp,">columnTopMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="a_-5k^SvR_e9(4)H3s/N">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="]3ANkGk_?c[K#N~Jt|r+">
<value name="BabylonMesh">
<block type="variables_get" id="=}V^?RaSJWH/N%4iZVQb">
<field name="VAR" id="3S[CRP*red-@zg#qee,e">walkwayMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="f0U*~WcmP~M-czl|mrb(">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="%m]-Bj#?-u2=`p{bTk}e">
<value name="BabylonMesh">
<block type="variables_get" id="aR/`#`xk~?hE9kr]*r.r">
<field name="VAR" id="z1)P]:Q8Nc^e2e?^rZg7">grid</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="b@c]OqF.aWHS?CnqCTre">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="base_time_update" id="EnJ=vw@]:B)-mghuAiVV">
<field name="TimePassedMs" id="[_r.QsyJ}zx:~r#7dOWs">timeElapsedFromPreviousFrame</field>
<statement name="Update">
<block type="bitbybit.babylon.mesh.yaw" id="]1!4K6rO:A$~v^+K_j_J">
<value name="BabylonMesh">
<block type="variables_get" id="2t(Bz_#,q7Rn~dZ-a_0q">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<value name="Rotate">
<block type="math_number" id="evI?bz`%L$Z0tNZw0)$e">
<field name="NUM">0.03</field>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Select the perfect plan for your 3D development needs