<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="4WruCBSlau2%ruGq!04D">shape</variable>
<variable id="en+U|i2=vn%/#3)ye(SD">faceColour</variable>
<variable id="!j+!g5nn:`O9kdtviDLc">faceOpacity</variable>
<variable id=",M+tf-g=1M%qw%s|ZxT)">precision</variable>
<variable id="RTBglAnS1@9+0]h3}7Mk">length</variable>
<variable id="]3~JKnFIby15=7ESrBhf">loft</variable>
<variable id="L^*nFd$$-XqdXoKks6MG">hexagonGlass</variable>
<variable id="_tmj52.^)E~]![ZE4DgW">drawnGround</variable>
<variable id="P=|){?hEsDq=EBy5/n3b">movedPointsForTops</variable>
<variable id="*@zwFl?f~xJj7m:}u0LO">hexGridNrX</variable>
<variable id="qtMp~e:nxaN%`VwUR|gC">glassGroupCompound</variable>
<variable id="CMn7/qoHh~%SLc(|PtQ1">occtShape</variable>
<variable id="tBlJB)v83o3exilg.RS7">nurbsSurface</variable>
<variable id=":1*%s_jb6mlTX^IXip?q">pointsOnSurface</variable>
<variable id="AB)8^b,V{lNVI1:BE}gt">innerSideLength</variable>
<variable id="%5(}p*ezX1vn+ub0o0,%">filletBase</variable>
<variable id="m;we^sq=tw]*PAEpOa1=">hexagonBase</variable>
<variable id="Em0l*h`=,-xuV42;Jzt8">hexGridNrY</variable>
<variable id="dABBv7*ou}Uu625}QhUl">baseGroupCompound</variable>
<variable id="m:AuG!cTPboqR76Eb`FC">m</variable>
<variable id="szQI}9nQa$%_jX_Bv(uc">point1</variable>
<variable id="B}dlS./rL5]0g#xOiT[=">chamferEdgeIndexes</variable>
<variable id="!0p6ApRy`{K@6$_|`LSU">hexagonGlassOnSrf</variable>
<variable id="my|Y~G+Aib^EEpdRR;id">bulbBoxMesh</variable>
<variable id="5hRIZ.lOkM97i3[e)8BA">firstTime</variable>
<variable id="ibE`Uhb2`rE^/8i=7@VE">hexGridPoints</variable>
<variable id="at.4_1NUcO=e%+/pU)}H">bulbBox</variable>
<variable id="~UF48{W8a(Avb99Y$Z?T">lineOrient</variable>
<variable id="E#ZK7*u*s/T05?Ar81uE">chamferGlass</variable>
<variable id="h(45Hn~+gx0.6%Q8o}#~">hexagonBaseOnSrf</variable>
<variable id="C_l,t!QA]Z!c2*(=tr}3">n</variable>
<variable id=".:lEfGx]982[{A_Flu?{">hexGridPointsMoved</variable>
<variable id="W$l5QY6N?h-b5NX]n}WV">linesForIntersection</variable>
<variable id="1IeB*p@O]}=y-xmv^/P:">point2</variable>
<variable id="JMa2`*NQ}|rl)i:Gc.ax">i</variable>
<variable id="^O5PHAYPIZj:)XeB8~o{">glassGroupCompoundMesh</variable>
<variable id="5/;~?2:]@xKw*P}lAY5w">point3</variable>
<variable id="$x1qy{t}ng8GQ*x0E5OX">j</variable>
<variable id="k*f._K?3rpWKa~1^%9ih">baseGroupCompoundMesh</variable>
<variable id="t#=dA;N03:z2G`d$k8F7">baseTriangle</variable>
<variable id="F/d7r%}[z-=4Hy-G.Pbp">k</variable>
</variables>
<block type="procedures_callnoreturn" id="X[?CAO/@MS)h3ke8o,8w" x="-6560" y="-516">
<mutation name="createLightsAndAdjustCamera">
</mutation>
<next>
<block type="procedures_callnoreturn" id="rE~zMYS[nnz(-!8rl0hW">
<mutation name="baseSetupForHexagonTriangleShape">
</mutation>
<next>
<block type="procedures_callnoreturn" id="k24/MVJV}N6U{^Xq%jd3">
<mutation name="makeHexGridAndVerticalLinesForIntersection">
</mutation>
<next>
<block type="procedures_callnoreturn" id="XDPUo{QIHmDVqI~!CiAv">
<mutation name="createNurbsSurfaceForHexGridProjections">
</mutation>
<next>
<block type="procedures_callnoreturn" id=",0c#PLNSxBmC5u+{q{)|">
<mutation name="findIntersectionsOnSurface">
</mutation>
<next>
<block type="procedures_callnoreturn" id="tHU2Lk/COHk$%_4x8F=C">
<mutation name="createBaseTriangleShapeAndGlass">
</mutation>
<next>
<block type="procedures_callnoreturn" id="%6X~eD0hvb}F]bY:2A5o">
<mutation name="rotateTriangleToHexagons">
</mutation>
<next>
<block type="procedures_callnoreturn" id="D@t[!cINL!4jru#hk2os">
<mutation name="createAndDrawGround">
</mutation>
<next>
<block type="procedures_callnoreturn" id="+yzb/B;t^a!D$Ev*E0_T">
<mutation name="createCompoundMeshesForDrawing">
</mutation>
<next>
<block type="procedures_callnoreturn" id="2q~HzY,F10cRlxex9[$5">
<mutation name="drawOptimizedMeshInstances">
</mutation>
<next>
<block type="procedures_callnoreturn" id="gyw]Ka9GbZLX|H/S7}mB">
<mutation name="higherQualityDrawingOfOCCModel">
</mutation>
<next>
<block type="procedures_callnoreturn" id="Cke)/OW-GEFNa)Dzs3a9">
<mutation name="drawVerticalColumns">
</mutation>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defnoreturn" id="XZ%T8k$8JQ1~kdXRlzRv" x="-5943" y="-514">
<field name="NAME">baseSetupForHexagonTriangleShape</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="Mn]fjzpnbINy(-vn;sX.">
<field name="VAR" id="RTBglAnS1@9+0]h3}7Mk">length</field>
<value name="VALUE">
<block type="math_number" id="eu_;iC:HCj~D;lu?fz@3">
<field name="NUM">20</field>
</block>
</value>
<next>
<block type="variables_set" id="D?(!ogH5WQ9?utgi]Gd`">
<field name="VAR" id="AB)8^b,V{lNVI1:BE}gt">innerSideLength</field>
<value name="VALUE">
<block type="math_number" id="kqGS7-^ez[7@w@Y:Zhk8">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="variables_set" id="p^1@-`Sg{D.QJrG5Im[;">
<field name="VAR" id="szQI}9nQa$%_jX_Bv(uc">point1</field>
<value name="VALUE">
<block type="bitbybit.point.pointXYZ" id=":4APa)A[Bgp/!P{F(bCH">
<value name="X">
<block type="math_number" id="@@?:hQ!sEcQW}!2tHer!">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="d+deNpc[gHE?2w@v`[pl">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=";-t/?kedyS(ft3M^z*;k">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="Q!rY@DaqzhUcZzDp$,TY">
<field name="VAR" id="~UF48{W8a(Avb99Y$Z?T">lineOrient</field>
<value name="VALUE">
<block type="bitbybit.line.create" id="bHV)gz-Hq?s8{kiWsxL2">
<value name="Start">
<block type="bitbybit.point.pointXYZ" id="BiS%$K9B;)83jYDIbcx1">
<value name="X">
<block type="math_number" id="9EU#as]paiiF2F?RBo|f">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=";OmX,CV7s=Fl$I3c/}C@">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="}iGe+LPBM0pCYCg4M1Iv">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="End">
<block type="bitbybit.point.pointXYZ" id="=KL`z*H+gEo42n7K.,[=">
<value name="X">
<block type="math_number" id="UW/^FL5R{xopAiEyPem2">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Yjw7IkxSIy(NXQP9![@S">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="variables_get" id="VWqm$;XxXY}gzYYwW8a0">
<field name="VAR" id="RTBglAnS1@9+0]h3}7Mk">length</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=")e8=SIe4[7u!lyv$S6^7">
<field name="VAR" id="1IeB*p@O]}=y-xmv^/P:">point2</field>
<value name="VALUE">
<block type="bitbybit.line.getEndPoint" id="1HN@a}}5Zhs_EdE]g):v">
<value name="Line">
<block type="bitbybit.line.transformLine" id="S;KPh(Z;q9=/1_bLIai8">
<value name="Line">
<block type="variables_get" id=")qV{iGAPI^t@U{:|a~AQ">
<field name="VAR" id="~UF48{W8a(Avb99Y$Z?T">lineOrient</field>
</block>
</value>
<value name="Transformation">
<block type="bitbybit.babylon.transforms.rotationCenterY" id="jOHnD5joB!Z)O^}gz}Bq">
<value name="Angle">
<block type="math_number" id="M6H}s*L.:*-wY6`uQX!M">
<field name="NUM">59.09</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.vector.vectorXYZ" id="y:|^C[1M;zxvw8la$`fV">
<value name="X">
<block type="math_number" id="wEPyV(p+(tIRINy*U^Po">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=".FQu(|%GyWx*{lw@5Sie">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="Zl)m5W#m,/g7#Y]85|Tn">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="@nfjJmTfERzHymoEhpY{">
<field name="VAR" id="5/;~?2:]@xKw*P}lAY5w">point3</field>
<value name="VALUE">
<block type="bitbybit.line.getEndPoint" id="Hc;}AeV@3l8/zxi[V!=w">
<value name="Line">
<block type="bitbybit.line.transformLine" id="y@1N%uy_q/%-QoKvFmn$">
<value name="Line">
<block type="variables_get" id="058eJWATWD0$kZJ0w}f!">
<field name="VAR" id="~UF48{W8a(Avb99Y$Z?T">lineOrient</field>
</block>
</value>
<value name="Transformation">
<block type="bitbybit.babylon.transforms.rotationCenterY" id="Y;7Fqbt/NjE;|^JZbIgw">
<value name="Angle">
<block type="math_number" id="[l%jR_vMh3Fz|lME+0pX">
<field name="NUM">0.01</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.vector.vectorXYZ" id="[RnY?R,VED5m`zvBf^v8">
<value name="X">
<block type="math_number" id="yRay)q%2UYD?Dp5r#POo">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="4UJNGt5`#46s:@{$oq-E">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="zs)u}(M#`.9w4`)qF6ef">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="bui[,7WGz+F;YgXr1z!Z">
<field name="VAR" id="t#=dA;N03:z2G`d$k8F7">baseTriangle</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createPolygonWire" id="U4AG6JrdgLT/3@[PN}OA">
<value name="Points">
<block type="lists_create_with" id=".B{8s3FEAMg`4,Ck*v(]">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="variables_get" id="MbuzCX^rZ*TCsNkUByI5">
<field name="VAR" id="szQI}9nQa$%_jX_Bv(uc">point1</field>
</block>
</value>
<value name="ADD1">
<block type="variables_get" id="J(0ZD6yrJf6/~w2ZZtcH">
<field name="VAR" id="1IeB*p@O]}=y-xmv^/P:">point2</field>
</block>
</value>
<value name="ADD2">
<block type="variables_get" id="L[TfQkEa~/W5tJGU_%(F">
<field name="VAR" id="5/;~?2:]@xKw*P}lAY5w">point3</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id="*5%C.=tY}kCvv%{F$6o," x="-5003" y="-528">
<field name="NAME">createLightsAndAdjustCamera</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="bitbybit.babylon.scene.adjustActiveArcRotateCamera" id="kcR@9Xr8$Bl%7n%#D}gY">
<value name="Position">
<block type="bitbybit.point.pointXYZ" id="3s99[)eXN=Yob3;2yt`X">
<value name="X">
<block type="math_number" id="?6vYI@p@pCneyV8r0@J9">
<field name="NUM">250</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="F;CM%-%K[6h8IaNY$gfB">
<field name="NUM">170</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="10{}v,_O~5rL]/}7fkAK">
<field name="NUM">250</field>
</block>
</value>
</block>
</value>
<value name="LookAt">
<block type="bitbybit.point.pointXYZ" id="ux!SvoRkF:1+dQhZLVdY">
<value name="X">
<block type="math_number" id="o%/@^Wctm%Iu*R0z@6Wi">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="/0zdS853y]]Qn0V;CwBl">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="q_z-{:xT,zE`8viq@FXL">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="MaxZ">
<block type="math_number" id="8tg5@DIC1E:-3)os2/c]">
<field name="NUM">10000</field>
</block>
</value>
<value name="PanningSensibility">
<block type="math_number" id="A^c=.{mMf(c,+d713hq[">
<field name="NUM">100</field>
</block>
</value>
<value name="WheelPrecision">
<block type="math_number" id=".ape9F*ESORSh19+(Rkh">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.drawPointLightNoReturn" id="@odG+3%`4I/DUjgWq+#$">
<value name="Position">
<block type="bitbybit.point.pointXYZ" id="}|Kvibbu:3SZTp.*oo$l">
<value name="X">
<block type="math_number" id=".Xl0~joW,$y5F*I~G+Sv">
<field name="NUM">200</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="+Pn7dX396pU.Y99E!8Ou">
<field name="NUM">130</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="sSMJNaCGg|vStKhJipyT">
<field name="NUM">200</field>
</block>
</value>
</block>
</value>
<value name="Intensity">
<block type="math_number" id="3qLSS9SUSe6(+cli^($(">
<field name="NUM">60000</field>
</block>
</value>
<value name="Diffuse">
<block type="colour_picker" id="{svHnG9=}y$c}6A@DzwG">
<field name="COLOUR">#ff99ff</field>
</block>
</value>
<value name="Specular">
<block type="colour_picker" id="+#A[@jZ}5B_il5pz(WIu">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="Radius">
<block type="math_number" id="lNa$w:/[)C:}(NO9`(:f">
<field name="NUM">0.5</field>
</block>
</value>
<value name="ShadowGeneratorMapSize">
<block type="math_number" id="u.wZPa~9I/.k=-6_Utsp">
<field name="NUM">1024</field>
</block>
</value>
<value name="EnableShadows">
<block type="logic_boolean" id="8:!bX}s{XBoEs$I,2Stz">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ShadowDarkness">
<block type="math_number" id="TqTsl50Vn4V|hb!0pNc)">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.drawPointLightNoReturn" id=";jz84T#sw6Oyk=iN7M8$">
<value name="Position">
<block type="bitbybit.point.pointXYZ" id="g.n%M/T=||%FjQ*nAaro">
<value name="X">
<block type="math_number" id="wcC68DSTDXN^{}]-*X3_">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="^raD?ThN4v~om(eX{GK@">
<field name="NUM">160</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="8o!WZ0K*I.*!G]{HnN.i">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Intensity">
<block type="math_number" id="jA*t2*g?,s8xZ2cMfJ^K">
<field name="NUM">60000</field>
</block>
</value>
<value name="Diffuse">
<block type="colour_picker" id="sfQ*wJwI-~Yvwr.w@P|f">
<field name="COLOUR">#ff99ff</field>
</block>
</value>
<value name="Specular">
<block type="colour_picker" id="rS(g:4L~hqfL{jSGvfHM">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="Radius">
<block type="math_number" id=";f12W.}R[xl0|%~+0jNB">
<field name="NUM">0.5</field>
</block>
</value>
<value name="ShadowGeneratorMapSize">
<block type="math_number" id="%tmRjD5L2(3MI^]]ci)S">
<field name="NUM">1024</field>
</block>
</value>
<value name="EnableShadows">
<block type="logic_boolean" id="Mg+21Fl|IH29sK|3ZEUj">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ShadowDarkness">
<block type="math_number" id="rsjAFKSOE@.rcfIPk2q5">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.drawPointLightNoReturn" id="h76%3#P6XlQ^s*1M^!P$">
<value name="Position">
<block type="bitbybit.point.pointXYZ" id="wA!Hp;,d)1zA,D~$;;.8">
<value name="X">
<block type="math_number" id="42Jt~A%qlw%Z$kMNLZ}O">
<field name="NUM">200</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="X}4C5AVs#d)]SK^S`@g*">
<field name="NUM">90</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="[j18X/1(@-I1+F;H}lkh">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Intensity">
<block type="math_number" id="Gb=cd-4kacYo^`=|Z?GT">
<field name="NUM">60000</field>
</block>
</value>
<value name="Diffuse">
<block type="colour_picker" id="RuK[8PgT{;2VU6#X5`jw">
<field name="COLOUR">#ff99ff</field>
</block>
</value>
<value name="Specular">
<block type="colour_picker" id="UcP/J3,ZmkTf:3RW$tW_">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="Radius">
<block type="math_number" id="C{%:UyVs5m36L`w+J$~6">
<field name="NUM">0.5</field>
</block>
</value>
<value name="ShadowGeneratorMapSize">
<block type="math_number" id="`CS~Ci6{VUVs9Oz]x!Z%">
<field name="NUM">1024</field>
</block>
</value>
<value name="EnableShadows">
<block type="logic_boolean" id="as.TLmQ;j$sT|o3`?k^#">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ShadowDarkness">
<block type="math_number" id="wULPTQ?Y2Ct/9D%s0DN;">
<field name="NUM">0</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id="R!~5+Qj{7(T=9W.bNqbp" x="-4433" y="-518">
<field name="NAME">createBaseTriangleShapeAndGlass</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="Jp9eKKOhgOI3[c$;2=)r">
<field name="VAR" id="]3~JKnFIby15=7ESrBhf">loft</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.loft" id=")!d:qurTtU,lh{Y:ln.U">
<value name="Shapes">
<block type="lists_create_with" id="S^s%?D^=Do?)ne6SqEwj">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.shapes.wire.createPolygonWire" id="fGHz_@vORt2%sCMEsnK9">
<value name="Points">
<block type="lists_create_with" id="DP8hx(`LI|IHTBW/uQao">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="Ck@]if`I!]{$N^lJ-:]Y">
<value name="X">
<block type="math_number" id="WOC/v]@iMc.$@o3+1DI`">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="hSvtKL-~tIQJ$xI{KzI[">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="p-V235A94XI]hhI0~C;c">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="tbY2rHMf#Nk8[31i}Y(m">
<value name="X">
<block type="bitbybit.point.getX" id="!nQ5N{64H[]^L1=R?%1Q">
<value name="Point">
<block type="variables_get" id="2#D{}o!*}^A+;-rNcIl:">
<field name="VAR" id="1IeB*p@O]}=y-xmv^/P:">point2</field>
</block>
</value>
</block>
</value>
<value name="Y">
<block type="math_number" id="END.ObkkSRkjM6@JgCly">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="bitbybit.point.getZ" id="}Jy;uuTGasY~OJ4dme(+">
<value name="Point">
<block type="variables_get" id="/S%CAxI0c7GzggdRD0SX">
<field name="VAR" id="1IeB*p@O]}=y-xmv^/P:">point2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="K|Xw]$^X=pkAatV[@bW5">
<value name="X">
<block type="bitbybit.point.getX" id="TlhZ?+C5+[b|BHdKPW(h">
<value name="Point">
<block type="variables_get" id="ZN0Zo(EVp85Jaa~TC85T">
<field name="VAR" id="5/;~?2:]@xKw*P}lAY5w">point3</field>
</block>
</value>
</block>
</value>
<value name="Y">
<block type="math_number" id="N8c%|8lW~s/r;]J0wRhD">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="bitbybit.point.getZ" id=",K?2fex(W/N06K`lDzA,">
<value name="Point">
<block type="variables_get" id=";.u(Il}a+z${-c)$?gn;">
<field name="VAR" id="5/;~?2:]@xKw*P}lAY5w">point3</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.wire.createPolygonWire" id="svzS:~0Y583U-:83?}=z">
<value name="Points">
<block type="lists_create_with" id="ssh%5)=jOA%L,=%EZSrt">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="sK4bMF0MAh+0tf*O{3ae">
<value name="X">
<block type="math_number" id="65nb-LkXz=*}N~0}^PC`">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="SY=bi]hJg6)k`0:|=-KI">
<field name="NUM">10</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="[%PDw`5zL3mHZ5pZQxGC">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="8o5wwPy:8OR-HTs1rM#m">
<value name="X">
<block type="bitbybit.point.getX" id="V8W-~[yDrw(m-+b!~wzU">
<value name="Point">
<block type="variables_get" id="lJ;;xcqU1VaUVxW,XFIB">
<field name="VAR" id="1IeB*p@O]}=y-xmv^/P:">point2</field>
</block>
</value>
</block>
</value>
<value name="Y">
<block type="math_number" id="q9@z;Vasxe|LHQfdAHgw">
<field name="NUM">14</field>
</block>
</value>
<value name="Z">
<block type="bitbybit.point.getZ" id="Zm#FX=f%Zm.pEQV)hRx!">
<value name="Point">
<block type="variables_get" id="kN+Rt`y2H]vx@VD!MNt0">
<field name="VAR" id="1IeB*p@O]}=y-xmv^/P:">point2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="a+t+0Z?xvne$lFyC7-94">
<value name="X">
<block type="bitbybit.point.getX" id="CjR]!*cZp#GS0#~E+cY(">
<value name="Point">
<block type="variables_get" id="8HZjNSBYqWeoDT%/apKO">
<field name="VAR" id="5/;~?2:]@xKw*P}lAY5w">point3</field>
</block>
</value>
</block>
</value>
<value name="Y">
<block type="math_number" id="d--!:vvXe5BB|U4v*xW$">
<field name="NUM">14</field>
</block>
</value>
<value name="Z">
<block type="bitbybit.point.getZ" id="00m]Q:L6Aq.I!{Y%t[N.">
<value name="Point">
<block type="variables_get" id="+Q]%fy~kG^Pi$:RD}Dop">
<field name="VAR" id="5/;~?2:]@xKw*P}lAY5w">point3</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="z$:C/mBwz2dI,J)PcAz~">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="$opg7[_.DtZ{YgxQ)1]j">
<field name="VAR" id="%5(}p*ezX1vn+ub0o0,%">filletBase</field>
<value name="VALUE">
<block type="bitbybit.occt.fillets.filletEdges" id="T/aQ-P#YyWRsf@am}atD">
<value name="Shape">
<block type="bitbybit.occt.booleans.difference" id="hI$OUYCHd_scKg=GR[0L">
<value name="Shape">
<block type="variables_get" id="U.Lvm+:aQ*menkx~XTE.">
<field name="VAR" id="]3~JKnFIby15=7ESrBhf">loft</field>
</block>
</value>
<value name="Shapes">
<block type="lists_create_with" id="+hN=VzSb:-o^t/}_3whw">
<mutation items="1">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.operations.extrude" id="N]2exQ~D$gY:DlF-6h]%">
<value name="Shape">
<block type="bitbybit.occt.shapes.face.createFaceFromWire" id=",a}qR1Dg9QrUqWlwa;/s">
<value name="Shape">
<block type="bitbybit.occt.operations.offset" id="B|hZnS1nv$T3C^Q}!8S9">
<value name="Shape">
<block type="variables_get" id="G/e,i$e#QHAB:i_E+}cV">
<field name="VAR" id="t#=dA;N03:z2G`d$k8F7">baseTriangle</field>
</block>
</value>
<value name="Distance">
<block type="math_number" id="WSbvys4|ma2rZ5Q%QZ`R">
<field name="NUM">-1.5</field>
</block>
</value>
<value name="Tolerance">
<block type="math_number" id="bm#e8B5}cS=/ns$n_x8t">
<field name="NUM">0.00001</field>
</block>
</value>
</block>
</value>
<value name="Planar">
<block type="logic_boolean" id="r%b)3V75];C$q4(kuB?/">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="8d~nIj?-_^HOd(rbujCP">
<value name="X">
<block type="math_number" id="M|0C}i];I*Scjg$37$VH">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="N`[0EMx3?TUQcZX4LhGJ">
<field name="NUM">50</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="1#q-Ddc?Z/;Gs|9o^%s9">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="KeepEdges">
<block type="logic_boolean" id="L$_Uq#4=4QofpoN5dNi^">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="Radius">
<block type="math_number" id="Bek%.tWu`$1!)mLiCnwO">
<field name="NUM">0.6</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="]WBm|4CbYES!fcs?@NF%">
<field name="VAR" id="B}dlS./rL5]0g#xOiT[=">chamferEdgeIndexes</field>
<value name="VALUE">
<block type="lists_create_with" id="oKWtO-yah$;);Hq_Ee1d">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="math_number" id=":bfGD^me*16oEUhGDetW">
<field name="NUM">15</field>
</block>
</value>
<value name="ADD1">
<block type="math_number" id=",.u~uWXVv0Z/j#(U+$uV">
<field name="NUM">12</field>
</block>
</value>
<value name="ADD2">
<block type="math_number" id="4#zK{U=dh$v$^[!Z+,~M">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=")-7v1-B=YfFx4BjU[~}$">
<field name="VAR" id="E#ZK7*u*s/T05?Ar81uE">chamferGlass</field>
<value name="VALUE">
<block type="bitbybit.occt.fillets.chamferEdges" id="0Ou_%MEs4Y5hgWBp09(U">
<value name="Shape">
<block type="bitbybit.occt.operations.extrude" id="eUV+^94T2zd=x{P.M!:q">
<value name="Shape">
<block type="bitbybit.occt.shapes.face.createFaceFromWire" id="nldFH::01.fr]/D,a1ZV">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.getWire" id="oWx%/4H/,Pj{#G,Sm!j@">
<value name="Shape">
<block type="variables_get" id="CZ37j}%XxPz(}J~[:[(9">
<field name="VAR" id="%5(}p*ezX1vn+ub0o0,%">filletBase</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="}nLKxYTOKCWtOeQ+3L}Q">
<field name="NUM">14</field>
</block>
</value>
</block>
</value>
<value name="Planar">
<block type="logic_boolean" id="{J*$!,tKK3Ls0y,G)+10">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="ilj-x)g-):Xwx)mUP*8n">
<value name="X">
<block type="math_number" id="X0elynbqp.~@LN:fT9iz">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=":v9LGfz*T_!AH]V_a=V/">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="E}MiY6`Cic(=iMI`gm_~">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Distance">
<block type="math_number" id="c78`oVl-X6t]n}`;k}YB">
<field name="NUM">0.5</field>
</block>
</value>
<value name="Indexes">
<block type="variables_get" id="b6d,%A2*X7YzM(8l;(64">
<field name="VAR" id="B}dlS./rL5]0g#xOiT[=">chamferEdgeIndexes</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id="=Fz6V|+jf:O)J3jMX(ln" x="-2822" y="-537">
<field name="NAME">rotateTriangleToHexagons</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="YD]L!v9fK~haQ6/`8,R;">
<field name="VAR" id="L^*nFd$$-XqdXoKks6MG">hexagonGlass</field>
<value name="VALUE">
<block type="lists_create_with" id="MW}itN1UeooiwDzR)j8t">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="3)l+]bGi:NUV*:dhzQ[A">
<field name="VAR" id="m;we^sq=tw]*PAEpOa1=">hexagonBase</field>
<value name="VALUE">
<block type="lists_create_with" id="K=ZRvwLw=6EZ*lXIdrrK">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="lc|`UCh7L4Mh^4LcHv{C">
<field name="VAR" id="!0p6ApRy`{K@6$_|`LSU">hexagonGlassOnSrf</field>
<value name="VALUE">
<block type="lists_create_with" id="7kru!7`(K6T/9lJHE4Gg">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="Czevlw3GEr+)Fmn=(JwQ">
<field name="VAR" id="h(45Hn~+gx0.6%Q8o}#~">hexagonBaseOnSrf</field>
<value name="VALUE">
<block type="lists_create_with" id="Jp/2T6@X{s!7LK?=R*/X">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_for" id="G.KqQnaP.cTP[He}Ghn#">
<field name="VAR" id="JMa2`*NQ}|rl)i:Gc.ax">i</field>
<value name="FROM">
<block type="math_number" id="N27VHI-Xrtr#vPlq`Ts3">
<field name="NUM">60</field>
</block>
</value>
<value name="TO">
<block type="math_number" id="MeH*oMR5~[aoODs,#q]U">
<field name="NUM">300</field>
</block>
</value>
<value name="BY">
<block type="math_number" id="Q![t3gW?[FAH?2@/v`~(">
<field name="NUM">60</field>
</block>
</value>
<statement name="DO">
<block type="lists_setIndex" id="*c8*_ry=B*5E0.%9zn@/">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="e@]A~~U?qdHKGGTLfX0.">
<field name="VAR" id="L^*nFd$$-XqdXoKks6MG">hexagonGlass</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.transforms.rotate" id="lt*w^}.8S$ucCbA0-3L}">
<value name="Shape">
<block type="variables_get" id="o)0;e,n]!ZVWdOPldyqS">
<field name="VAR" id="E#ZK7*u*s/T05?Ar81uE">chamferGlass</field>
</block>
</value>
<value name="Axis">
<block type="bitbybit.point.pointXYZ" id="I]5i_)]a)Zc^aF9!vA%1">
<value name="X">
<block type="math_number" id="0vMFy=,~O,I;gWL6n.)6">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="%gxeXtAy(K||4z6.EhCR">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="?CT~@$aK(r:]9+|h3cV=">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="variables_get" id="A)eh;o#Sr*aWac4@y|z@">
<field name="VAR" id="JMa2`*NQ}|rl)i:Gc.ax">i</field>
</block>
</value>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_for" id="HOtSZg0LyuVPD;}]$:}c">
<field name="VAR" id="$x1qy{t}ng8GQ*x0E5OX">j</field>
<value name="FROM">
<block type="math_number" id="VX@YXR9Sgcvk1AAcGS@s">
<field name="NUM">60</field>
</block>
</value>
<value name="TO">
<block type="math_number" id="|6JEENDt^g2q#?6#REwC">
<field name="NUM">300</field>
</block>
</value>
<value name="BY">
<block type="math_number" id="d0:`s%PWM-MicbXx$dYB">
<field name="NUM">60</field>
</block>
</value>
<statement name="DO">
<block type="lists_setIndex" id="?@#j/PqKmN%Un~m+[_4B">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="jOFY!5Sn:KT]HF]|suLY">
<field name="VAR" id="m;we^sq=tw]*PAEpOa1=">hexagonBase</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.transforms.rotate" id="F4gF2Fu].Uhq9q26EH~0">
<value name="Shape">
<block type="variables_get" id="kRM4ntux;l+De=?/4_MI">
<field name="VAR" id="%5(}p*ezX1vn+ub0o0,%">filletBase</field>
</block>
</value>
<value name="Axis">
<block type="bitbybit.point.pointXYZ" id="=Uwr5qq.fbD@8T`+ma-{">
<value name="X">
<block type="math_number" id="_MBg_r]Mr!}A#/W9wuVA">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="O%%rHT@qQCKCd^K/ZS@$">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="eT:J6v?I+K.)u-TzOZ@A">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="variables_get" id="4$@:Vyu#}bl`w`u#Cuyf">
<field name="VAR" id="$x1qy{t}ng8GQ*x0E5OX">j</field>
</block>
</value>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_for" id="|]2QmzVux5HbtV1i8UBE">
<field name="VAR" id="JMa2`*NQ}|rl)i:Gc.ax">i</field>
<value name="FROM">
<block type="math_number" id="FLQJ;ZebSW`YoA.{_|nl">
<field name="NUM">0</field>
</block>
</value>
<value name="TO">
<block type="math_number" id="`?vQ{IWZ_++FbE]@/O,+">
<field name="NUM">300</field>
</block>
</value>
<value name="BY">
<block type="math_number" id="@Uo*a7R)I~1*f;/dk,W4">
<field name="NUM">60</field>
</block>
</value>
<statement name="DO">
<block type="lists_setIndex" id="F=VO5up^^9E*oU/^G4q?">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="P1;JJrzw!Ow^1v@@rCDB">
<field name="VAR" id="!0p6ApRy`{K@6$_|`LSU">hexagonGlassOnSrf</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.transforms.rotate" id="wKb*A[a(mEB(j5L_:~i`">
<value name="Shape">
<block type="variables_get" id="}%pWx._QN};rp5g9MZiN">
<field name="VAR" id="E#ZK7*u*s/T05?Ar81uE">chamferGlass</field>
</block>
</value>
<value name="Axis">
<block type="bitbybit.point.pointXYZ" id="x!!nuN22lSUKI:mB7Ll.">
<value name="X">
<block type="math_number" id="xuYg1$$x9}GmIL,X[5i]">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="~2L[~~VggNsTG~{Q1%wt">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=".)_Z0I$*l~O^Lu)v$Vbd">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="variables_get" id="tC-}XYb)mN{9]0-67:zR">
<field name="VAR" id="JMa2`*NQ}|rl)i:Gc.ax">i</field>
</block>
</value>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_for" id="GQ/9~rIv^#oMpe?50nG/">
<field name="VAR" id="$x1qy{t}ng8GQ*x0E5OX">j</field>
<value name="FROM">
<block type="math_number" id="p{Zc+|Au5o04)aFgo1lh">
<field name="NUM">0</field>
</block>
</value>
<value name="TO">
<block type="math_number" id="-0d@cL=:K(l{C^(TB#a[">
<field name="NUM">300</field>
</block>
</value>
<value name="BY">
<block type="math_number" id=".B5/:$:}}WImtHDMPAf1">
<field name="NUM">60</field>
</block>
</value>
<statement name="DO">
<block type="lists_setIndex" id="1N{~s!dn~[aMIkQOzCIR">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="nrSI2_80G)UI$mT`vx,p">
<field name="VAR" id="h(45Hn~+gx0.6%Q8o}#~">hexagonBaseOnSrf</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.transforms.rotate" id="3-bYe/[d(Swu6vlM(!*v">
<value name="Shape">
<block type="variables_get" id="]fo%aS#Kh!^c(gv=SC%8">
<field name="VAR" id="%5(}p*ezX1vn+ub0o0,%">filletBase</field>
</block>
</value>
<value name="Axis">
<block type="bitbybit.point.pointXYZ" id="(ir=Zc6*/PG+3#Q3yhU`">
<value name="X">
<block type="math_number" id="eArcS-z|=z$j8@qQv?sf">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="SeR6asjAd9V|U#..}%Zm">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=")D?V^XbNf51m]MKAy_}R">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="variables_get" id="%s#@@MLeaA]RRbiSy|%Q">
<field name="VAR" id="$x1qy{t}ng8GQ*x0E5OX">j</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id="|}k[%}O)?E_^`_42lf5*" x="-1930" y="-544">
<field name="NAME">createAndDrawGround</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="yMI#}zz,,oQNtUn9M^Ft">
<field name="VAR" id="_tmj52.^)E~]![ZE4DgW">drawnGround</field>
<value name="VALUE">
<block type="procedures_callreturn" id="|Bpbf{XXSrjSb44X4uQ4">
<mutation name="drawOcctShape">
<arg name="shape">
</arg>
<arg name="faceColour">
</arg>
<arg name="faceOpacity">
</arg>
<arg name="precision">
</arg>
</mutation>
<value name="ARG0">
<block type="bitbybit.occt.transforms.translate" id="VOCHwD$|KPL3}d!h|4?R">
<value name="Shape">
<block type="bitbybit.occt.shapes.solid.createBox" id="Ko3;}OqU7@)BV6}r-5pC">
<value name="Width">
<block type="math_number" id="$I:d9|IQ_uh(qDDzBC~p">
<field name="NUM">500</field>
</block>
</value>
<value name="Length">
<block type="math_number" id="@)([tV1gs);*H.p{fqWH">
<field name="NUM">500</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="(03@]ZZ58D;M7:E:x-4n">
<field name="NUM">1</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="qp#=x|2DI=j!^+2HGGRq">
<value name="X">
<block type="math_number" id="^c`JDIybfkqr|KyPrvLa">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="l4ba;Y%{gf%;4*#j~_Xz">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="[M6M~fC{;qbT?1*AinC-">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Translation">
<block type="bitbybit.point.pointXYZ" id="|)U~V$Jk9p6Mf.b~=G6G">
<value name="X">
<block type="math_number" id="t}Ar)sEkQz2UWK[::WiX">
<field name="NUM">125</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="n06]2zmA#!)U7^20ulYZ">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="W/-Hu|#vAy]POBeur-[e">
<field name="NUM">125</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ARG1">
<block type="colour_picker" id="KwW4!*:}(}:!1.;$#f2N">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="ARG2">
<block type="math_number" id="c2|$v9}TX;(G**[~8Vea">
<field name="NUM">0.99</field>
</block>
</value>
<value name="ARG3">
<block type="math_number" id="rycqWT_6y|z(.$zB:~/}">
<field name="NUM">0.5</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id="{RyY+!Ea2ZH?E5+0*0Ju" x="-1023" y="-524">
<field name="NAME">drawOptimizedMeshInstances</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="bJ6EzN(L;{Zph_6m?#|2">
<field name="VAR" id="P=|){?hEsDq=EBy5/n3b">movedPointsForTops</field>
<value name="VALUE">
<block type="bitbybit.point.transformPoints" id="{b(IdYR}d;GIdu:L;5X8">
<value name="Points">
<block type="variables_get" id="WC!%nfK4.JW[Wef@.(5e">
<field name="VAR" id=":1*%s_jb6mlTX^IXip?q">pointsOnSurface</field>
</block>
</value>
<value name="Transformation">
<block type="bitbybit.babylon.transforms.translationXYZ" id="sg9o!8#a=]Pt#Kp.prP*">
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="u_FG_aa-0$+HC%$(1=QG">
<value name="X">
<block type="math_number" id="wYD^1%InZ0LpH,fWJr`-">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="UY(50Ou4B6TW[xJ5K]qb">
<field name="NUM">15</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="Sbyb5pf|vZH1B6ER+L{`">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="base_time_async_context" id="!`=-Px`5rlv)9y`Su$6{">
<statement name="Then">
<block type="variables_set" id="YkmMs4?5b2jhNf{^t8Q%">
<field name="VAR" id="my|Y~G+Aib^EEpdRR;id">bulbBoxMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="w=BQ][7asl+CXiG`oR}m">
<value name="Promise">
<block type="variables_get" id="{:h7?7K}GNOVs%baW!4}">
<field name="VAR" id="at.4_1NUcO=e%+/pU)}H">bulbBox</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_forEach" id=";l~Y%o:+7J2|h2.q`SFd">
<field name="VAR" id="C_l,t!QA]Z!c2*(=tr}3">n</field>
<value name="LIST">
<block type="variables_get" id="%}uC-7NQDGZGttD(n/4l">
<field name="VAR" id="P=|){?hEsDq=EBy5/n3b">movedPointsForTops</field>
</block>
</value>
<statement name="DO">
<block type="bitbybit.babylon.mesh.createMeshInstanceAndTransformNoReturn" id="Z*mVUUYlCpesHp#zp@r|">
<value name="Mesh">
<block type="variables_get" id="xkCX1QLhoMYZ[-vc`Vx.">
<field name="VAR" id="my|Y~G+Aib^EEpdRR;id">bulbBoxMesh</field>
</block>
</value>
<value name="Position">
<block type="variables_get" id="N2m]Lf^,rT/{McQ0XZ@#">
<field name="VAR" id="C_l,t!QA]Z!c2*(=tr}3">n</field>
</block>
</value>
<value name="Rotation">
<block type="bitbybit.point.pointXYZ" id="60*!kN]v$-Hh6.BaSnw(">
<value name="X">
<block type="math_number" id="a1-$MkLg+F`k#Yzf`YX,">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="s7vSk6W-k%Nl;,Hue`lH">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="T/cTj_^pPCfAf?+~p=83">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Scaling">
<block type="bitbybit.point.pointXYZ" id="09Am%t]yrL)kRd+U6Tfn">
<value name="X">
<block type="math_number" id="C23h}Kr;_e0!IVp$UE*V">
<field name="NUM">1</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="}IV~,CmepYBOl$c-5zS;">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="vL:fwfi`R2.4Fz0?E9Cj">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<next>
<block type="variables_set" id="yTH39/,K0zCo6M`V9lMk">
<field name="VAR" id="5hRIZ.lOkM97i3[e)8BA">firstTime</field>
<value name="VALUE">
<block type="logic_boolean" id="G^u2,B9_Jh,Lm6q3^P7w">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="base_time_async_context" id="?81lm`|^MJYy[[syq@Q#">
<statement name="Then">
<block type="variables_set" id="F5AP|tZ.Y.Igof@X{d@F">
<field name="VAR" id="^O5PHAYPIZj:)XeB8~o{">glassGroupCompoundMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="%jrbyJ:RHP:8{KZMC-*P">
<value name="Promise">
<block type="variables_get" id="6~::M#@9*mtZ}YSu.[)W">
<field name="VAR" id="qtMp~e:nxaN%`VwUR|gC">glassGroupCompound</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="@/~AF,|uk3y|u6|qE_R`">
<field name="VAR" id="k*f._K?3rpWKa~1^%9ih">baseGroupCompoundMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="p|w.qhJo?fCJ!?=XZ|@4">
<value name="Promise">
<block type="variables_get" id="$,/h=5E`o;%#85CYVZUR">
<field name="VAR" id="dABBv7*ou}Uu625}QhUl">baseGroupCompound</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_forEach" id="*x]8w;/K/E]~`qJS^%CI">
<field name="VAR" id="F/d7r%}[z-=4Hy-G.Pbp">k</field>
<value name="LIST">
<block type="variables_get" id="{F=^Fl/Pr!;,(;YO(%{`">
<field name="VAR" id=":1*%s_jb6mlTX^IXip?q">pointsOnSurface</field>
</block>
</value>
<statement name="DO">
<block type="controls_if" id="NjOQ`KWe;_riZbdOTu@r">
<value name="IF0">
<block type="logic_negate" id="!H.BhlMF~{*Ag]U:VHpk">
<value name="BOOL">
<block type="variables_get" id="h8:|?ncxFspjCoXR;wR6">
<field name="VAR" id="5hRIZ.lOkM97i3[e)8BA">firstTime</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="bitbybit.babylon.mesh.createMeshInstanceAndTransformNoReturn" id="+o2`?(_(sHAd3S6,5BrI">
<value name="Mesh">
<block type="variables_get" id="S;R9o/I@amXu;Ud7CvFM">
<field name="VAR" id="^O5PHAYPIZj:)XeB8~o{">glassGroupCompoundMesh</field>
</block>
</value>
<value name="Position">
<block type="variables_get" id=":`%k^Z,|#[6g5j8p7y,c">
<field name="VAR" id="F/d7r%}[z-=4Hy-G.Pbp">k</field>
</block>
</value>
<value name="Rotation">
<block type="bitbybit.point.pointXYZ" id="+MdNvy=U$KNdLEkrCbv:">
<value name="X">
<block type="math_number" id="2N,{xiLp40hWD9jtPwvj">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="xolQj8gdiZ.!8xK,G!+s">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="lYWy,ep3k81@RX%SKQBt">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Scaling">
<block type="bitbybit.point.pointXYZ" id="fxY1ZS);HZR.Y#=sv+gE">
<value name="X">
<block type="math_number" id="3mvcjg8_Dh(Hfj#;gFxi">
<field name="NUM">1</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="gcu_;PM*IcUFTwhVkU6-">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="9)GA~4B?YE);(qop@VKX">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.createMeshInstanceAndTransformNoReturn" id="=[rx0-W@/gbB%z+{BJrS">
<value name="Mesh">
<block type="variables_get" id="bt%*(WeswFz:5iXBXiCD">
<field name="VAR" id="k*f._K?3rpWKa~1^%9ih">baseGroupCompoundMesh</field>
</block>
</value>
<value name="Position">
<block type="variables_get" id="%[uy9_=?j7i/0=GjdHx5">
<field name="VAR" id="F/d7r%}[z-=4Hy-G.Pbp">k</field>
</block>
</value>
<value name="Rotation">
<block type="bitbybit.point.pointXYZ" id="5Y_jvFLv$gtoTtY#X9G3">
<value name="X">
<block type="math_number" id="XW`iGk}p^n;O|d8kXYJ0">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="4?A4xfgky=nn9*vg*);g">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="/i/N-_q.AL0YlXOyDnGn">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Scaling">
<block type="bitbybit.point.pointXYZ" id="H!%SaX`HEfmj{E]wf(3(">
<value name="X">
<block type="math_number" id="TDOb9,r,J8vt`[aF0N8@">
<field name="NUM">1</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="B|x~1d1Pri3_Zz@QZa{3">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="Rl@%l;o:Uq(LDPc:KiOv">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</statement>
<next>
<block type="variables_set" id="S.3{.~cmg9qieo@BtbW~">
<field name="VAR" id="5hRIZ.lOkM97i3[e)8BA">firstTime</field>
<value name="VALUE">
<block type="logic_boolean" id="C#?BWGY+t$sR@I!0psoy">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id="b^Y%R4lH9~,Z4RKgv74." x="-5941" y="532">
<field name="NAME">makeHexGridAndVerticalLinesForIntersection</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="c#kJ;C3)uqb;T^/tn@yM">
<field name="VAR" id="*@zwFl?f~xJj7m:}u0LO">hexGridNrX</field>
<value name="VALUE">
<block type="math_number" id="3M7F*|t?i8p$AO+:{?_=">
<field name="NUM">6</field>
</block>
</value>
<next>
<block type="variables_set" id="0HqXNxp@Smk^^D$b[N8]">
<field name="VAR" id="Em0l*h`=,-xuV42;Jzt8">hexGridNrY</field>
<value name="VALUE">
<block type="math_number" id="G;=|^)?)r_eUpr4STbFa">
<field name="NUM">7</field>
</block>
</value>
<next>
<block type="variables_set" id="]ar-~Pc))3s{krU={lK_">
<field name="VAR" id="ibE`Uhb2`rE^/8i=7@VE">hexGridPoints</field>
<value name="VALUE">
<block type="bitbybit.point.transformPoints" id="Ato?WGkW8pg//vBPP@JE">
<value name="Points">
<block type="bitbybit.point.hexGrid" id="I1}WH([sQ022cinN_9KQ">
<value name="NrHexagonsY">
<block type="variables_get" id="jWEVVY$x424ARc7H}Pd1">
<field name="VAR" id="Em0l*h`=,-xuV42;Jzt8">hexGridNrY</field>
</block>
</value>
<value name="NrHexagonsX">
<block type="variables_get" id="/v:08pgKygD9|ytkFWF1">
<field name="VAR" id="*@zwFl?f~xJj7m:}u0LO">hexGridNrX</field>
</block>
</value>
<value name="RadiusHexagon">
<block type="variables_get" id="lDaN{)o./9BbnRcH}xv;">
<field name="VAR" id="RTBglAnS1@9+0]h3}7Mk">length</field>
</block>
</value>
</block>
</value>
<value name="Transformation">
<block type="bitbybit.babylon.transforms.rotationCenterX" id="T8?j[g6cK/FQTLgu_e@-">
<value name="Angle">
<block type="math_number" id="#1r`@!2ngSSH?I:W;a1x">
<field name="NUM">90</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.vector.vectorXYZ" id="U]r!sgY;A/Jg|3Bc_Iva">
<value name="X">
<block type="math_number" id="e_nFTnZ)@;Fdb)DnXS!Z">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="GMIf}SYSpd}!(l;B;pO!">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="SPU}oZxX4BTbL{WjuHk6">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="|?PN@Z3.)X1Na9#0E}Jb">
<field name="VAR" id=".:lEfGx]982[{A_Flu?{">hexGridPointsMoved</field>
<value name="VALUE">
<block type="bitbybit.point.transformPoints" id="V^+aR)z@qG#YDqcJf9Q3">
<value name="Points">
<block type="variables_get" id="G9je_#jhFB^6;XG9yIYd">
<field name="VAR" id="ibE`Uhb2`rE^/8i=7@VE">hexGridPoints</field>
</block>
</value>
<value name="Transformation">
<block type="bitbybit.babylon.transforms.translationXYZ" id="ky:e5ahoijASBk={%Hef">
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="I39GdtEp(G.}[14H?h`6">
<value name="X">
<block type="math_number" id="PK*#YA.8N2T{Tg^,upGV">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="qASB.+F3z[m}vq^iGGRl">
<field name="NUM">100</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="G:X#d}#G*+?@$$kL|.]c">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="|wIysM2*4hhxYTgggPGq">
<field name="VAR" id="W$l5QY6N?h-b5NX]n}WV">linesForIntersection</field>
<value name="VALUE">
<block type="bitbybit.line.linesBetweenStartAndEndPoints" id="/[tR{K7m%[7~2W.(TY$[">
<value name="StartPoints">
<block type="variables_get" id="DyWC.2:%T_mg3i#y7_Js">
<field name="VAR" id="ibE`Uhb2`rE^/8i=7@VE">hexGridPoints</field>
</block>
</value>
<value name="EndPoints">
<block type="variables_get" id="}MW+KTi@IlVznL?gb.Es">
<field name="VAR" id=".:lEfGx]982[{A_Flu?{">hexGridPointsMoved</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id="1KB!z){-AE@(S/9IFRP[" x="-3488" y="1106">
<field name="NAME">createCompoundMeshesForDrawing</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="C@aEedb!d.fzrJ/9J}r_">
<field name="VAR" id="qtMp~e:nxaN%`VwUR|gC">glassGroupCompound</field>
<value name="VALUE">
<block type="procedures_callreturn" id="F8?evoq[a`{7y~ddqC^B">
<mutation name="drawOcctShape">
<arg name="shape">
</arg>
<arg name="faceColour">
</arg>
<arg name="faceOpacity">
</arg>
<arg name="precision">
</arg>
</mutation>
<value name="ARG0">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="_~C:;.jO#Y1pb`hL^8Ql">
<value name="Shapes">
<block type="variables_get" id="~IIU]MEmmSq;B:6]cb[=">
<field name="VAR" id="!0p6ApRy`{K@6$_|`LSU">hexagonGlassOnSrf</field>
</block>
</value>
</block>
</value>
<value name="ARG1">
<block type="colour_picker" id="?kmgc7@:^^!##Ao!p~bC">
<field name="COLOUR">#ffcc33</field>
</block>
</value>
<value name="ARG2">
<block type="math_number" id="7:HugSS]X7$~sbdYfd7B">
<field name="NUM">0.3</field>
</block>
</value>
<value name="ARG3">
<block type="math_number" id="UScAF)*]fjz{5-.snI^h">
<field name="NUM">40</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="kS=z]ZWu2zM8Iuh*U,m7">
<field name="VAR" id="dABBv7*ou}Uu625}QhUl">baseGroupCompound</field>
<value name="VALUE">
<block type="procedures_callreturn" id="u~eX@L7m5,4Szj(.s57I">
<mutation name="drawOcctShape">
<arg name="shape">
</arg>
<arg name="faceColour">
</arg>
<arg name="faceOpacity">
</arg>
<arg name="precision">
</arg>
</mutation>
<value name="ARG0">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="(!z#fjM-REeZ%A|.|YrT">
<value name="Shapes">
<block type="variables_get" id="aA=Uazq)QgcD;y~n,W}k">
<field name="VAR" id="h(45Hn~+gx0.6%Q8o}#~">hexagonBaseOnSrf</field>
</block>
</value>
</block>
</value>
<value name="ARG1">
<block type="colour_picker" id="p7-zoCI4lR#/5sOQ:m(~">
<field name="COLOUR">#3366ff</field>
</block>
</value>
<value name="ARG2">
<block type="math_number" id="2^8bHh5#{#jR(zCb=Jwz">
<field name="NUM">1</field>
</block>
</value>
<value name="ARG3">
<block type="math_number" id="R,o9kXI=F:Sh=2_R6lGO">
<field name="NUM">100</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="1OSU{BqYujy5ojL_l;3_">
<field name="VAR" id="at.4_1NUcO=e%+/pU)}H">bulbBox</field>
<value name="VALUE">
<block type="procedures_callreturn" id="0D=x%EfcCt+o%xff1.$t">
<mutation name="drawOcctShape">
<arg name="shape">
</arg>
<arg name="faceColour">
</arg>
<arg name="faceOpacity">
</arg>
<arg name="precision">
</arg>
</mutation>
<value name="ARG0">
<block type="bitbybit.occt.shapes.solid.createBox" id="jSH@%zXe]FiNG~dISJhG">
<value name="Width">
<block type="math_number" id="IZ15_*/7e|2l35-a:vUL">
<field name="NUM">1</field>
</block>
</value>
<value name="Length">
<block type="math_number" id="Z54/cp=.QffU4Kq1rxt]">
<field name="NUM">1</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="UNEDI-:^C)uk;,XS?4hd">
<field name="NUM">4</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="Jn+1`TTRKzm4V{Yde?mw">
<value name="X">
<block type="math_number" id="r!3f_(x_eiQt^Zw[/FPw">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="V,$E*^:jT+?e}?t$Eh6*">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="a_jLk}@Kz@[:(/6berQ-">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ARG1">
<block type="colour_picker" id="%FIUc7VS]D^XG8@`zjIm">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="ARG2">
<block type="math_number" id="]%yH.$jp199SfE5q/.`8">
<field name="NUM">1</field>
</block>
</value>
<value name="ARG3">
<block type="math_number" id="PZ1kS`diwA@l~7?Q2@_]">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defreturn" id="LoHf^*rbq9a=;d@RlEvT" x="-2473" y="1128">
<mutation>
<arg name="shape" varid="4WruCBSlau2%ruGq!04D">
</arg>
<arg name="faceColour" varid="en+U|i2=vn%/#3)ye(SD">
</arg>
<arg name="faceOpacity" varid="!j+!g5nn:`O9kdtviDLc">
</arg>
<arg name="precision" varid=",M+tf-g=1M%qw%s|ZxT)">
</arg>
</mutation>
<field name="NAME">drawOcctShape</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="bEYI%vmRxWLrf1z@Jp$7">
<field name="VAR" id="CMn7/qoHh~%SLc(|PtQ1">occtShape</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="pyuo/37cQDQ7Jr5W-}ck">
<value name="Entity">
<block type="variables_get" id="g#[KH+rKA?m^YQ96vXAz">
<field name="VAR" id="4WruCBSlau2%ruGq!04D">shape</field>
</block>
</value>
<value name="Options">
<block type="bitbybit.draw.optionsOcctShape" id=":SqHv?o!1`bSPEV/rMm4">
<value name="FaceOpacity">
<block type="variables_get" id="TR?1SaaoRzV|Mo#*25uO">
<field name="VAR" id="!j+!g5nn:`O9kdtviDLc">faceOpacity</field>
</block>
</value>
<value name="EdgeOpacity">
<block type="math_number" id="dnKGD(ZI,NKzopp4@r}/">
<field name="NUM">1</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="7eKkYPPmzd)g53+6w*wb">
<field name="COLOUR">#bbbbff</field>
</block>
</value>
<value name="FaceColour">
<block type="variables_get" id="=c0B{E87kS?[mrhCP$8b">
<field name="VAR" id="en+U|i2=vn%/#3)ye(SD">faceColour</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="rIJG-Y$hA$F/2%PgS13b">
<field name="NUM">2</field>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="!WXUcv296X2Su$AThwkz">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="DrawFaces">
<block type="logic_boolean" id="Glpcy/}(El8P7vpwzFz|">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Precision">
<block type="variables_get" id="9o6#XM0[Dght2~6i:Uv2">
<field name="VAR" id=",M+tf-g=1M%qw%s|ZxT)">precision</field>
</block>
</value>
<value name="DrawEdgeIndexes">
<block type="logic_boolean" id="#w[ukJ{Tac4~Mx;n|fK,">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeIndexHeight">
<block type="math_number" id="Zb,t,e@Q587%$s_zL?4G">
<field name="NUM">0.06</field>
</block>
</value>
<value name="EdgeIndexColour">
<block type="colour_picker" id="O-ZFXSC+;EU6*/,i1g]j">
<field name="COLOUR">#bbbbff</field>
</block>
</value>
<value name="DrawFaceIndexes">
<block type="logic_boolean" id="*|bp~t?~B~IfE8V,P4ex">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="FaceIndexHeight">
<block type="math_number" id="W~fUzbKv3bT1eamvv%rh">
<field name="NUM">0.06</field>
</block>
</value>
<value name="FaceIndexColour">
<block type="colour_picker" id="bFCQaMUmBSvXF4=+WJB#">
<field name="COLOUR">#0000ff</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</statement>
<value name="RETURN">
<block type="variables_get" id=";a}4#}maP|k@HKYAJXLx">
<field name="VAR" id="CMn7/qoHh~%SLc(|PtQ1">occtShape</field>
</block>
</value>
</block>
<block type="procedures_defnoreturn" id="nEPQ`!^w!Oj]/NpXUhg." x="-5943" y="1316">
<field name="NAME">createNurbsSurfaceForHexGridProjections</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="Q{r{-_Nr$8rI6e0K]EMa">
<field name="VAR" id="tBlJB)v83o3exilg.RS7">nurbsSurface</field>
<value name="VALUE">
<block type="bitbybit.verb.surface.transformSurface" id="j@.s(qv]1oFOqi~`B7U!">
<value name="Surface">
<block type="bitbybit.verb.surface.createSurfaceByCorners" id="XE^*mhNL%(t-l~{)F8B%">
<value name="Point1">
<block type="bitbybit.point.transformPoint" id="u$006C!Lm(ZhOxNV]T@*">
<value name="Point">
<block type="lists_getIndex" id="[@AJ9G!E2!zrqyUXU}*r">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="=o4R?NgbQrR*}|M^{I-X">
<field name="VAR" id="ibE`Uhb2`rE^/8i=7@VE">hexGridPoints</field>
</block>
</value>
</block>
</value>
<value name="Transformation">
<block type="bitbybit.babylon.transforms.translationXYZ" id="]GDdfU::#l_=3KfU!]9S">
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="h;=6nV1IC+|;YSgb[i%M">
<value name="X">
<block type="math_number" id="J+?JZS7`c+$#FBOz6Kd[">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="o^{cNVk^00d@+;#e()C(">
<field name="NUM">100</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="qcZs;@3.zAYGKTx62glv">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Point2">
<block type="bitbybit.point.transformPoint" id="q;VZ?v=Q^nU|4A?zaYsw">
<value name="Point">
<block type="lists_getIndex" id="%BMIqzh{l.vc#WP,gDUl">
<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="1H70%(G^;|oFUx1KTx9:">
<field name="VAR" id="ibE`Uhb2`rE^/8i=7@VE">hexGridPoints</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="=yu7a2qbR%d*]^2Ki$mk">
<field name="VAR" id="Em0l*h`=,-xuV42;Jzt8">hexGridNrY</field>
</block>
</value>
</block>
</value>
<value name="Transformation">
<block type="bitbybit.babylon.transforms.translationXYZ" id="QaRDSqIXm1u_Uh{A{^Y_">
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="Pb{yto-.L_-r3C#KM;qy">
<value name="X">
<block type="math_number" id="9(E8]CNO_U^[R]/s(iTn">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="(@R`jP[AOO@~NA68#?N=">
<field name="NUM">50</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="@nn-o[wN6!z1#Du%S*/M">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Point3">
<block type="bitbybit.point.transformPoint" id="`iCwYGhbhg=`sqsWwQ{J">
<value name="Point">
<block type="lists_getIndex" id="^FPN6$`%R35pyOe[2yGI">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="variables_get" id="8Sn]S``P!u+hw5}.a7E,">
<field name="VAR" id="ibE`Uhb2`rE^/8i=7@VE">hexGridPoints</field>
</block>
</value>
</block>
</value>
<value name="Transformation">
<block type="bitbybit.babylon.transforms.translationXYZ" id="Y)G3p{C6OLLJJ8yie[tB">
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="0/2KUxgc[+TNv=%+YoN{">
<value name="X">
<block type="math_number" id="r={+Ae%C+qflh@wt$4:u">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="s(*2}0:BEKhqvmm+gEqG">
<field name="NUM">90</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="zr+p*GP=iF35D;Ipl?5a">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Point4">
<block type="bitbybit.point.transformPoint" id="4t1vmosr^$.XV/|zDV3a">
<value name="Point">
<block type="lists_getIndex" id="=Vo^29..!0lzGFZ}H?Fw">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_END</field>
<value name="VALUE">
<block type="variables_get" id="czx]0%jFXgCOJuof;8gw">
<field name="VAR" id="ibE`Uhb2`rE^/8i=7@VE">hexGridPoints</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="ynN,i_6g~T-!t_3^DBXB">
<field name="VAR" id="Em0l*h`=,-xuV42;Jzt8">hexGridNrY</field>
</block>
</value>
</block>
</value>
<value name="Transformation">
<block type="bitbybit.babylon.transforms.translationXYZ" id="23.jDjx~86*Dapg(n3@A">
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id=".kk[TPgUskX,`2+vvP[7">
<value name="X">
<block type="math_number" id="NP~ncB?.8Q0VtBTF;Zu!">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="9[I$rl`/oa!%P?Nqok1a">
<field name="NUM">40</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="];h^C-@BkU]e+=0@Z{WA">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Transformation">
<block type="lists_create_with" id="+$TZFbcu6nZPQx~j%-N]">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="bitbybit.babylon.transforms.scaleXYZ" id="=.eG9Q0#ho$73=ct/ynw">
<value name="ScaleXyz">
<block type="bitbybit.vector.vectorXYZ" id="3~9G8Ed2-6NuWwKiT03_">
<value name="X">
<block type="math_number" id="kS3dZD|$lF|B+$xU@^i=">
<field name="NUM">1.5</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="IYEF:ZU,SXBNu|MCxR($">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="8?EikjUP%L.PgeM5ldTh">
<field name="NUM">1.5</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.babylon.transforms.translationXYZ" id="W1oJ#ZlZVs@}rPvr)nqZ">
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="+g`TK8XW/cXYKRBiotAy">
<value name="X">
<block type="math_number" id="Uge9;EG;o=xztKF4s:vD">
<field name="NUM">-20</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Qxjaj$Sa82/6_7A!3*=)">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="x/4:{WkC6C+,j?69Pi`N">
<field name="NUM">-20</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id="kfBt}_BmCFrw$^wRrQ3K" x="-4427" y="1774">
<field name="NAME">higherQualityDrawingOfOCCModel</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="bitbybit.draw.drawAnyAsyncNoReturn" id="$+vy)UYtc)}1!R49+xwN">
<value name="Entity">
<block type="bitbybit.occt.transforms.translate" id="m%8NZW^l7n}Wg3X$=)yk">
<value name="Shape">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="4lbG:G):*GZI{}5[R6!1">
<value name="Shapes">
<block type="variables_get" id="PvIPt6@V^T8z|VDE${aW">
<field name="VAR" id="m;we^sq=tw]*PAEpOa1=">hexagonBase</field>
</block>
</value>
</block>
</value>
<value name="Translation">
<block type="lists_getIndex" id="5mKIBxHfU+mYkFk:$AN}">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="l!YaTr86J+6|]qd#ys,R">
<field name="VAR" id=":1*%s_jb6mlTX^IXip?q">pointsOnSurface</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="bitbybit.draw.optionsOcctShape" id="S3xVqkNM|Cbc:{WI+WD5">
<value name="FaceOpacity">
<block type="math_number" id="b1cA)P4|m_aQ!s[|jyBu">
<field name="NUM">0.2</field>
</block>
</value>
<value name="EdgeOpacity">
<block type="math_number" id="qKVc9[89qW%Y*`81LTg6">
<field name="NUM">0.5</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="XqR??(F%$eq5w8Y?HLA}">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="FaceColour">
<block type="colour_picker" id="iAp9#8xlS;8QNWr~$/Y!">
<field name="COLOUR">#cc33cc</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="%F_^rBc[8+I/$Ab{Yl`~">
<field name="NUM">5</field>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id=");[u$Rk5c*ylLBCU1Yre">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="DrawFaces">
<block type="logic_boolean" id="|!veKL5#?d=fj$+QgR1n">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Precision">
<block type="math_number" id="rh^^)xs)QYlk61ZsC4D_">
<field name="NUM">1</field>
</block>
</value>
<value name="DrawEdgeIndexes">
<block type="logic_boolean" id="kxD70SaUYwSw/1%O081~">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeIndexHeight">
<block type="math_number" id="$w+|DPD;/_)xK3/6zvLq">
<field name="NUM">0.06</field>
</block>
</value>
<value name="EdgeIndexColour">
<block type="colour_picker" id="5XkW5{9!%i%)KrNtzU0E">
<field name="COLOUR">#bbbbff</field>
</block>
</value>
<value name="DrawFaceIndexes">
<block type="logic_boolean" id="0Z7Kp|W.Y.)~,CVIi7;^">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="FaceIndexHeight">
<block type="math_number" id="jk)cM^P.rSD/Q/*FyDdO">
<field name="NUM">0.06</field>
</block>
</value>
<value name="FaceIndexColour">
<block type="colour_picker" id=".g4bsCReqIl.{`dRwz-F">
<field name="COLOUR">#0000ff</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.draw.drawAnyAsyncNoReturn" id="Rw648@6SUP2F.oQ!XOOJ">
<value name="Entity">
<block type="bitbybit.occt.transforms.translate" id="C+BakQ8k#0`A/!t=4$kS">
<value name="Shape">
<block type="variables_get" id="*s-f$}/c{DKp;Os8cSGo">
<field name="VAR" id="%5(}p*ezX1vn+ub0o0,%">filletBase</field>
</block>
</value>
<value name="Translation">
<block type="lists_getIndex" id="`9t*NP0=ek/gBWPYgt_R">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="Bn.-TY0`c!|cJn~]}h@Z">
<field name="VAR" id=":1*%s_jb6mlTX^IXip?q">pointsOnSurface</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="bitbybit.draw.optionsOcctShape" id=",zl$)?rVvY#5)k+kHjLS">
<value name="FaceOpacity">
<block type="math_number" id="mhhdOIS9d@pkW]dfrD)l">
<field name="NUM">1</field>
</block>
</value>
<value name="EdgeOpacity">
<block type="math_number" id="OknW^_wlyiAe,qhhsw^X">
<field name="NUM">1</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="QHL@h]29lzUn(awHRRvT">
<field name="COLOUR">#bbbbff</field>
</block>
</value>
<value name="FaceColour">
<block type="colour_picker" id="z/m5ir/]U+RE5f?ge6Bg">
<field name="COLOUR">#993399</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="2oj1_/@-!YQ:Pbv7%q!v">
<field name="NUM">2</field>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="zG0rT(zoV-`_r*C-S?0M">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="DrawFaces">
<block type="logic_boolean" id="0X:2hxdaRyonQN*P9KpL">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Precision">
<block type="math_number" id="T^1+liL;p]hLXE/m*q83">
<field name="NUM">1</field>
</block>
</value>
<value name="DrawEdgeIndexes">
<block type="logic_boolean" id="/DstrGJtJ`$r_UC;M_I@">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeIndexHeight">
<block type="math_number" id="bsH?6}qu5yuJ1{$tSL}Y">
<field name="NUM">0.06</field>
</block>
</value>
<value name="EdgeIndexColour">
<block type="colour_picker" id="H-?1o.Wyp)OwygKDJNt1">
<field name="COLOUR">#bbbbff</field>
</block>
</value>
<value name="DrawFaceIndexes">
<block type="logic_boolean" id=".#Yc7e*E}66j34z?Kowy">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="FaceIndexHeight">
<block type="math_number" id="0Awwnh_=|%(uHRC@TK_E">
<field name="NUM">0.06</field>
</block>
</value>
<value name="FaceIndexColour">
<block type="colour_picker" id="k3xad4r`{2oi,57kR@ZF">
<field name="COLOUR">#0000ff</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.draw.drawAnyAsyncNoReturn" id="zEAwA+!NMH`(tgx4/YcW">
<value name="Entity">
<block type="bitbybit.occt.transforms.translate" id="cUz5F#j{Ke,*7o]k@m(;">
<value name="Shape">
<block type="variables_get" id="#5c*T@=Baa)O9P/_qEM7">
<field name="VAR" id="E#ZK7*u*s/T05?Ar81uE">chamferGlass</field>
</block>
</value>
<value name="Translation">
<block type="lists_getIndex" id="7:]hJ0]_+to,j]CR_D8?">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="U{%((RZ7!jI-s!*@af!b">
<field name="VAR" id=":1*%s_jb6mlTX^IXip?q">pointsOnSurface</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="bitbybit.draw.optionsOcctShape" id="{OzM}LXt.0IXfvrdG[Ba">
<value name="FaceOpacity">
<block type="math_number" id="?4h1g?zMhp:PX}DQr1,8">
<field name="NUM">0.2</field>
</block>
</value>
<value name="EdgeOpacity">
<block type="math_number" id=",Nu][HhteR%VCXX^5l/[">
<field name="NUM">1</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="B7718(JUUVX*aPnxC[5q">
<field name="COLOUR">#bbbbff</field>
</block>
</value>
<value name="FaceColour">
<block type="colour_picker" id="cOjWO-|7dLo(^XMK6V(L">
<field name="COLOUR">#ffcc33</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="i+0c3:t:.S%7Q`-(Eg9/">
<field name="NUM">2</field>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="E9#;3!ydM)z_hG[s}%!g">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="DrawFaces">
<block type="logic_boolean" id="G[Gtfwz[..Yr5!WhOU-)">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Precision">
<block type="math_number" id="sGY?neaud@x4`H={1A8X">
<field name="NUM">1</field>
</block>
</value>
<value name="DrawEdgeIndexes">
<block type="logic_boolean" id="#r]k4zIo[i1$]$]OLG2y">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeIndexHeight">
<block type="math_number" id="I-^ji#.S3TUXY9/D~{_i">
<field name="NUM">0.06</field>
</block>
</value>
<value name="EdgeIndexColour">
<block type="colour_picker" id="ugrl3+8Lx8!9M#be8Ve^">
<field name="COLOUR">#bbbbff</field>
</block>
</value>
<value name="DrawFaceIndexes">
<block type="logic_boolean" id="bL|hbFx`{jV.8=.!4_Ke">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="FaceIndexHeight">
<block type="math_number" id="oe|d3g#p^vO$q*3vw3P=">
<field name="NUM">0.06</field>
</block>
</value>
<value name="FaceIndexColour">
<block type="colour_picker" id="-?)5dV@/J[lr*aT.Zr`N">
<field name="COLOUR">#0000ff</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id="oXwn0r(Y._:,lB?WPd@]" x="-5950" y="2172">
<field name="NAME">drawVerticalColumns</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="bitbybit.draw.drawAnyAsyncNoReturn" id="VPKjNj{R0k%`^9{O?Mf8">
<value name="Entity">
<block type="bitbybit.line.linesBetweenStartAndEndPoints" id="{!uwgb;.pUEK,Y1@AB0Q">
<value name="StartPoints">
<block type="variables_get" id="%p(]=35Al]o4p1!nOJ?`">
<field name="VAR" id="ibE`Uhb2`rE^/8i=7@VE">hexGridPoints</field>
</block>
</value>
<value name="EndPoints">
<block type="variables_get" id="(ByuZ/DL86{c|;wFq%qv">
<field name="VAR" id="P=|){?hEsDq=EBy5/n3b">movedPointsForTops</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="bitbybit.draw.optionsSimple" id="DXFA`XbSw9T}pv!cZYgj">
<value name="Colours">
<block type="colour_picker" id="dZtU~0*`~dfCTW6/1:aZ">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="Size">
<block type="math_number" id="b)3iCYe!(E3(Hwe|~Y}4">
<field name="NUM">50</field>
</block>
</value>
<value name="Opacity">
<block type="math_number" id="?hD[Iib96a}(L:Pwm%x.">
<field name="NUM">0.5</field>
</block>
</value>
<value name="Updatable">
<block type="logic_boolean" id="G+oztpcqj}Mv~`]O+gOT">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id="AKX5j#fLbs0.Ig{!%G7j" x="-5957" y="2688">
<field name="NAME">findIntersectionsOnSurface</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="1V{#R.4oU_iXi2o+GiL!">
<field name="VAR" id=":1*%s_jb6mlTX^IXip?q">pointsOnSurface</field>
<value name="VALUE">
<block type="lists_create_with" id="-Ghjn[%7cP{M4A(OT|EV">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_forEach" id=".o,!(HH*$o;|bbAf~Ep@">
<field name="VAR" id="m:AuG!cTPboqR76Eb`FC">m</field>
<value name="LIST">
<block type="bitbybit.line.convertLinesToNurbsCurves" id=")T@v(#owu{oYsjaC%tvi">
<value name="Lines">
<block type="variables_get" id="Y6uci=}l)*Q+2FL8!x%$">
<field name="VAR" id="W$l5QY6N?h-b5NX]n}WV">linesForIntersection</field>
</block>
</value>
</block>
</value>
<statement name="DO">
<block type="lists_setIndex" id="x#o0$j;2Mg[9i6s^=B:.">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="Rpi1!PtEb^W@58~!V{DT">
<field name="VAR" id=":1*%s_jb6mlTX^IXip?q">pointsOnSurface</field>
</block>
</value>
<value name="TO">
<block type="lists_getIndex" id="cyE#TX?}sAUy+v~n-B;,">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="bitbybit.verb.intersect.curveSurfaceCurvePoints" id="W~7cw[bH9w,_-KAN]Dkf">
<value name="Intersections">
<block type="bitbybit.verb.intersect.curveAndSurface" id="Elr]NCw[VGg|YWcm*D/B">
<value name="Curve">
<block type="variables_get" id="NxE299(=M^Ba2sgbVopU">
<field name="VAR" id="m:AuG!cTPboqR76Eb`FC">m</field>
</block>
</value>
<value name="Surface">
<block type="variables_get" id=":Q3eUqY4tmZ.3as/TIfm">
<field name="VAR" id="tBlJB)v83o3exilg.RS7">nurbsSurface</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</xml>