Script: Example in Blockly

Example in Blockly picture
Type
Blockly logo indicatorblockly
Date Created
Mar 19, 2021, 2:29:34 PM
Last Edit Date
Apr 26, 2024, 9:19:15 AM

Project Information

This example is showing off the possibilities of Async OpenCascade components and advanced rendering of "Bit by bit developers" application. You might need to have a more powerful GPU to have the scene rendered at good frame rates.

View Full Project

Script Code

<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>
Plans & Pricing

Choose Your Plan

Editor plans for 3D development, API keys for server-side CAD algorithms

B2B

ENTERPRISE

Custom pricing

Custom software development, dedicated servers & CAD automation at scale.

CAD Automation & Software
  • Custom software development
  • Cloud CAD automation pipelines
  • 3D configurators (STEP & GLTF)
  • Batch export jobs
  • Custom algorithms & deployment
Infrastructure & Support
  • Custom compute allocation
  • Dedicated / VPS server tenants
  • Long-running computation jobs
  • Custom upload limits & overage
  • SLA & premium support