Script: Example in Blockly

Example in Blockly picture
Type
Blockly logo indicatorblockly
Date Created
Mar 19, 2021, 1:21:20 PM
Last Edit Date
Dec 5, 2023, 7:04:16 PM

Project Information

There are two NURBS surfaces created above each other from corner points. Then both surfaces are subdivided in equal number of iso-curves, those then are subdivided into points and those points are used to create lines between both surfaces.

View Full Project

Script Code

<xml xmlns="https://developers.google.com/blockly/xml">
 <variables>
  <variable id="O7c=GiU;zNt@vKs/m[N$">firstSurface</variable>
  <variable id="DBBAA_B-9ttoQM_NShD6">secondSurface</variable>
  <variable id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</variable>
  <variable id="*su=w/cS:#=7mL;;$O*i">isocurvesFirstSurface</variable>
  <variable id="MDS|!$G|Bpvw+}UW?vBs">isocurvesSecondSurface</variable>
  <variable id="$t4bS;nP#oWOIHi~(:E!">i</variable>
  <variable id="c[@Z^2fEqnXR7K?j:|64">pointsOnFirstSurface</variable>
  <variable id="X{rv=l[l3y$mV^p^YkOK">pointsOnSecondSurface</variable>
  <variable id="`:$.yYSKT@8uY`_iGkF~">j</variable>
  <variable id="crPiAB5PWZ8z^4l#]+Mt">m</variable>
  <variable id="F`zLwrp|UoB12dYhd@Wk">linesBetweenSurfaces</variable>
  <variable id=":Q)jHj9*[OpMazYF]:BI">n</variable>
 </variables>
 <block type="bitbybit.draw.drawGridMeshNoReturn" id="t^b0n,cvvb48jm4PGFff" x="151" y="156">
  <value name="Width">
   <block type="math_number" id="SLWrNm5e}BhhV.-D3R$|">
    <field name="NUM">400</field>
   </block>
  </value>
  <value name="Height">
   <block type="math_number" id="!cTnnCHh}Ds|yTYPOu3o">
    <field name="NUM">400</field>
   </block>
  </value>
  <value name="Subdivisions">
   <block type="math_number" id="J`G5_Z3a8F1.=:#74dcS">
    <field name="NUM">10</field>
   </block>
  </value>
  <value name="MajorUnitFrequency">
   <block type="math_number" id="1sux.:ef9TLt5v8/qqpn">
    <field name="NUM">10</field>
   </block>
  </value>
  <value name="MinorUnitVisibility">
   <block type="math_number" id="#g_~C[gdHaqzTN{#]XF]">
    <field name="NUM">0.45</field>
   </block>
  </value>
  <value name="GridRatio">
   <block type="math_number" id="D%eBE(q=;s}2A?{8sI$6">
    <field name="NUM">0.5</field>
   </block>
  </value>
  <value name="Opacity">
   <block type="math_number" id="U212Y8.m;-DYCT${~=-?">
    <field name="NUM">0.5</field>
   </block>
  </value>
  <value name="BackFaceCulling">
   <block type="logic_boolean" id="}iQ?B:H)ZcV-?M64#$_4">
    <field name="BOOL">FALSE</field>
   </block>
  </value>
  <value name="MainColor">
   <block type="colour_picker" id="ZzGU#;1F~FJmKi8/id?R">
    <field name="COLOUR">#ffffff</field>
   </block>
  </value>
  <value name="SecondaryColor">
   <block type="colour_picker" id="lq1HqaHYd:/z0xiDmY7V">
    <field name="COLOUR">#ffffff</field>
   </block>
  </value>
  <next>
   <block type="variables_set" id="J%|`OBPE{Wd+5CH6L8/M">
    <field name="VAR" id="O7c=GiU;zNt@vKs/m[N$">firstSurface</field>
    <value name="VALUE">
     <block type="bitbybit.verb.surface.createSurfaceByCorners" id="5:E@`hqy_(^.~*r`S$ex">
      <value name="Point1">
       <block type="bitbybit.point.pointXYZ" id="JO6]#(EiHV-7w)O9*+WN">
        <value name="X">
         <block type="math_number" id="O=%Q06!V~T;qy%yqtr-.">
          <field name="NUM">-5</field>
         </block>
        </value>
        <value name="Y">
         <block type="math_number" id="BIHd#9.=Qjk{QU5m_~G[">
          <field name="NUM">0</field>
         </block>
        </value>
        <value name="Z">
         <block type="math_number" id="wYcFqg/b^8%@Q.u[s@t=">
          <field name="NUM">-9</field>
         </block>
        </value>
       </block>
      </value>
      <value name="Point2">
       <block type="bitbybit.point.pointXYZ" id="ieB-@g{?wm`0aad4I1n:">
        <value name="X">
         <block type="math_number" id="=`xsGY20q7^;qF3F_1Nh">
          <field name="NUM">-5</field>
         </block>
        </value>
        <value name="Y">
         <block type="math_number" id="V)RL*6UNsB8%}3_9%U,3">
          <field name="NUM">9</field>
         </block>
        </value>
        <value name="Z">
         <block type="math_number" id="kz@}FpYOd;4SvezO3qyV">
          <field name="NUM">15</field>
         </block>
        </value>
       </block>
      </value>
      <value name="Point3">
       <block type="bitbybit.point.pointXYZ" id="c(D==PO[dKbHkFO9N{e5">
        <value name="X">
         <block type="math_number" id="[*Y%!AoW+dD%)qB-%=CC">
          <field name="NUM">5</field>
         </block>
        </value>
        <value name="Y">
         <block type="math_number" id="k{;@X4usSBPRia,?eK[u">
          <field name="NUM">0</field>
         </block>
        </value>
        <value name="Z">
         <block type="math_number" id="w$qufcO4|.jPY,f;N#4C">
          <field name="NUM">9</field>
         </block>
        </value>
       </block>
      </value>
      <value name="Point4">
       <block type="bitbybit.point.pointXYZ" id="J-%a`qPv]l1F8SaGq%wn">
        <value name="X">
         <block type="math_number" id="s_~ctJrfh$cP]6=We+We">
          <field name="NUM">5</field>
         </block>
        </value>
        <value name="Y">
         <block type="math_number" id="MX]3X](9BiikM_y]mdd{">
          <field name="NUM">6</field>
         </block>
        </value>
        <value name="Z">
         <block type="math_number" id="~Q#MR!7hopaFl{FyuHol">
          <field name="NUM">-12</field>
         </block>
        </value>
       </block>
      </value>
     </block>
    </value>
    <next>
     <block type="variables_set" id="lS+ly:hroDdM(,0krM.q">
      <field name="VAR" id="DBBAA_B-9ttoQM_NShD6">secondSurface</field>
      <value name="VALUE">
       <block type="bitbybit.verb.surface.createSurfaceByCorners" id="f$JX/$OLnkZw`P3-LeJ(">
        <value name="Point1">
         <block type="bitbybit.point.pointXYZ" id="`B9(zI_`p8:pV#Yo]75G">
          <value name="X">
           <block type="math_number" id="$7pgB;%b|+Rw4FDKye_]">
            <field name="NUM">-4</field>
           </block>
          </value>
          <value name="Y">
           <block type="math_number" id="``P2LH5({3V1#bSNnHKh">
            <field name="NUM">0</field>
           </block>
          </value>
          <value name="Z">
           <block type="math_number" id="Z^1{rI[-%1uk.xyG}(^z">
            <field name="NUM">-8</field>
           </block>
          </value>
         </block>
        </value>
        <value name="Point2">
         <block type="bitbybit.point.pointXYZ" id=".1/O]FWME{#!*6Jcd.Mp">
          <value name="X">
           <block type="math_number" id=":Jea;WhX+dxRMdr!ZTAd">
            <field name="NUM">-4</field>
           </block>
          </value>
          <value name="Y">
           <block type="math_number" id="(fOXO@InHDa%PpELQYRe">
            <field name="NUM">5</field>
           </block>
          </value>
          <value name="Z">
           <block type="math_number" id="zO7cpKM]!^{N|*F@i^Yr">
            <field name="NUM">10</field>
           </block>
          </value>
         </block>
        </value>
        <value name="Point3">
         <block type="bitbybit.point.pointXYZ" id="gFXw?}GpU*Pp=UizLS}_">
          <value name="X">
           <block type="math_number" id="x]lnK90=bhTVcdNM7_oN">
            <field name="NUM">4</field>
           </block>
          </value>
          <value name="Y">
           <block type="math_number" id="m`hXYGx]5G%vlgNfbL/y">
            <field name="NUM">0</field>
           </block>
          </value>
          <value name="Z">
           <block type="math_number" id="|a}Xq~L/B$kW3M=RN9_v">
            <field name="NUM">8</field>
           </block>
          </value>
         </block>
        </value>
        <value name="Point4">
         <block type="bitbybit.point.pointXYZ" id="[ZL*cLw$;::756;P5Heo">
          <value name="X">
           <block type="math_number" id="6Pn`aV2Orc|Wkr;n;+nj">
            <field name="NUM">4</field>
           </block>
          </value>
          <value name="Y">
           <block type="math_number" id="3jCfBr:9uV$~]lG9QqTi">
            <field name="NUM">4</field>
           </block>
          </value>
          <value name="Z">
           <block type="math_number" id="z!b_NE*0zAq:uOc`omjD">
            <field name="NUM">-10</field>
           </block>
          </value>
         </block>
        </value>
       </block>
      </value>
      <next>
       <block type="variables_set" id="(,6(S^;:#5#JuqcpElQ@">
        <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
        <value name="VALUE">
         <block type="math_number" id="g^QtO[2qP4m4;j*uG^0|">
          <field name="NUM">0</field>
         </block>
        </value>
        <next>
         <block type="variables_set" id=")!`XkSeKd23YW6`aSF@?">
          <field name="VAR" id="*su=w/cS:#=7mL;;$O*i">isocurvesFirstSurface</field>
          <value name="VALUE">
           <block type="lists_create_with" id="=M5Qlvh!-z]3!.RV(-yY">
            <mutation items="0">
            </mutation>
           </block>
          </value>
          <next>
           <block type="variables_set" id="qnZna=5_Pde$[7u=PSb[">
            <field name="VAR" id="MDS|!$G|Bpvw+}UW?vBs">isocurvesSecondSurface</field>
            <value name="VALUE">
             <block type="lists_create_with" id="C*tIU?ug4=~Wxw?(%rD?">
              <mutation items="0">
              </mutation>
             </block>
            </value>
            <next>
             <block type="controls_for" id="slK2huD]19pii`SORPrP">
              <field name="VAR" id="$t4bS;nP#oWOIHi~(:E!">i</field>
              <value name="FROM">
               <block type="math_number" id=";T~F#;u~Et?OTVSbbKDf">
                <field name="NUM">0.05</field>
               </block>
              </value>
              <value name="TO">
               <block type="math_number" id="NZo3r6Dd2]hf)@KWqfaH">
                <field name="NUM">1</field>
               </block>
              </value>
              <value name="BY">
               <block type="math_number" id="-|#E/Pe_iSfZ`ABhl,p{">
                <field name="NUM">0.05</field>
               </block>
              </value>
              <statement name="DO">
               <block type="lists_setIndex" id="EfQD.0)tD@]-rg|BfGL|">
                <mutation at="true">
                </mutation>
                <field name="MODE">SET</field>
                <field name="WHERE">FROM_START</field>
                <value name="LIST">
                 <block type="variables_get" id="9+VQjckk,tO8xlC3Y!Eh">
                  <field name="VAR" id="*su=w/cS:#=7mL;;$O*i">isocurvesFirstSurface</field>
                 </block>
                </value>
                <value name="AT">
                 <block type="variables_get" id="AkT,9XRPN=z8^5~BR#,B">
                  <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                 </block>
                </value>
                <value name="TO">
                 <block type="bitbybit.verb.surface.isocurve" id="IRq(J_+*0*Mh:F0u^%:%">
                  <value name="Surface">
                   <block type="variables_get" id="(ljW+[-}=vnzwE8[RcVN">
                    <field name="VAR" id="O7c=GiU;zNt@vKs/m[N$">firstSurface</field>
                   </block>
                  </value>
                  <value name="Parameter">
                   <block type="variables_get" id="#r`yZ)|`z:%#,04*nJ{a">
                    <field name="VAR" id="$t4bS;nP#oWOIHi~(:E!">i</field>
                   </block>
                  </value>
                  <value name="UseV">
                   <block type="logic_boolean" id="h!Yx(?KC-_!U^l!}9a-e">
                    <field name="BOOL">FALSE</field>
                   </block>
                  </value>
                 </block>
                </value>
                <next>
                 <block type="lists_setIndex" id="X`b-/~aHJIuLC)6mm==@">
                  <mutation at="true">
                  </mutation>
                  <field name="MODE">SET</field>
                  <field name="WHERE">FROM_START</field>
                  <value name="LIST">
                   <block type="variables_get" id="E0biKcQ=z$?n!Hy^G=1R">
                    <field name="VAR" id="MDS|!$G|Bpvw+}UW?vBs">isocurvesSecondSurface</field>
                   </block>
                  </value>
                  <value name="AT">
                   <block type="variables_get" id="huWY)=,(],=Hk_5*J@se">
                    <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                   </block>
                  </value>
                  <value name="TO">
                   <block type="bitbybit.verb.surface.isocurve" id="IPiNW$%5)-mrW|Wv|h^!">
                    <value name="Surface">
                     <block type="variables_get" id="AKk`|Syp[KtGHg#;yu=a">
                      <field name="VAR" id="DBBAA_B-9ttoQM_NShD6">secondSurface</field>
                     </block>
                    </value>
                    <value name="Parameter">
                     <block type="variables_get" id="ido1!MM8v5)G_z,i[!W4">
                      <field name="VAR" id="$t4bS;nP#oWOIHi~(:E!">i</field>
                     </block>
                    </value>
                    <value name="UseV">
                     <block type="logic_boolean" id="m+o/sxHED.NGnk)xL?d.">
                      <field name="BOOL">FALSE</field>
                     </block>
                    </value>
                   </block>
                  </value>
                  <next>
                   <block type="variables_set" id="fsE_QjfA|gBjupiJuZwM">
                    <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                    <value name="VALUE">
                     <block type="math_arithmetic" id=")wcvkO{y@c;qy-.-]tkm">
                      <field name="OP">ADD</field>
                      <value name="A">
                       <block type="variables_get" id="GwrWh-(Zi3x!u20-[A#h">
                        <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                       </block>
                      </value>
                      <value name="B">
                       <block type="math_number" id="*NY=(}#:fD?CPpdrVNUv">
                        <field name="NUM">1</field>
                       </block>
                      </value>
                     </block>
                    </value>
                   </block>
                  </next>
                 </block>
                </next>
               </block>
              </statement>
              <next>
               <block type="variables_set" id="~kMdR_t},%=EIp;!^Q:l">
                <field name="VAR" id="c[@Z^2fEqnXR7K?j:|64">pointsOnFirstSurface</field>
                <value name="VALUE">
                 <block type="lists_create_with" id="8(g,cCi84=GuqS@r8hqW">
                  <mutation items="0">
                  </mutation>
                 </block>
                </value>
                <next>
                 <block type="variables_set" id="9D[L8)gWI0QGXuoA1D#)">
                  <field name="VAR" id="X{rv=l[l3y$mV^p^YkOK">pointsOnSecondSurface</field>
                  <value name="VALUE">
                   <block type="lists_create_with" id=";M;:f)z`1YG/|;:/.*nQ">
                    <mutation items="0">
                    </mutation>
                   </block>
                  </value>
                  <next>
                   <block type="variables_set" id="LYdj:Q0X,43g81JRq8V(">
                    <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                    <value name="VALUE">
                     <block type="math_number" id="N0sm6Y2#^O;/,D!BpCuc">
                      <field name="NUM">0</field>
                     </block>
                    </value>
                    <next>
                     <block type="controls_forEach" id="rn~I2Bf.*^U+bb3TIpJM">
                      <field name="VAR" id="`:$.yYSKT@8uY`_iGkF~">j</field>
                      <value name="LIST">
                       <block type="variables_get" id="yh%C|m.,#{=}zMYb6T]6">
                        <field name="VAR" id="*su=w/cS:#=7mL;;$O*i">isocurvesFirstSurface</field>
                       </block>
                      </value>
                      <statement name="DO">
                       <block type="controls_forEach" id="7vYZ_|0BAcfs}W+F|pb1">
                        <field name="VAR" id="crPiAB5PWZ8z^4l#]+Mt">m</field>
                        <value name="LIST">
                         <block type="bitbybit.verb.curve.divideByEqualArcLengthToPoints" id="22x7x,~r{ro0M+v7q+cH">
                          <value name="Curve">
                           <block type="variables_get" id="%XME^Pg5O7Nb9K{q%XDo">
                            <field name="VAR" id="`:$.yYSKT@8uY`_iGkF~">j</field>
                           </block>
                          </value>
                          <value name="Subdivision">
                           <block type="math_number" id="dd@5hcLta[tN/5yV`%;w">
                            <field name="NUM">20</field>
                           </block>
                          </value>
                         </block>
                        </value>
                        <statement name="DO">
                         <block type="lists_setIndex" id="_$7bm!+.~A-0.%x9=)Bk">
                          <mutation at="true">
                          </mutation>
                          <field name="MODE">INSERT</field>
                          <field name="WHERE">FROM_START</field>
                          <value name="LIST">
                           <block type="variables_get" id="WoPzq,x{yu8}%}k+{cC9">
                            <field name="VAR" id="c[@Z^2fEqnXR7K?j:|64">pointsOnFirstSurface</field>
                           </block>
                          </value>
                          <value name="AT">
                           <block type="variables_get" id="QWpq=FbRF*MN{Dv:f{bA">
                            <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                           </block>
                          </value>
                          <value name="TO">
                           <block type="variables_get" id="0/NPP3],@f[}%rl#L%f}">
                            <field name="VAR" id="crPiAB5PWZ8z^4l#]+Mt">m</field>
                           </block>
                          </value>
                          <next>
                           <block type="variables_set" id="PS|Ttb9fB/Cd^F0~aefl">
                            <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                            <value name="VALUE">
                             <block type="math_arithmetic" id="3q$=IfRjk(d`ZaY.IJiR">
                              <field name="OP">ADD</field>
                              <value name="A">
                               <block type="variables_get" id="6ZvAR^-B(uf;|rhLnWLz">
                                <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                               </block>
                              </value>
                              <value name="B">
                               <block type="math_number" id="_^7io^*yv.BZqh:)L(h7">
                                <field name="NUM">1</field>
                               </block>
                              </value>
                             </block>
                            </value>
                           </block>
                          </next>
                         </block>
                        </statement>
                       </block>
                      </statement>
                      <next>
                       <block type="variables_set" id="_;g#P,G?k`~WT~FnX9(e">
                        <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                        <value name="VALUE">
                         <block type="math_number" id="`tLuk[og;[Oue71]SP!T">
                          <field name="NUM">0</field>
                         </block>
                        </value>
                        <next>
                         <block type="controls_forEach" id="g+v|ymZ3Vk*/RLv7g,F/">
                          <field name="VAR" id="`:$.yYSKT@8uY`_iGkF~">j</field>
                          <value name="LIST">
                           <block type="variables_get" id="yzEJl{G1Doa;N#(Vy`#k">
                            <field name="VAR" id="MDS|!$G|Bpvw+}UW?vBs">isocurvesSecondSurface</field>
                           </block>
                          </value>
                          <statement name="DO">
                           <block type="controls_forEach" id="aB|6RvOpg(|e`[v6)3N8">
                            <field name="VAR" id="crPiAB5PWZ8z^4l#]+Mt">m</field>
                            <value name="LIST">
                             <block type="bitbybit.verb.curve.divideByEqualArcLengthToPoints" id="a`9pkN*m+vlD,1s%HQB*">
                              <value name="Curve">
                               <block type="variables_get" id="dHNJhmIjeKeI$#rMKr?G">
                                <field name="VAR" id="`:$.yYSKT@8uY`_iGkF~">j</field>
                               </block>
                              </value>
                              <value name="Subdivision">
                               <block type="math_number" id="/G)bTp3xt`tTzkM%VSw:">
                                <field name="NUM">20</field>
                               </block>
                              </value>
                             </block>
                            </value>
                            <statement name="DO">
                             <block type="lists_setIndex" id="LRo7*a-.k:nr8yW-rN2)">
                              <mutation at="true">
                              </mutation>
                              <field name="MODE">INSERT</field>
                              <field name="WHERE">FROM_START</field>
                              <value name="LIST">
                               <block type="variables_get" id="_GLZhAjeOX@+|f6cgK!_">
                                <field name="VAR" id="X{rv=l[l3y$mV^p^YkOK">pointsOnSecondSurface</field>
                               </block>
                              </value>
                              <value name="AT">
                               <block type="variables_get" id="1mg-bH`+ghSL4ShyH`2F">
                                <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                               </block>
                              </value>
                              <value name="TO">
                               <block type="variables_get" id="CvnX$gSIBvCJ2A}!,N%;">
                                <field name="VAR" id="crPiAB5PWZ8z^4l#]+Mt">m</field>
                               </block>
                              </value>
                              <next>
                               <block type="variables_set" id="h;],;p_]/0,0#em$gWDC">
                                <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                                <value name="VALUE">
                                 <block type="math_arithmetic" id="PI;yw.5}3^}l(]:L~*;`">
                                  <field name="OP">ADD</field>
                                  <value name="A">
                                   <block type="variables_get" id="ggo8F%u_F,j?{z$}b$[g">
                                    <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                                   </block>
                                  </value>
                                  <value name="B">
                                   <block type="math_number" id="/eq8jqQ}B:LvSJ`7}oeE">
                                    <field name="NUM">1</field>
                                   </block>
                                  </value>
                                 </block>
                                </value>
                               </block>
                              </next>
                             </block>
                            </statement>
                           </block>
                          </statement>
                          <next>
                           <block type="variables_set" id="y{KKnOSk]fE_lPiL2xwM">
                            <field name="VAR" id="F`zLwrp|UoB12dYhd@Wk">linesBetweenSurfaces</field>
                            <value name="VALUE">
                             <block type="lists_create_with" id="4NkI,^S|fGn8YOr,t_OA">
                              <mutation items="0">
                              </mutation>
                             </block>
                            </value>
                            <next>
                             <block type="controls_for" id="QdA]4z]xM3U^XQ~VLjg7">
                              <field name="VAR" id=":Q)jHj9*[OpMazYF]:BI">n</field>
                              <value name="FROM">
                               <block type="math_number" id="*mxNOrrgVp%ru;HhG8:;">
                                <field name="NUM">1</field>
                               </block>
                              </value>
                              <value name="TO">
                               <block type="variables_get" id=")!@Jxn0^]iw4qAB-%:5%">
                                <field name="VAR" id="9l93qjRwz*h}1Ry]=Obo">iterationCounter</field>
                               </block>
                              </value>
                              <value name="BY">
                               <block type="math_number" id="vxJEuWAb${*@yagAv$eC">
                                <field name="NUM">1</field>
                               </block>
                              </value>
                              <statement name="DO">
                               <block type="lists_setIndex" id="ev?z,4=#,gM#I:9JE;)|">
                                <mutation at="true">
                                </mutation>
                                <field name="MODE">INSERT</field>
                                <field name="WHERE">FROM_START</field>
                                <value name="LIST">
                                 <block type="variables_get" id="E-`Ti_/)d2_nJLSkuDnX">
                                  <field name="VAR" id="F`zLwrp|UoB12dYhd@Wk">linesBetweenSurfaces</field>
                                 </block>
                                </value>
                                <value name="AT">
                                 <block type="variables_get" id="vqF]88H!?+2D1}_v6RUT">
                                  <field name="VAR" id=":Q)jHj9*[OpMazYF]:BI">n</field>
                                 </block>
                                </value>
                                <value name="TO">
                                 <block type="bitbybit.line.create" id="Mj^SlFHQx9ruUIBlaG42">
                                  <value name="Start">
                                   <block type="lists_getIndex" id="yVZX!RRd$t}WL2BGN~sf">
                                    <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="*kTdluQ(fJ]PF5kss^2E">
                                      <field name="VAR" id="c[@Z^2fEqnXR7K?j:|64">pointsOnFirstSurface</field>
                                     </block>
                                    </value>
                                    <value name="AT">
                                     <block type="variables_get" id="q{8u#+$dm1%G]u)6=|5~">
                                      <field name="VAR" id=":Q)jHj9*[OpMazYF]:BI">n</field>
                                     </block>
                                    </value>
                                   </block>
                                  </value>
                                  <value name="End">
                                   <block type="lists_getIndex" id="?Sm4oY~5_Rw`*YUCxoJ@">
                                    <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="vi9_HR!Q:a!LyRw8Li4V">
                                      <field name="VAR" id="X{rv=l[l3y$mV^p^YkOK">pointsOnSecondSurface</field>
                                     </block>
                                    </value>
                                    <value name="AT">
                                     <block type="variables_get" id="f+#r(${04TXK4~Aa@50T">
                                      <field name="VAR" id=":Q)jHj9*[OpMazYF]:BI">n</field>
                                     </block>
                                    </value>
                                   </block>
                                  </value>
                                 </block>
                                </value>
                               </block>
                              </statement>
                              <next>
                               <block type="bitbybit.draw.drawAnyAsyncNoReturn" id="l[:yxmVpo*PuaJH5:irQ">
                                <value name="Entity">
                                 <block type="variables_get" id="oIl+(g$c1.45=U:HUE+m">
                                  <field name="VAR" id="F`zLwrp|UoB12dYhd@Wk">linesBetweenSurfaces</field>
                                 </block>
                                </value>
                                <value name="Options">
                                 <block type="bitbybit.draw.optionsSimple" id="q8B,+[R2qi)IJvF$(5IE">
                                  <value name="Colours">
                                   <block type="colour_picker" id="_}nEyon$9^9cYU#LcaZ4">
                                    <field name="COLOUR">#ffffff</field>
                                   </block>
                                  </value>
                                  <value name="Size">
                                   <block type="math_number" id="[!!eC]si8KuBGs)0ZBv-">
                                    <field name="NUM">5</field>
                                   </block>
                                  </value>
                                  <value name="Opacity">
                                   <block type="math_number" id="k.X!lXFYp^j3QeSDi?=w">
                                    <field name="NUM">0.5</field>
                                   </block>
                                  </value>
                                  <value name="Updatable">
                                   <block type="logic_boolean" id="g;=0$v1L|vC#V/qTBx9x">
                                    <field name="BOOL">FALSE</field>
                                   </block>
                                  </value>
                                 </block>
                                </value>
                                <next>
                                 <block type="bitbybit.draw.drawAnyAsyncNoReturn" id="d_;Q;?5B;j3l8h2ulqJB">
                                  <value name="Entity">
                                   <block type="variables_get" id="`I4m})UawQ1KVvS|gMUM">
                                    <field name="VAR" id="c[@Z^2fEqnXR7K?j:|64">pointsOnFirstSurface</field>
                                   </block>
                                  </value>
                                  <value name="Options">
                                   <block type="bitbybit.draw.optionsSimple" id="%sUzP:l*.Xr7#1?,Rq2:">
                                    <value name="Colours">
                                     <block type="colour_picker" id="eD=nijHseqz:0mvrH/L(">
                                      <field name="COLOUR">#000000</field>
                                     </block>
                                    </value>
                                    <value name="Size">
                                     <block type="math_number" id="Ky+xv/x1/vR?zG~a5:CG">
                                      <field name="NUM">0.1</field>
                                     </block>
                                    </value>
                                    <value name="Opacity">
                                     <block type="math_number" id="oh?tVXB73NI*gLO|#bH,">
                                      <field name="NUM">1</field>
                                     </block>
                                    </value>
                                    <value name="Updatable">
                                     <block type="logic_boolean" id="KP{mbHZG`6W;rf7d19t^">
                                      <field name="BOOL">FALSE</field>
                                     </block>
                                    </value>
                                   </block>
                                  </value>
                                  <next>
                                   <block type="bitbybit.draw.drawAnyAsyncNoReturn" id="M:oE@|%u$a_zjdX:MHCl">
                                    <value name="Entity">
                                     <block type="variables_get" id="Q:]YOC;47,RK|CO~3F+f">
                                      <field name="VAR" id="X{rv=l[l3y$mV^p^YkOK">pointsOnSecondSurface</field>
                                     </block>
                                    </value>
                                    <value name="Options">
                                     <block type="bitbybit.draw.optionsSimple" id="g2/(=[KLVB7?rP~sY/pt">
                                      <value name="Colours">
                                       <block type="colour_picker" id="_9to3}*sXYXYvJsMdu%~">
                                        <field name="COLOUR">#ffffff</field>
                                       </block>
                                      </value>
                                      <value name="Size">
                                       <block type="math_number" id="spwAgaqMr;9/7CG{^8Jp">
                                        <field name="NUM">0.1</field>
                                       </block>
                                      </value>
                                      <value name="Opacity">
                                       <block type="math_number" id="xPe~!09PW*K(8;VJB2%x">
                                        <field name="NUM">1</field>
                                       </block>
                                      </value>
                                      <value name="Updatable">
                                       <block type="logic_boolean" id="!i@7WhToN8_kJahxDqbT">
                                        <field name="BOOL">FALSE</field>
                                       </block>
                                      </value>
                                     </block>
                                    </value>
                                    <next>
                                     <block type="bitbybit.draw.drawAnyAsyncNoReturn" id="j].7B(x%Mz2k!B.4nyL@">
                                      <value name="Entity">
                                       <block type="variables_get" id="9KjXp@?tVcgx0-kS;gF7">
                                        <field name="VAR" id="*su=w/cS:#=7mL;;$O*i">isocurvesFirstSurface</field>
                                       </block>
                                      </value>
                                      <value name="Options">
                                       <block type="bitbybit.draw.optionsSimple" id="vMP7nd@aEbCP~F6{n3v$">
                                        <value name="Colours">
                                         <block type="colour_picker" id=",Tc2o)nF?wyZ_.rnGmm=">
                                          <field name="COLOUR">#000000</field>
                                         </block>
                                        </value>
                                        <value name="Size">
                                         <block type="math_number" id="pi=)cv2={=irce2@UT,m">
                                          <field name="NUM">3</field>
                                         </block>
                                        </value>
                                        <value name="Opacity">
                                         <block type="math_number" id="mI$)+xJ`gs4:]Ppo4Xbo">
                                          <field name="NUM">1</field>
                                         </block>
                                        </value>
                                        <value name="Updatable">
                                         <block type="logic_boolean" id="A=k.LU~_T;HeXDF6!y7$">
                                          <field name="BOOL">FALSE</field>
                                         </block>
                                        </value>
                                       </block>
                                      </value>
                                      <next>
                                       <block type="bitbybit.draw.drawAnyAsyncNoReturn" id="?w{,Fq(Y??+wep8o*zrQ">
                                        <value name="Entity">
                                         <block type="variables_get" id="Y,|*f48e6hj:Yc361]+$">
                                          <field name="VAR" id="MDS|!$G|Bpvw+}UW?vBs">isocurvesSecondSurface</field>
                                         </block>
                                        </value>
                                        <value name="Options">
                                         <block type="bitbybit.draw.optionsSimple" id="TK7(h*ou7[.po|[(%B%4">
                                          <value name="Colours">
                                           <block type="colour_picker" id=":B7Zyo}p6h2uv:r68lYW">
                                            <field name="COLOUR">#000000</field>
                                           </block>
                                          </value>
                                          <value name="Size">
                                           <block type="math_number" id=":.i}g2.G@^ObZ@?sFbQM">
                                            <field name="NUM">3</field>
                                           </block>
                                          </value>
                                          <value name="Opacity">
                                           <block type="math_number" id="je.%rV:h#btfepSkC@B_">
                                            <field name="NUM">1</field>
                                           </block>
                                          </value>
                                          <value name="Updatable">
                                           <block type="logic_boolean" id="9$r~(/9vR-fK^i}6F8Q%">
                                            <field name="BOOL">FALSE</field>
                                           </block>
                                          </value>
                                         </block>
                                        </value>
                                        <next>
                                         <block type="bitbybit.draw.drawAnyAsyncNoReturn" id="-F6li%i6z!u;4Z=XgC0{">
                                          <value name="Entity">
                                           <block type="variables_get" id="}p%#+@o;t]~x9i}JkJcm">
                                            <field name="VAR" id="O7c=GiU;zNt@vKs/m[N$">firstSurface</field>
                                           </block>
                                          </value>
                                          <value name="Options">
                                           <block type="bitbybit.draw.optionsSimple" id="]AJrCz0ojS@I(@DKrwKq">
                                            <value name="Colours">
                                             <block type="colour_picker" id="c2ZfRyKX5=GS_x3$sL:~">
                                              <field name="COLOUR">#ffffff</field>
                                             </block>
                                            </value>
                                            <value name="Size">
                                             <block type="math_number" id="z;jRuChY}r?.*/_WNV5!">
                                              <field name="NUM">3</field>
                                             </block>
                                            </value>
                                            <value name="Opacity">
                                             <block type="math_number" id="1Q|.Ts[sn)JS41sM7ZQv">
                                              <field name="NUM">0.5</field>
                                             </block>
                                            </value>
                                            <value name="Updatable">
                                             <block type="logic_boolean" id="{]p0Udnp70akH^bcWurJ">
                                              <field name="BOOL">FALSE</field>
                                             </block>
                                            </value>
                                           </block>
                                          </value>
                                          <next>
                                           <block type="bitbybit.draw.drawAnyAsyncNoReturn" id="vrhO;;zAkd8+wr?l5?Zj">
                                            <value name="Entity">
                                             <block type="variables_get" id="K@rv,ZL!~cZlT!gu6WD3">
                                              <field name="VAR" id="DBBAA_B-9ttoQM_NShD6">secondSurface</field>
                                             </block>
                                            </value>
                                            <value name="Options">
                                             <block type="bitbybit.draw.optionsSimple" id=",pSwr~KnMv@872lxH;3v">
                                              <value name="Colours">
                                               <block type="colour_picker" id="jTn}?.;db+R6Js~:MHOf">
                                                <field name="COLOUR">#ffffff</field>
                                               </block>
                                              </value>
                                              <value name="Size">
                                               <block type="math_number" id="E%}tqH({=YGTXF@KS+ZW">
                                                <field name="NUM">3</field>
                                               </block>
                                              </value>
                                              <value name="Opacity">
                                               <block type="math_number" id="IabWmY;SL)4,T#UJdxER">
                                                <field name="NUM">0.5</field>
                                               </block>
                                              </value>
                                              <value name="Updatable">
                                               <block type="logic_boolean" id="6,MgVsg(+I=ZcUBqpW/y">
                                                <field name="BOOL">FALSE</field>
                                               </block>
                                              </value>
                                             </block>
                                            </value>
                                           </block>
                                          </next>
                                         </block>
                                        </next>
                                       </block>
                                      </next>
                                     </block>
                                    </next>
                                   </block>
                                  </next>
                                 </block>
                                </next>
                               </block>
                              </next>
                             </block>
                            </next>
                           </block>
                          </next>
                         </block>
                        </next>
                       </block>
                      </next>
                     </block>
                    </next>
                   </block>
                  </next>
                 </block>
                </next>
               </block>
              </next>
             </block>
            </next>
           </block>
          </next>
         </block>
        </next>
       </block>
      </next>
     </block>
    </next>
   </block>
  </next>
 </block>
 <block type="math_number" id="HL1il%%.KjxB_3%Slzp?" x="427" y="2901">
  <field name="NUM">1</field>
 </block>
 <block type="math_number" id=":K+aA:ftB}wQMY:9?WAu" x="428" y="2949">
  <field name="NUM">3</field>
 </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