
blocklyThis script is large, so only its beginning is shown here. Open it in the editor to see all of it.
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="arms">arms</variable>
<variable id="length">length</variable>
<variable id="diameter">diameter</variable>
<variable id="name">name</variable>
<variable id="colour">colour</variable>
<variable id="metallic">metallic</variable>
<variable id="roughness">roughness</variable>
<variable id="glow">glow</variable>
<variable id="edge colour">edge colour</variable>
<variable id="edge width">edge width</variable>
<variable id="shape">shape</variable>
<variable id="count">count</variable>
<variable id="plate">plate</variable>
<variable id="legs">legs</variable>
<variable id="half back">half back</variable>
<variable id="one arm">one arm</variable>
<variable id="profile">profile</variable>
<variable id="propellers">propellers</variable>
<variable id="lights">lights</variable>
<variable id="front">front</variable>
<variable id="shell">shell</variable>
<variable id="placed logo">placed logo</variable>
<variable id="neighbours">neighbours</variable>
<variable id="arm length">arm length</variable>
<variable id="outline">outline</variable>
<variable id="angles">angles</variable>
<variable id="post">post</variable>
<variable id="tip">tip</variable>
<variable id="cuts">cuts</variable>
<variable id="span">span</variable>
<variable id="first blade">first blade</variable>
<variable id="clamp">clamp</variable>
<variable id="spun">spun</variable>
<variable id="chosen">chosen</variable>
<variable id="wires">wires</variable>
<variable id="paint">paint</variable>
<variable id="middle">middle</variable>
<variable id="logo">logo</variable>
<variable id="antenna">antenna</variable>
<variable id="rubber">rubber</variable>
<variable id="bent">bent</variable>
<variable id="carbon">carbon</variable>
<variable id="rings">rings</variable>
<variable id="bolt">bolt</variable>
<variable id="bracket">bracket</variable>
<variable id="strap">strap</variable>
<variable id="aluminium">aluminium</variable>
<variable id="polymer">polymer</variable>
<variable id="canopy room">canopy room</variable>
<variable id="largest">largest</variable>
<variable id="propeller size">propeller size</variable>
<variable id="slab">slab</variable>
<variable id="i">i</variable>
<variable id="top plate">top plate</variable>
<variable id="body">body</variable>
<variable id="holes">holes</variable>
<variable id="sections">sections</variable>
<variable id="hub">hub</variable>
<variable id="motor bolt">motor bolt</variable>
<variable id="placed">placed</variable>
<variable id="section">section</variable>
<variable id="faces">faces</variable>
<variable id="cells">cells</variable>
<variable id="box">box</variable>
<variable id="scaled">scaled</variable>
<variable id="tube">tube</variable>
<variable id="ring">ring</variable>
<variable id="hexagons">hexagons</variable>
<variable id="socket">socket</variable>
<variable id="bolt pair">bolt pair</variable>
<variable id="copper">copper</variable>
<variable id="housing">housing</variable>
<variable id="station">station</variable>
<variable id="lamp">lamp</variable>
<variable id="canopy cells">canopy cells</variable>
<variable id="areas">areas</variable>
<variable id="steel">steel</variable>
<variable id="vents">vents</variable>
<variable id="accent">accent</variable>
<variable id="pad">pad</variable>
<variable id="one motor">one motor</variable>
<variable id="nut">nut</variable>
<variable id="r">r</variable>
<variable id="x">x</variable>
<variable id="centre">centre</variable>
<variable id="largest side">largest side</variable>
<variable id="ellipse">ellipse</variable>
<variable id="angle">angle</variable>
<variable id="turned">turned</variable>
<variable id="one stator">one stator</variable>
<variable id="half">half</variable>
<variable id="normal">normal</variable>
<variable id="hexagon">hexagon</variable>
<variable id="one propeller">one propeller</variable>
<variable id="new cells">new cells</variable>
<variable id="arm fixings">arm fixings</variable>
<variable id="green">green</variable>
<variable id="one light">one light</variable>
<variable id="front lights">front lights</variable>
<variable id="back lights">back lights</variable>
</variables>
<block type="procedures_defreturn" id="fitPropeller" collapsed="true" x="0" y="0">
<mutation>
<arg name="arms" varid="arms">
</arg>
<arg name="length" varid="length">
</arg>
<arg name="diameter" varid="diameter">
</arg>
</mutation>
<field name="NAME">fit propeller</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id=":VsBrsvN$H{!|fac|187">
<field name="VAR" id="neighbours">neighbours</field>
<value name="VALUE">
<block type="math_arithmetic" id="!eSuolDd$@6y@_cuCznJ">
<field name="OP">MINUS</field>
<value name="A">
<block type="math_arithmetic" id="Tb38k,IB_d6kFo9`*d;_">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="~^I{Gzllh2(hcLFk1$*p">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_number" id="[QFR`~,$+8[VcKpVa.d%">
<field name="NUM">2</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="b]-XQ%KZK9W_4wgUgRYq">
<field name="VAR" id="length">length</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="bitbybit.math.sin" id="O^KlMdUfh0~gPeHcYpp8">
<value name="Number">
<block type="math_arithmetic" id="7TP*,J0yiG=Cw[pvl!j?">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="bitbybit.math.pi" id="Ff7rn1lk/h-D23lex/U(">
</block>
</value>
<value name="B">
<block type="variables_get" id="9MqZ0l*j]?#/=%KgLEcz">
<field name="VAR" id="arms">arms</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="99?=6*e^ybE6B~Y`Z%JI">
<field name="NUM">10</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="b@Q2J[L%r4i(VrTD^^cl">
<field name="VAR" id="canopy room">canopy room</field>
<value name="VALUE">
<block type="math_arithmetic" id="J6MQ^td8G_s=I.O:/=0Z">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_number" id="q}[v@T2cogjV%Jh0uFD[">
<field name="NUM">2</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="J^M%gKl3`qh_4$h)2[h1">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="1,6hG|QDs)43(3p-+rkF">
<field name="VAR" id="length">length</field>
</block>
</value>
<value name="B">
<block type="math_number" id="q=/=$EvPUw,~LT0|^uat">
<field name="NUM">68</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="6~Zz,=3NGjQk|:|?W,*{">
<field name="VAR" id="largest">largest</field>
<value name="VALUE">
<block type="math_arithmetic" id="72sD={0oQ0,@~~n.BXa3">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_round" id="PwsYPLg:h#Bw%Me*c5A:">
<field name="OP">ROUNDDOWN</field>
<value name="NUM">
<block type="math_arithmetic" id="+Q4((WiTxhI*2U)C^11|">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="logic_ternary" id="ZUX#[PYuZEOOo~X_A=1q">
<value name="IF">
<block type="logic_compare" id="+0j3{/V:eO7LxjxC~E4b">
<field name="OP">LT</field>
<value name="A">
<block type="variables_get" id="g*L3jKDC[egI3wE{e?Eg">
<field name="VAR" id="neighbours">neighbours</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="vi{A=^pn~Zmh|C}Q!SBY">
<field name="VAR" id="canopy room">canopy room</field>
</block>
</value>
</block>
</value>
<value name="THEN">
<block type="variables_get" id="{~XO~hq,E-hh^^.38Q2V">
<field name="VAR" id="neighbours">neighbours</field>
</block>
</value>
<value name="ELSE">
<block type="variables_get" id="zkM^oWg@7!ms8f~d]Ec+">
<field name="VAR" id="canopy room">canopy room</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="(MXtgq@v1(LJw#1?N)Iy">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="Ri8tf[MtUcxh;*P@zh$@">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
<value name="RETURN">
<block type="logic_ternary" id="hbu/ceE}l?pJ*(ZY)q!H">
<value name="IF">
<block type="logic_compare" id="D+gO_j%|S$cuNhS[tZ=3">
<field name="OP">LT</field>
<value name="A">
<block type="variables_get" id="+.GrkZdK*.VF0;vlRnt^">
<field name="VAR" id="diameter">diameter</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="1IpsU:un,aJn0!Ita44u">
<field name="VAR" id="largest">largest</field>
</block>
</value>
</block>
</value>
<value name="THEN">
<block type="variables_get" id="ZIY]Aw}%Qp*d;%R[WsEK">
<field name="VAR" id="diameter">diameter</field>
</block>
</value>
<value name="ELSE">
<block type="variables_get" id="T@!3DPy^%nhI@Q~jjH,8">
<field name="VAR" id="largest">largest</field>
</block>
</value>
</block>
</value>
</block>
<block type="variables_set" id="sizes" x="0" y="96">
<field name="VAR" id="arms">arms</field>
<value name="VALUE">
<block type="math_number" id="armsValue">
<field name="NUM">4</field>
</block>
</value>
<next>
<block type="variables_set" id="xB4BQK=|W?@F~75e-T=C">
<field name="VAR" id="arm length">arm length</field>
<value name="VALUE">
<block type="math_number" id="djP/ODgFm~DdrizAK8cM">
<field name="NUM">185</field>
</block>
</value>
<next>
<block type="variables_set" id="#ugc)}V0B_}g@nygJJ.@">
<field name="VAR" id="propeller size">propeller size</field>
<value name="VALUE">
<block type="math_number" id=";pRki@8`;mQ![QK,[GE!">
<field name="NUM">230</field>
</block>
</value>
<next>
<block type="variables_set" id="Mj.YJAuiulu!NR%#j^k6">
<field name="VAR" id="legs">legs</field>
<value name="VALUE">
<block type="math_number" id="+ha?Ukg!P9W_3Ev!yBg5">
<field name="NUM">4</field>
</block>
</value>
<next>
<block type="variables_set" id="ByIL.`fkKMVA[B6#_a(t">
<field name="VAR" id="diameter">diameter</field>
<value name="VALUE">
<block type="procedures_callreturn" id="g:!=R19)[`QDgkFqaDjn">
<mutation name="fit propeller">
<arg name="arms">
</arg>
<arg name="length">
</arg>
<arg name="diameter">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="*4E)hk7:KTdxatGkqLWt">
<field name="VAR" id="arms">arms</field>
</block>
</value>
<value name="ARG1">
<block type="variables_get" id="L^A}3`i`-eC0wm5)3*}S">
<field name="VAR" id="arm length">arm length</field>
</block>
</value>
<value name="ARG2">
<block type="variables_get" id="ke,N~C)N3E1eRwq.t!A/">
<field name="VAR" id="propeller size">propeller size</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defreturn" id="look" collapsed="true" x="0" y="536">
<mutation>
<arg name="name" varid="name">
</arg>
<arg name="colour" varid="colour">
</arg>
<arg name="metallic" varid="metallic">
</arg>
<arg name="roughness" varid="roughness">
</arg>
<arg name="glow" varid="glow">
</arg>
<arg name="edge colour" varid="edge colour">
</arg>
<arg name="edge width" varid="edge width">
</arg>
</mutation>
<field name="NAME">look</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<value name="RETURN">
<block type="bitbybit.draw.optionsOcctShape" id="X:$iuT=Rx4nkN62ZiB$K">
<value name="FaceOpacity">
<block type="math_number" id="ZF8A@G#INZcwya0@G/S2">
<field name="NUM">1</field>
</block>
</value>
<value name="EdgeOpacity">
<block type="math_number" id="?BJ7Z5CwcNILyXxQ]d_c">
<field name="NUM">1</field>
</block>
</value>
<value name="EdgeColour">
<block type="variables_get" id="Bp!WH-R}1(RAG25#q*,x">
<field name="VAR" id="edge colour">edge colour</field>
</block>
</value>
<value name="FaceColour">
<block type="colour_picker" id="6/xL}JT~FKdHzPz)Vs`g">
<field name="COLOUR">#ff0000</field>
</block>
</value>
<value name="VertexColour">
<block type="colour_picker" id="AZDC?fiy?U8m_jR{M!kE">
<field name="COLOUR">#ff00ff</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="+O4WcZNm50qh.1ZQf9=R">
<value name="Name">
<block type="variables_get" id="C}B@E+|sh`tea9ju(*]C">
<field name="VAR" id="name">name</field>
</block>
</value>
<value name="BaseColor">
<block type="variables_get" id="]UIaFuprj*Oe:?gO8ntZ">
<field name="VAR" id="colour">colour</field>
</block>
</value>
<value name="EmissiveColor">
<block type="variables_get" id="yR-p`dB_k,~(@/NK{P!!">
<field name="VAR" id="glow">glow</field>
</block>
</value>
<value name="Metallic">
<block type="variables_get" id=",K1|xUrH-`9Qdkj~$z)s">
<field name="VAR" id="metallic">metallic</field>
</block>
</value>
<value name="Roughness">
<block type="variables_get" id="n,0MB*VD^^vKC~gQl7iY">
<field name="VAR" id="roughness">roughness</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="t=f?nd8=0u+Ty^y8U6CY">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="KCXR.wfF4Ft~(.e$c.@U">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="v[OF+3CqKI^plX5T6p.h">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="EdgeWidth">
<block type="variables_get" id="G1ONVQEI-S_Ef5X!;!ba">
<field name="VAR" id="edge width">edge width</field>
</block>
</value>
<value name="VertexSize">
<block type="math_number" id="c.13{b1SO$1!-F1;;97n">
<field name="NUM">0.03</field>
</block>
</value>
<value name="DrawEdges">
<block type="logic_compare" id="4L#n.qDX-Q_wn~b*VVHt">
<field name="OP">GT</field>
<value name="A">
<block type="variables_get" id="s}QsbX^bN#-RkUFcmJ[Q">
<field name="VAR" id="edge width">edge width</field>
</block>
</value>
<value name="B">
<block type="math_number" id="C)T}RT|xV:!O4TXZ~[[^">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="DrawFaces">
<block type="logic_boolean" id="k=V%Sjc-g?2Wo,Yp^IMj">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="DrawVertices">
<block type="logic_boolean" id="h}V^rC0rP[^GJl(Sh,QT">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="Precision">
<block type="math_number" id="14PD-tUuNxxJm@-50{*G">
<field name="NUM">0.05</field>
</block>
</value>
<value name="AngularDeflection">
<block type="math_number" id="fG;xX*,+e(=}PW:;p]/K">
<field name="NUM">0.5</field>
</block>
</value>
<value name="RelativeDeflection">
<block type="logic_boolean" id="{Qy]r7CohV[CP6cy#HbN">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="DrawEdgeIndexes">
<block type="logic_boolean" id="}aVt/GRgy9WWTR)`I?]-">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeIndexHeight">
<block type="math_number" id="y*J=rD1/zwaaiL?X5):[">
<field name="NUM">0.06</field>
</block>
</value>
<value name="EdgeIndexColour">
<block type="colour_picker" id="Ip.N%OJS+|kTt7zw(s0d">
<field name="COLOUR">#ff00ff</field>
</block>
</value>
<value name="DrawFaceIndexes">
<block type="logic_boolean" id="5.lZ_j]j+Ex@4[7|NaPn">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="FaceIndexHeight">
<block type="math_number" id="yGjL?d2N|if7OIvU5BSe">
<field name="NUM">0.06</field>
</block>
</value>
<value name="FaceIndexColour">
<block type="colour_picker" id="$.s_`O7|W)m0,6n1(-[^">
<field name="COLOUR">#0000ff</field>
</block>
</value>
<value name="DrawTwoSided">
<block type="logic_boolean" id="_3G9Y0%M1sK.czd:Yjr7">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="BackFaceColour">
<block type="colour_picker" id="d5;Xv+j!1_^uKAFK|+.B">
<field name="COLOUR">#0000ff</field>
</block>
</value>
<value name="BackFaceOpacity">
<block type="math_number" id="iG+IWT/w*@:VoO3RBzAg">
<field name="NUM">1</field>
</block>
</value>
<value name="EdgeArrowSize">
<block type="math_number" id=",pucz7B1GE:IgT=#GSul">
<field name="NUM">0</field>
</block>
</value>
<value name="EdgeArrowAngle">
<block type="math_number" id="rQY;Ai,[m2H!L^;K](Q4">
<field name="NUM">15</field>
</block>
</value>
<value name="KeepMeshData">
<block type="logic_boolean" id="}hgOa?1{O!^|%dzrGI?j">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="AllowQualityDecrease">
<block type="logic_boolean" id=",p5Z;RKLN++0Ttt]j=c|">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ForceFaceDeflection">
<block type="logic_boolean" id=":kH!=_]{pg0fKyCC7uA.">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="DrawIsoCurves">
<block type="logic_boolean" id="A3^Raug4qD{kVMXlWYCM">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="IsoCurvesU">
<block type="math_number" id="6G%(cm-oqlyPqMWj|3]o">
<field name="NUM">5</field>
</block>
</value>
<value name="IsoCurvesV">
<block type="math_number" id="`8og2w(_0y6TvOB4sSnV">
<field name="NUM">5</field>
</block>
</value>
<value name="IsoCurvesColour">
<block type="colour_picker" id="uv?#=Xy5Hl$bJEJba]x.">
<field name="COLOUR">#808080</field>
</block>
</value>
<value name="SurfaceAnalysis">
<block type="bitbybit.occt.enums.surfaceAnalysisEnum" id="~xJLR[I{m!cgyS{f|#0m">
<field name="bitbybit.occt.enums.surfaceAnalysisEnum">'none'</field>
</block>
</value>
<value name="DraftDirection">
<block type="bitbybit.vector.vectorXYZ" id="CO+Z##]lwqRT?!@XD!,P">
<value name="X">
<block type="math_number" id="vQa#bJ3K%iEF*DMRoCIY">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="/V,=60Y5K[[*!!L5VVUm">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="R;]TZ`VU`$m|H{QcSIDV">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
<block type="bitbybit.babylon.scene.backgroundColour" id="stage" x="0" y="632">
<value name="Colour">
<block type="colour_picker" id="0ITl`rhUCxwD2$q]Q}}v">
<field name="COLOUR">#15171a</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.enableSkybox" id="B8OlWoHGXox7LHf#FTNF">
<value name="Skybox">
<block type="bitbybit.babylon.enums.skyboxEnum" id=":GdNZ@VD8^2~O=4FPYs?">
<field name="bitbybit.babylon.enums.skyboxEnum">'city'</field>
</block>
</value>
<value name="Size">
<block type="math_number" id="e9VvX5y/:,*}IKy6_Whv">
<field name="NUM">1000</field>
</block>
</value>
<value name="Blur">
<block type="math_number" id="~,!@E@qZuFL8{pjfABPo">
<field name="NUM">0.1</field>
</block>
</value>
<value name="EnvironmentIntensity">
<block type="math_number" id="~{g5m7GcJ6ZvdO$wH^#P">
<field name="NUM">0.4</field>
</block>
</value>
<value name="HideSkybox">
<block type="logic_boolean" id=",%@w5iI=$jJu(6]9T7.+">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EnableGroundProjection">
<block type="logic_boolean" id="X(dFxGpo+ZWoMCDzjm]4">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ProjectedGroundRadius">
<block type="math_number" id="$nFzX1-8$hqS8B!J~2Cj">
<field name="NUM">20</field>
</block>
</value>
<value name="ProjectedGroundHeight">
<block type="math_number" id="1?JZk0n.S.UvW#%Uw)DQ">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.drawDirectionalLightNoReturn" id="{^xZ6}MdwtRs={d^h?Ps">
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id="5X(,9Byxoa5wAY7|$)4%">
<value name="X">
<block type="math_number" id="r#0RV;-__iiYChXK1oo7">
<field name="NUM">-0.45</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="upiTEQT#{r{;_+TW;7[a">
<field name="NUM">-1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="~6Oe*0~;@Xk5glL_r)@|">
<field name="NUM">-0.3</field>
</block>
</value>
</block>
</value>
<value name="Intensity">
<block type="math_number" id="zE=~y:?hc[?y+/Dt[,9v">
<field name="NUM">2</field>
</block>
</value>
<value name="Diffuse">
<block type="colour_picker" id="/jcK!sZ0/_Tqg%@HZyfw">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="Specular">
<block type="colour_picker" id="GGdf*ydkD86iZ7p[)n|A">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="ShadowGeneratorMapSize">
<block type="math_number" id="_dA|2)#I3N*qlC}wkbPl">
<field name="NUM">4096</field>
</block>
</value>
<value name="EnableShadows">
<block type="logic_boolean" id="EsX)X=E%Pt=nOj@k%7t8">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ShadowDarkness">
<block type="math_number" id="$21Wnu_N[j|AI]ZJW#zC">
<field name="NUM">0</field>
</block>
</value>
<value name="ShadowUsePercentageCloserFiltering">
<block type="logic_boolean" id="+63YnY*T}3.Gj;,lW1%|">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="TransparencyShadow">
<block type="logic_boolean" id="-9~F11CL|eEj*2Th?k2X">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ShadowContactHardeningLightSizeUVRatio">
<block type="math_number" id="@uQiR%M[Lc43fPP{SQ+:">
<field name="NUM">0.2</field>
</block>
</value>
<value name="ShadowBias">
<block type="math_number" id="f,BToUE*5TELBrjvkdDl">
<field name="NUM">0.0003</field>
</block>
</value>
<value name="ShadowNormalBias">
<block type="math_number" id=",^^qcm-nEcy9{}@saR$c">
<field name="NUM">1</field>
</block>
</value>
<value name="ShadowMaxZ">
<block type="math_number" id="JSof6]bog!.[1^mD:==X">
<field name="NUM">1000</field>
</block>
</value>
<value name="ShadowMinZ">
<block type="math_number" id="lBJm!A$n[yyc;20e[Y|+">
<field name="NUM">-1000</field>
</block>
</value>
<value name="ShadowRefreshRate">
<block type="math_number" id="/,#[Scgz@I.NoJPO]{_A">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.adjustActiveArcRotateCamera" id="u)+$Y}Vn|aT#V4-/T0i%">
<value name="Position">
<block type="bitbybit.point.pointXYZ" id="-wo7R3:9#e|pN-a|S9[H">
<value name="X">
<block type="math_number" id="+!TYU`j:bgbG7a!@oKuJ">
<field name="NUM">620</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Rdh=v?oAnTX)j?C%^/GM">
<field name="NUM">380</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="S,5ZCW-}Offc!,B];+Yo">
<field name="NUM">760</field>
</block>
</value>
</block>
</value>
<value name="LookAt">
<block type="bitbybit.point.pointXYZ" id="iP:4{MgyACQqnyKf-)G7">
<value name="X">
<block type="math_number" id="Y9O37(U4Y.*${v`;I%.!">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="iJ[bRT?R~/K2qpF(2*o/">
<field name="NUM">-20</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="b8)KzM6pP];HrTL}w%pr">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="LowerBetaLimit">
<block type="math_number" id="OQJP*lS(rMgVO#,(L$?h">
<field name="NUM">1</field>
</block>
</value>
<value name="UpperBetaLimit">
<block type="math_number" id="qPSHrCz;L+%y%h+1z(R8">
<field name="NUM">179</field>
</block>
</value>
<value name="AngularSensibilityX">
<block type="math_number" id="%T=`Yn/YyL8pXVQs1o1.">
<field name="NUM">1000</field>
</block>
</value>
<value name="AngularSensibilityY">
<block type="math_number" id="=/E-TMh{w^.]qDY:0:jZ">
<field name="NUM">1000</field>
</block>
</value>
<value name="MaxZ">
<block type="math_number" id="}=xA~dEB_R-Ogjt.fr:f">
<field name="NUM">20000</field>
</block>
</value>
<value name="PanningSensibility">
<block type="math_number" id=",LJ5d@{HlC,FuVNvnDil">
<field name="NUM">2</field>
</block>
</value>
<value name="WheelPrecision">
<block type="math_number" id="~@y^hI|%Kvaxs](4y%a2">
<field name="NUM">3</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defreturn" id="framePlate" collapsed="true" x="0" y="2687">
<field name="NAME">frame plate</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="p8EXq$y(#rxR=9T|YJ(_">
<field name="VAR" id="outline">outline</field>
<value name="VALUE">
<block type="bitbybit.occt.fillets.fillet2d" id=";v/F/:G,RAR*$pQBqvP~">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.createRectangleWire" id="c.^8HDXv+ck^HvR1mo85">
<value name="Width">
<block type="math_number" id="LYkEN%#B#iHd,k;Z0h_n">
<field name="NUM">96</field>
</block>
</value>
<value name="Length">
<block type="math_number" id=":*;h]y114|cdGe*p!3`t">
<field name="NUM">150</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="/2#j2hC)N90Sbhxsn)7P">
<value name="X">
<block type="math_number" id="I1Q[?_^]+ZEYdyHq%Qhl">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="~Pr,KG]%~E^u%y{j{b3C">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="F%0uy!Q}T@jJAy^XS4bW">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id=")^+k`._3p~w$:{R1q-YA">
<value name="X">
<block type="math_number" id="Df0,;5~!ZAREwdT[XaRz">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=":%`LZ#q`)f^(W*+5qxs7">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="94+W}c;/Xg{Y`1fYpG9o">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Radius">
<block type="math_number" id="eo+E`(tlyWo54b{+boM4">
<field name="NUM">26</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="brZ[1wt!ClBqS_eObKI3">
<field name="VAR" id="slab">slab</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.extrude" id="(:gX[N3::!.#Qd?pIu]m">
<value name="Shape">
<block type="bitbybit.occt.shapes.face.createFaceFromWire" id="4$aAaM~/kl{Yut!zE(@k">
<value name="Shape">
<block type="variables_get" id="vX@q|f~p{x)Mg9t_D9|q">
<field name="VAR" id="outline">outline</field>
</block>
</value>
<value name="Planar">
<block type="logic_boolean" id="beG}lS@jZv[[5OE:JG:M">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id="z;[JK|^DEU:?^LUHiU@-">
<value name="X">
<block type="math_number" id="Nj6xE)(`1War4YVlRjWs">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=",i[{gmx:JH|ki!IKw0.V">
<field name="NUM">3</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="nWx1dzT?=iL~MAhX.X^d">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="o:}#{O3/K6R%cx@oY?zk">
<field name="VAR" id="hexagons">hexagons</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.hexagonsInGrid" id="~3EAfNXJz99b9[?gj:{n">
<value name="Width">
<block type="math_number" id="QuHA#?e$}{nSl;8mT=RC">
<field name="NUM">56</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="(C7gYsRo1!1_/-=|(k7b">
<field name="NUM">20</field>
</block>
</value>
<value name="NrHexagonsInWidth">
<block type="math_number" id="f4i@iY$bvK=p=]qPh)B!">
<field name="NUM">5</field>
</block>
</value>
<value name="NrHexagonsInHeight">
<block type="math_number" id="~GFnu1a%$|7a=l1@#d_X">
<field name="NUM">2</field>
</block>
</value>
<value name="FlatTop">
<block type="logic_boolean" id="QFk=+QIVq1ouocy.z!LP">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ExtendTop">
<block type="logic_boolean" id="ZaU(vJW7#}tF}H-4,uVD">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ExtendBottom">
<block type="logic_boolean" id="HxFGLmCAwn1kmpMj02;J">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ExtendLeft">
<block type="logic_boolean" id="o^dLJB?*E!Plz#aWVLxj">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ExtendRight">
<block type="logic_boolean" id="OOV3Z*~o],UF?Z4z@07X">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ScalePatternWidth">
<block type="lists_create_with" id="2e~k|3lq@D3TcemDr{6:">
<mutation items="1">
</mutation>
<value name="ADD0">
<block type="math_number" id="3x*,F;`C/a)j!JxS[v[d">
<field name="NUM">0.8</field>
</block>
</value>
</block>
</value>
<value name="ScalePatternHeight">
<block type="lists_create_with" id=",5*}ip4x;Md45c$I,hKU">
<mutation items="1">
</mutation>
<value name="ADD0">
<block type="math_number" id="dI]}F5(j]mol.i6J#D!s">
<field name="NUM">0.8</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="7xW/v^Fgw/M*#7A-OoS(">
<field name="VAR" id="vents">vents</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="U]KSIZ]MbBc0GGTGl?T7">
<value name="Shapes">
<block type="bitbybit.occt.operations.extrudeShapes" id="1M0zUsZ[p~/x`Qjr9jG`">
<value name="Shapes">
<block type="bitbybit.occt.shapes.face.createFacesFromWires" id="K!PvgUWm?X,Va-c!0Jwb">
<value name="Shapes">
<block type="variables_get" id="cc!{!g4w!6q%3[4ud/4B">
<field name="VAR" id="hexagons">hexagons</field>
</block>
</value>
<value name="Planar">
<block type="logic_boolean" id="*6}?,xE2{H[@3Wzvet`8">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id="MAK4K.WO)_^YOW)P){18">
<value name="X">
<block type="math_number" id="[P%HOR3$e3ClU81PND5l">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="v*R?Uo{6%m-w@(1%.Q%/">
<field name="NUM">3</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="YaVsuXvC6D4Q4z$7^kgs">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<value name="RETURN">
<block type="bitbybit.occt.booleans.difference" id="[kWj$yMMpeZC~n5J?C3]">
<value name="Shape">
<block type="variables_get" id="RtI_s-K6C~E5LA{i9V=6">
<field name="VAR" id="slab">slab</field>
</block>
</value>
<value name="Shapes">
<block type="lists_create_with" id="R/ShZ4G0E14;h,*wj7Ad">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.transforms.translate" id="{hk.#:H*}L7:P(vC5K#F">
<value name="Shape">
<block type="variables_get" id="sRS==LS~VhK+]9PycvB(">
<field name="VAR" id="vents">vents</field>
</block>
</value>
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="[rvhW[Mm.I^~A6-1n^n*">
<value name="X">
<block type="math_number" id="hE!8F4*}ZL`5?zjk_BZ8">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="ay)kiuZ$~q!B3#P33ev8">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="dp6L#(gjbF`xg;hsNOZP">
<field name="NUM">60</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.transforms.translate" id="ce{VWVLeS(pNTHf5Ic^{">
<value name="Shape">
<block type="variables_get" id="jx!,+=3#XuO0OamVQY?.">
<field name="VAR" id="vents">vents</field>
</block>
</value>
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="iMP[m]O[9UpmPNCMo/,N">
<value name="X">
<block type="math_number" id="2`K9Yk!41DvsDHa/v%F_">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="/i9/Ig?th1N*);.j];!/">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="-Hz%iehO%ypqYcpfNHIT">
<field name="NUM">-60</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="KeepEdges">
<block type="logic_boolean" id="JMXxw6z;?;de?i`nMLKP">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="Strategy">
<block type="bitbybit.occt.enums.booleanStrategyEnum" id="kKYU{F9~a_jOX01LD69n">
<field name="bitbybit.occt.enums.booleanStrategyEnum">'oneAfterAnother'</field>
</block>
</value>
</block>
</value>
</block>
<block type="procedures_defreturn" id="around" collapsed="true" x="0" y="2783">
<mutation>
<arg name="shape" varid="shape">
</arg>
<arg name="count" varid="count">
</arg>
</mutation>
<field name="NAME">around</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="|qfrkW_1MEu@!{Eq(;S/">
<field name="VAR" id="angles">angles</field>
<value name="VALUE">
<block type="bitbybit.lists.createEmptyList" id="]s[?NjgqK9Fx5gOAXo5!">
</block>
</value>
<next>
<block type="controls_for" id="F-Q-RU%QhCyD@{A6l|N1">
<field name="VAR" id="i">i</field>
<value name="FROM">
<block type="math_number" id="*[M2YssE:qgKD;#L;=.p">
<field name="NUM">0</field>
</block>
</value>
<value name="TO">
<block type="math_arithmetic" id="XGFi!rHYoyGaN**_mhi5">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="FgCS5E5Jp9bUAu;:h+$f">
<field name="VAR" id="count">count</field>
</block>
</value>
<value name="B">
<block type="math_number" id="/.t;CnA;8}3eKmJ-b/l_">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<value name="BY">
<block type="math_number" id="Dn*ab48*MT[#wIQ%L0Tr">
<field name="NUM">1</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="44,9uzzyn{{bPmP3F;FJ">
<field name="VAR" id="angles">angles</field>
<value name="VALUE">
<block type="bitbybit.lists.addItem" id="JIp?A7F9,bB]D3k[clg=">
<value name="List">
<block type="variables_get" id="NH}z~VT`{sUZWhC6Dr9K">
<field name="VAR" id="angles">angles</field>
</block>
</value>
<value name="Item">
<block type="math_arithmetic" id="(4D=Sz6%CV{w$r#q76}M">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id="~j`7{PzYVARA}h/+b]TE">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="x/|n`)!^%5|wUg2!(E+~">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="Jf;1xeAZSp^ehr/#c=6b">
<field name="VAR" id="i">i</field>
</block>
</value>
<value name="B">
<block type="math_number" id="sZ+9/9)Bx~B}{V7E3)gc">
<field name="NUM">0.5</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="GC~9y#v(n_CZTn`=Ox[q">
<field name="NUM">360</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="variables_get" id="Busu!Qr+nf]WJ$AKqvsK">
<field name="VAR" id="count">count</field>
</block>
</value>
</block>
</value>
<value name="Clone">
<block type="logic_boolean" id="J{3:0cuVO80%FlkCTq;T">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="RETURN">
<block type="bitbybit.occt.transforms.rotateShapes" id="d~pH#[y{qr}HLkk.Ff8M">
<value name="Shapes">
<block type="bitbybit.lists.repeat" id="g,[YAzeBEj.F:0p39E)R">
<value name="Item">
<block type="variables_get" id="Z!l,hEpn~J5WQ*KN-:^]">
<field name="VAR" id="shape">shape</field>
</block>
</value>
<value name="Times">
<block type="variables_get" id="V8euQemxni+ZH25(Fkr6">
<field name="VAR" id="count">count</field>
</block>
</value>
</block>
</value>
<value name="Axes">
<block type="bitbybit.lists.repeat" id="RAdjZx;Uxoj]#k0jYK`f">
<value name="Item">
<block type="bitbybit.vector.vectorXYZ" id="8Ew@ra+9B%YO@O6kr+3%">
<value name="X">
<block type="math_number" id="`Fj#U}XZM|pj33wJNC.t">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="/!^B#-a.GKQGv{wiJMQ+">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="L#9,_POY[hoD+?SY_m7w">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Times">
<block type="variables_get" id="kiJ5!ObIYU!YB^sPmUXy">
<field name="VAR" id="count">count</field>
</block>
</value>
</block>
</value>
<value name="Angles">
<block type="variables_get" id="|URS@S5J*Kz3N$%,2/$5">
<field name="VAR" id="angles">angles</field>
</block>
</value>
</block>
</value>
</block>
<block type="variables_set" id="plateSet" x="0" y="2879">
<field name="VAR" id="plate">plate</field>
<value name="VALUE">
<block type="procedures_callreturn" id="(bZ@}2s/m:%Ppabn_(c6">
<mutation name="frame plate">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="plateOpenings">
<field name="VAR" id="plate">plate</field>
<value name="VALUE">
<block type="bitbybit.occt.booleans.difference" id="Isd8=m_jsL^bPWaAHnbR">
<value name="Shape">
<block type="variables_get" id="4fr,5UulB0RLt8X9[B`F">
<field name="VAR" id="plate">plate</field>
</block>
</value>
<value name="Shapes">
<block type="lists_create_with" id=")5dR5,$D5^4[,/F%a*aQ">
<mutation items="1">
</mutation>
<value name="ADD0">
<block type="procedures_callreturn" id="+]6AzaH4?c;`RnQ-2#Z@">
<mutation name="leg openings">
<arg name="legs">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="Vs8D@2-y:Lc_T4YiK[M~">
<field name="VAR" id="legs">legs</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="KeepEdges">
<block type="logic_boolean" id="4.#{`}6/VJGAW|)a-erb">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="Strategy">
<block type="bitbybit.occt.enums.booleanStrategyEnum" id="3_)P,A}.KMM9DU+Grv|2">
<field name="bitbybit.occt.enums.booleanStrategyEnum">'oneAfterAnother'</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="3_gfG(fE]i(9VEbyfiX-">
<field name="VAR" id="top plate">top plate</field>
<value name="VALUE">
<block type="bitbybit.occt.transforms.translate" id="[/)/DwBg[BMv:bI4e,Uj">
<value name="Shape">
<block type="variables_get" id=":XYe=%E~eu(_Yd5S_0X0">
<field name="VAR" id="plate">plate</field>
</block>
</value>
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="-?{/(I]cUQJ?*:QB9yB*">
<value name="X">
<block type="math_number" id="/IT5|pGMnDufA,$ARgGc">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=",FE9rdv,f,0tFTIPj8zP">
<field name="NUM">13</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="`=U=`kw;Z7}Ma_EutM%2">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="jLvL3JhJc27{|mNhy/yi">
<field name="VAR" id="carbon">carbon</field>
<value name="VALUE">
<block type="procedures_callreturn" id="80W:$CFO0iwhk*`f6zLo">
<mutation name="look">
<arg name="name">
</arg>
<arg name="colour">
</arg>
<arg name="metallic">
</arg>
<arg name="roughness">
</arg>
<arg name="glow">
</arg>
<arg name="edge colour">
</arg>
<arg name="edge width">
</arg>
</mutation>
<value name="ARG0">
<block type="text" id=".{cSs7hG|^tBrVymSA9Z">
<field name="TEXT">carbon</field>
</block>
</value>
<value name="ARG1">
<block type="colour_picker" id="wjx=7*-$;vmLK6qlL$OD">
<field name="COLOUR">#23262b</field>
</block>
</value>
<value name="ARG2">
<block type="math_number" id="2VX5qJ)pzLARufCQyS8T">
<field name="NUM">0.35</field>
</block>
</value>
<value name="ARG3">
<block type="math_number" id="o8)2:KB/+UH]3Qu!T/6R">
<field name="NUM">0.45</field>
</block>
</value>
<value name="ARG4">
<block type="colour_picker" id="Rg/,,=*Q+CC8tyC^=q2d">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="ARG5">
<block type="colour_picker" id="#7r%}?F3*mwQ1cX1c,ok">
<field name="COLOUR">#f2f2f2</field>
</block>
</value>
<value name="ARG6">
<block type="math_number" id="laer|_x7UtYxQO?e6s]H">
<field name="NUM">6</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.draw.drawAnyAsyncNoReturn" id="!(;50Ub:=p!i}L%Ci:[$">
<value name="Entity">
<block type="lists_create_with" id="_W6l3L#Chjy1yI/x,W.%">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="variables_get" id="fZ6i2I=tsFCC8Oc^ioi`">
<field name="VAR" id="plate">plate</field>
</block>
</value>
<value name="ADD1">
<block type="variables_get" id="w~GtgqaU4Vxm5Qh12`.U">
<field name="VAR" id="top plate">top plate</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="$.lR[u{@r@{1d4#-oX6p">
<field name="VAR" id="carbon">carbon</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defreturn" id="legOpenings" collapsed="true" x="0" y="4083">
<mutation>
<arg name="legs" varid="legs">
</arg>
</mutation>
<field name="NAME">leg openings</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<value name="RETURN">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="Jz-M1)l,0ixQOsXG025T">
<value name="Shapes">
<block type="procedures_callreturn" id="bCIfmcRf*c_}I=vqRt5a">
<mutation name="around">
<arg name="shape">
</arg>
<arg name="count">
</arg>
</mutation>
<value name="ARG0">
<block type="bitbybit.occt.shapes.solid.createCylinder" id="/)CKaOQO(92u477e4n4Q">
<value name="Radius">
<block type="math_number" id="$yshrNs:sXHVSE!kh9tB">
<field name="NUM">6</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="1a[@GI-pk1a8+r9m/BCb">
<field name="NUM">3</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="^Y%-!(sm{A3R[D.a|Rsr">
<value name="X">
<block type="math_number" id="Z~M|dvrfGZ8#Oh4xBoPd">
<field name="NUM">52</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="1|7USzokbE#*EC#mk3Oc">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="Mk^}190o,Zscc)nAU5wx">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id="`!sJ)w`{%eQE|7tYT6O5">
<value name="X">
<block type="math_number" id="RCQknx8Jpx?@]Ro5c`!-">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="z:+SW#wCrSP0k,h!,Oj(">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="(9^8w!Xk#I{Znc.;`zn2">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="?-63be?wVx#,7ZDvg$UG">
<field name="NUM">360</field>
</block>
</value>
<value name="OriginOnCenter">
<block type="logic_boolean" id="^#tvhmqSY_9Y|v7**n#o">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ARG1">
<block type="variables_get" id="!20:Gv_o`fL_SO;|)JDG">
<field name="VAR" id="legs">legs</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
<block type="procedures_defreturn" id="m3Bolt" collapsed="true" x="0" y="4179">
<mutation>
<arg name="length" varid="length">
</arg>
</mutation>
<field name="NAME">m3 bolt</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id=")J-[t:nklkpia7l4r4}L">
<field name="VAR" id="profile">profile</field>
<value name="VALUE">
<block type="lists_create_with" id="=r%r$*@(5@5Dl47=Z*=U">
<mutation items="8">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="oLk=JJ:/N)gcbyO4+`Y`">
<value name="X">
<block type="math_number" id="2d^uov}K84T}):Q,kSlJ">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="dr$jWe57I)LeT_cZ$),P">
<field name="NUM">-3</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="z$B3b_AM#w.6T~e|Q`3l">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="[/Iy;A1#.=MTGH#L{(*$">
<value name="X">
<block type="math_number" id="n-/ulbm#FU94;!qj=cbI">
<field name="NUM">2.35</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="E/v$Jc?p5AF!C%el#H_E">
<field name="NUM">-3</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="iup#RX#6DZI}0mCVV#{b">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="wF)Pi:v^BF5:FjH4?GZR">
<value name="X">
<block type="math_number" id="$c/bVwwLD=fdvB}JlpUL">
<field name="NUM">2.75</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="}C6^i-fsUN4o!SM:nH2l">
<field name="NUM">-2.6</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="Qq3SlXomdlXt+8X+YHkD">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD3">
<block type="bitbybit.point.pointXYZ" id="0PI~Ci9f0f.~eP84`I*w">
<value name="X">
<block type="math_number" id="{:#!X,O=Zftq${9:u=y_">
<field name="NUM">2.75</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="W;}po[q(=!i/,ooDsZ`u">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="fNRBgBJsP`Ekn6hWQH9v">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD4">
<block type="bitbybit.point.pointXYZ" id="$mfE!dnf9k(TPON[]BHV">
<value name="X">
<block type="math_number" id="8aef|bEs(#rmZ!nQ5.-%">
<field name="NUM">1.5</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="q]eH0b?Mj{uQ{h{,rnK#">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="k6xD8Ud-aa(gE_`=RHg^">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD5">
<block type="bitbybit.point.pointXYZ" id="AgWwU}gBk!?$#^RbXLE!">
<value name="X">
<block type="math_number" id="s*]}[cU]U5(g/1%0V9Tn">
<field name="NUM">1.5</field>
</block>
</value>
<value name="Y">
<block type="math_arithmetic" id="3/r~V$vir4}siQ~hzEIh">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="Y47pMBu{cOpC3,4!zrU^">
<field name="VAR" id="length">length</field>
</block>
</value>
<value name="B">
<block type="math_number" id=":{`[Ytk2FZzi{amE)Ivp">
<field name="NUM">0.4</field>
</block>
</value>
</block>
</value>
<value name="Z">
<block type="math_number" id="7KPaZ:rGBC9Bp^n?|+i9">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD6">
<block type="bitbybit.point.pointXYZ" id="~:=+UIZpp`Kz{6g$K_ht">
<value name="X">
<block type="math_number" id=".U9]SvEcph~y*Cw*/tfz">
<field name="NUM">1.1</field>
</block>
</value>
<value name="Y">
<block type="variables_get" id="!D_J;kZj{11-SA,8SEtV">
<field name="VAR" id="length">length</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="|BRY7H)/OdYW_]#Ob_tq">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD7">
<block type="bitbybit.point.pointXYZ" id=".D`]tUA@mA$ql~r52GQ_">
<value name="X">
<block type="math_number" id="eZ{Zk^[1jS5UYs0t%}:F">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="variables_get" id="fbHZSA1*wNaND{q.IY]N">
<field name="VAR" id="length">length</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="{(%L~7Y9OZuRW)NGpoey">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="#J3OYgho`jrc*BuCra!G">
<field name="VAR" id="body">body</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.revolve" id="w%~a/$_=)vp/yTnhF.D.">
<value name="Shape">
<block type="bitbybit.occt.shapes.face.createFaceFromWire" id=",WdL[OIX::Jq.pPERd7Q">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.createPolygonWire" id="}ET`h2GBG+J^Hlh)]!fv">
<value name="Points">
<block type="variables_get" id="9/?[l$`G/vXpZ|!pwtX5">
<field name="VAR" id="profile">profile</field>
</block>
</value>
</block>
</value>
<value name="Planar">
<block type="logic_boolean" id="r]V].]QIz?yx:J`Lu_a]">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="WX6,wHN]?e^u8+K?q2tP">
<field name="NUM">360</field>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id="(:^Ty9gcYQJ:q`]3SBeP">
<value name="X">
<block type="math_number" id="[eAQFLk7eju#i1cI4.OM">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="uRD?XTwQGjTj[gc:;lm;">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="#k+)En%b0m)`+.*^[BQ5">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Copy">
<block type="logic_boolean" id="!+TV*6lFGybUCHw$-w_!">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="B%%wi})CyI,FxeC)/UF;">
<field name="VAR" id="socket">socket</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.extrude" id="]pdm%[}8lPUiB/g9_qp,">
<value name="Shape">
<block type="bitbybit.occt.shapes.face.createFaceFromWire" id="9UN;D_%s=:QdgHLb+c*,">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.createNGonWire" id=")L}JZ_JVg6;]SX3Jz8SU">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="kH1^kEqyd=6%0!]TQ~Yj">
<value name="X">
<block type="math_number" id="InBfNWZCJe#%(I*[b?!n">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="`J0crNWrX7u6s_S3EJ8V">
<field name="NUM">-3.5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="V;l.jN9M@,ejQ|mq+z4l">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id="FaUH=wVk{{}H_MOVg2.#">
<value name="X">
<block type="math_number" id="RAtP}Yam;Np#p%8,Dv@1">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="XfmDss4.*Z3{Z0d2qLta">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="%gC2xe*x%kArT^Y}Un5b">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="NrCorners">
<block type="math_number" id="LtK$nm%Nqfu[:$h}![:s">
<field name="NUM">6</field>
</block>
</value>
<value name="Radius">
<block type="math_number" id="Yj!?cVTsCf(c.|!n4R*L">
<field name="NUM">1.45</field>
</block>
</value>
</block>
</value>
<value name="Planar">
<block type="logic_boolean" id="EkSJ*f3;:)g-~Q^)*x3f">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id="QA1XfN|*_2Okmw]/Jxds">
<value name="X">
<block type="math_number" id="or]w|Cv%4H![Bg_1rPKS">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="c!3AL[?QF!1YM6Ix`XnQ">
<field name="NUM">2.5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="fkv@wRgB.wmDv0Eci81!">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
<value name="RETURN">
<block type="bitbybit.occt.booleans.difference" id="weOntUfD+R+K|Rk$Z;0i">
<value name="Shape">
<block type="variables_get" id="|mZz4.bmX/[/^2LYbd2b">
<field name="VAR" id="body">body</field>
</block>
</value>
<value name="Shapes">
<block type="lists_create_with" id=".rxnG4jWu1!l9Ok/*~df">
<mutation items="1">
</mutation>
<value name="ADD0">
<block type="variables_get" id="04T#aoZ3CQZd(h^S!Mv+">
<field name="VAR" id="socket">socket</field>
</block>
</value>
</block>
</value>
<value name="KeepEdges">
<block type="logic_boolean" id="EkAg@VnIaFT[f70PK~kl">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="Strategy">
<block type="bitbybit.occt.enums.booleanStrategyEnum" id=")]UJ+Bo.4H)6J3mEF;,U">
<field name="bitbybit.occt.enums.booleanStrategyEnum">'oneAfterAnother'</field>
</block>
</value>
</block>
</value>
</block>
<block type="variables_set" id="standoffs" x="0" y="4275">
<field name="VAR" id="half back">half back</field>
<value name="VALUE">
<block type="math_arithmetic" id="ZW4FiP@Ew_!Wl5:8vwOh">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_number" id="k]HjWA}sdTL5I6~g66GZ">
<field name="NUM">-180</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="3s=@=-:PMIb4FfqO=V@y">
<field name="VAR" id="arms">arms</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="_?_|%_15s;udyA_90znr">
<field name="VAR" id="post">post</field>
<value name="VALUE">
<block type="bitbybit.occt.transforms.rotate" id="V${F3^rPyV.^zLS)LH4!">
<value name="Shape">
<block type="bitbybit.occt.shapes.solid.createCylinder" id="j)+K)f~OvM2r0YgKgH~O">
<value name="Radius">
<block type="math_number" id="i]gqS=_T*9{LG*ZnB~:C">
<field name="NUM">3.2</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="i.6[06nRwNQ|(2Um;`_W">
<field name="NUM">10</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="`:~?U_b`V^=!Q4ZhK)q:">
<value name="X">
<block type="math_number" id="+G)LUGxh=wVyj6=},U;e">
<field name="NUM">40</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="nr,npHE6lHPY,2z|lKCL">
<field name="NUM">3</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="FG8E^TiVFi$A7AfqMc_F">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id="i@j*TB}CoHc(e05;!SVS">
<value name="X">
<block type="math_number" id="K|(nSc(WvbRF[yfRSA0=">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=":R.#[vQkCm4`,503#ptx">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="*OYn{lo%Kyk|hF5hUzh-">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="!yg.BQVhT9kwV87a.oe!">
<field name="NUM">360</field>
</block>
</value>
<value name="OriginOnCenter">
<block type="logic_boolean" id="::faq*(yPP+,M?vhi9xS">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="Axis">
<block type="bitbybit.vector.vectorXYZ" id="RBx}5i{Aq[D!Va-`C6Zr">
<value name="X">
<block type="math_number" id=".~C;--P?ebhkeGH}8Al7">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="px-26y;lpHdlwNs`i5:A">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="]!s-:][JBd/3}MO?FEDD">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="variables_get" id="{=^(;s1;A@BTiJHzl~{J">
<field name="VAR" id="half back">half back</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="!82,?=kCYNE25bAT,eyz">
<field name="VAR" id="bolt">bolt</field>
<value name="VALUE">
<block type="procedures_callreturn" id="[sAmHfRC?`5b%|If8LD.">
<mutation name="m3 bolt">
<arg name="length">
</arg>
</mutation>
<value name="ARG0">
<block type="math_number" id=";[GUCD1[S$pnM;9=|DUu">
<field name="NUM">8</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="~AM}0~:Cbg11p*xIM8/F">
<field name="VAR" id="bolt pair">bolt pair</field>
<value name="VALUE">
<block type="bitbybit.occt.transforms.rotate" id="FUef?21Ek%C[jWSPM=;`">
<value name="Shape">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="-h`EM.@#o$f]K=Yb,aJh">
<value name="Shapes">
<block type="lists_create_with" id=";URyfOBTzdK,tRPQZ2^=">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.transforms.translate" id="oi4uXZpYs)RI}7q!D{OJ">
<value name="Shape">
<block type="variables_get" id="(Tet^~aQxtbsd4iNqmz[">
<field name="VAR" id="bolt">bolt</field>
</block>
</value>
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="Z]s?SHG#A:]3a;QBbGYr">
<value name="X">
<block type="math_number" id="g,wTp-)oxwkPJSph9auH">
<field name="NUM">40</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="XwV7NZfkSa`}d:koX0xo">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="Pd0hTt+-}7x*R3i=#H/4">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.transforms.translate" id="d~:0F=-~Fu?fWHx}JVkK">
<value name="Shape">
<block type="bitbybit.occt.transforms.rotate" id="Ij$QQQ)g-7d.9u*H;Fj?">
<value name="Shape">
<block type="variables_get" id="@sT0rJ7:U%M$+BX`)Y@4">
<field name="VAR" id="bolt">bolt</field>
</block>
</value>
<value name="Axis">
<block type="bitbybit.vector.vectorXYZ" id="p2bK-rPyiF7;mRvN7)+h">
<value name="X">
<block type="math_number" id=",38:SYn.=W0w9}b`GnT:">
<field name="NUM">1</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="u]qb{Q~7)e#y(cv-V$5+">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="mPJJ_ial=qWI_:IvA`|V">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="gpC}mGGy7cf{OG9vwz_=">
<field name="NUM">180</field>
</block>
</value>
</block>
</value>
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="2J|$=+Bjctxx}h^8bmE#">
<value name="X">
<block type="math_number" id="EI)s}-47r3g)_(;9PpQT">
<field name="NUM">40</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="^n7rY2,p*W@g^pxzND/i">
<field name="NUM">16</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="YB*^ScO74thy|q7Rl8VX">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Axis">
<block type="bitbybit.vector.vectorXYZ" id="~K|n+8xq^Q9x?o^p^lzU">
<value name="X">
<block type="math_number" id="H/q]$2egq3#WIkj~T*[$">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="#L,*^M!ci|XL}}o}L$xW">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="6erl0SGAWeVGC:yadYC*">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="variables_get" id="~p~YI1K3$$0t4NDAk3!e">
<field name="VAR" id="half back">half back</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="DQzWdk5HH|c87~5}TI)V">
<field name="VAR" id="accent">accent</field>
<value name="VALUE">
<block type="procedures_callreturn" id="3PTw5!v?_aUHnT*td~jY">
<mutation name="look">
<arg name="name">
</arg>
<arg name="colour">
</arg>
<arg name="metallic">
</arg>
<arg name="roughness">
</arg>
<arg name="glow">
</arg>
<arg name="edge colour">
</arg>
<arg name="edge width">
</arg>
</mutation>
<value name="ARG0">
<block type="text" id="NuzUD$6Fh}^Ld1uE:zHU">
<field name="TEXT">accent</field>
</block>
</value>
<value name="ARG1">
<block type="colour_picker" id="N;PGf.xM^/RXo7l0FvLR">
<field name="COLOUR">#f0cebb</field>
</block>
</value>
<value name="ARG2">
<block type="math_number" id="KSD56g]205L@]-BcsH@8">
<field name="NUM">0.85</field>
</block>
</value>
<value name="ARG3">
<block type="math_number" id="(=vlFm|biF=ezJO*9t/c">
<field name="NUM">0.35</field>
</block>
</value>
<value name="ARG4">
<block type="colour_picker" id="}b1$,_=Q]z^(lnRh^zQs">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="ARG5">
<block type="colour_picker" id="8%5ZL(mxs?,18OK;3Y?5">
<field name="COLOUR">#0d0e10</field>
</block>
</value>
<value name="ARG6">
<block type="math_number" id=":CZSsvD^Me-U6[%bKfuq">
<field name="NUM">4</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="P+M:.*zK|%vo(||:!u3[">
<field name="VAR" id="steel">steel</field>
<value name="VALUE">
<block type="procedures_callreturn" id="|rV.fvt0%OlDBiTiZG?h">
<mutation name="look">
<arg name="name">
</arg>
<arg name="colour">
</arg>
<arg name="metallic">
</arg>
<arg name="roughness">
</arg>
<arg name="glow">
</arg>
<arg name="edge colour">
</arg>
<arg name="edge width">
</arg>
</mutation>
<value name="ARG0">
<block type="text" id="sHsV7CefZm?fn=EzjIVo">
<field name="TEXT">steel</field>
</block>
</value>
<value name="ARG1">
<block type="colour_picker" id="[YpkjJ7NyY]X}g5p|g9a">
<field name="COLOUR">#1c1c1e</field>
</block>
</value>
<value name="ARG2">
<block type="math_number" id="jNiCO7?bPfyT:CNRb{f2">
<field name="NUM">0.9</field>
</block>
</value>
<value name="ARG3">
<block type="math_number" id="uLzqOz+atmA?CB2A@5HU">
<field name="NUM">0.42</field>
</block>
</value>
<value name="ARG4">
<block type="colour_picker" id="Y]%N~83mg%##YdyLgOR#">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="ARG5">
<block type="colour_picker" id="AQTd/]k`7J$L2aiHAg*}">
<field name="COLOUR">#f2f2f2</field>
</block>
</value>
<value name="ARG6">
<block type="math_number" id=";Vn,QK$_hDnH/^e^t.xt">
<field name="NUM">4</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.draw.drawAnyAsyncNoReturn" id="noW}OF6C*(YtiS5yVrm#">
<value name="Entity">
<block type="procedures_callreturn" id="M*Cx1smrf38`dzH`Svgs">
<mutation name="around">
<arg name="shape">
</arg>
<arg name="count">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="NXsuHr,L^QBj)p5HiPv6">
<field name="VAR" id="post">post</field>
</block>
</value>
<value name="ARG1">
<block type="variables_get" id="_myR6hy.(GHRxQFG4.^C">
<field name="VAR" id="arms">arms</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="H#cs3WULKwE*eL@F+c~-">
<field name="VAR" id="accent">accent</field>
</block>
</value>
<next>
<block type="bitbybit.draw.drawAnyAsyncNoReturn" id="dRU1Hw1}]*(=PzGe)Cu$">
<value name="Entity">
<block type="procedures_callreturn" id="cMTHhDvDRcs})XHi}8}T">
<mutation name="around">
<arg name="shape">
</arg>
<arg name="count">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id=",vk0?UIITe*~JwI?1pT+">
<field name="VAR" id="bolt pair">bolt pair</field>
</block>
</value>
<value name="ARG1">
<block type="variables_get" id="-h#HgaT,9~UuR5)wG6o|">
<field name="VAR" id="arms">arms</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="Ha^sE{dcn5j!+`-(0UnK">
<field name="VAR" id="steel">steel</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defreturn" id="armBody" collapsed="true" x="0" y="7067">
<mutation>
<arg name="length" varid="length">
</arg>
</mutation>
<field name="NAME">arm body</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="8B8H)kmU__i~7?#%(U*#">
<field name="VAR" id="tip">tip</field>
<value name="VALUE">
<block type="math_arithmetic" id="y.Ag,DQe(J~]KA.d!GB#">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="gM%wJHl-JO/iu0z25qrW">
<field name="VAR" id="length">length</field>
</block>
</value>
<value name="B">
<block type="math_number" id="oTNV`M^Um1lt5iS4y$-9">
<field name="NUM">12</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="kr%ijZ35iMVcsy~J=^?l">
<field name="VAR" id="outline">outline</field>
<value name="VALUE">
<block type="bitbybit.occt.fillets.fillet2d" id="V5il(K`_l~v0bmzZ44jv">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.createPolygonWire" id="|~g:Q_]F$~r:_;PfUUJF">
<value name="Points">
<block type="lists_create_with" id="%M(]c{Y2)@?O;o4[p%!G">
<mutation items="4">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="fYJ3~:+{8(s1KgCG#2-P">
<value name="X">
<block type="math_number" id="nv+won.qf8ld(oa/wKAZ">
<field name="NUM">28</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="9V_G(M$I(py?JEB,I8Q:">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="BZ~=~On34.vQu:XfEn|-">
<field name="NUM">-13</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="d=Eg+s$Z.RMz9?hp6*UT">
<value name="X">
<block type="variables_get" id="/[sGvDf)d.(^Z)miLx~.">
<field name="VAR" id="tip">tip</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="%GQ[khTyR*ap2a0-Szc3">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="w]p=-xoj:9o;A1nd^qM9">
<field name="NUM">-8</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="y%N|f4_Jlu7VBEHj5-XS">
<value name="X">
<block type="variables_get" id="8aa4Q#JmmK7%=bp!a?UG">
<field name="VAR" id="tip">tip</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Y9PW;iUR;Ba;5mjV*#Ly">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="#Y+8$)DB^BE]S*yvK=b)">
<field name="NUM">8</field>
</block>
</value>
</block>
</value>
<value name="ADD3">
<block type="bitbybit.point.pointXYZ" id=".[fN!K!L)GI}wz*uZ?_e">
<value name="X">
<block type="math_number" id=":~{A?RC3#Iz,Z/8iNc:X">
<field name="NUM">28</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="h]xanz?uKP9Ro:wM:`__">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="K[_@hD[_}gm*}_.hl983">
<field name="NUM">13</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Radius">
<block type="math_number" id="Gv`;HNMw[6N!)mTA`TBE">
<field name="NUM">4</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="3qlk)z=zqXRql8[:m9Js">
<field name="VAR" id="slab">slab</field>
<value name="VALUE">
<block type="bitbybit.occt.transforms.translate" id="-~{2Y9M|cY5=T$-]@U66">
<value name="Shape">
<block type="bitbybit.occt.operations.extrude" id="rdYpTpt(=c*i55V]@Jm.">
<value name="Shape">
<block type="bitbybit.occt.shapes.face.createFaceFromWire" id="V85E6OltHV/s(fa3J$Y^">
<value name="Shape">
<block type="variables_get" id="^GY9,~BHP8OKgr/0fJcu">
<field name="VAR" id="outline">outline</field>
</block>
</value>
<value name="Planar">
<block type="logic_boolean" id="b1.:A{igOABe$6-(,G]-">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id="KeWQaDe!IC7I2x]6;Hp|">
<value name="X">
<block type="math_number" id="X7uz{lO]n,3W|`PL9RM-">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="%z3qyOustf@TbZeuL-%S">
<field name="NUM">10</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="ks?.W|-__Ky^MEty*1xB">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Translation">
<block type="bitbybit.vector.vectorXYZ" id="l=,:/,#IX`iihM.s!(6L">
<value name="X">
<block type="math_number" id="7UCQ^A9(4tM8@uTnq;sE">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=".(*XTpq)[#sznz/3/6:#">
<field name="NUM">3</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="dw;7qz0lnYFE;/MxE.UY">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="~l6*k_u3KJky^M@F[eB?">
<field name="VAR" id="pad">pad</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.solid.createCylinder" id="1YT^H26Z,oS.,wCZ?M?R">
<value name="Radius">
<block type="math_number" id="LiTVo]5V_r]^aB*aY~Rg">
<field name="NUM">15</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="h^J!mWMjTj1kFh.Ef=lp">
<field name="NUM">10</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="wh{dIfV%uO8[vUKF^x#)">
<value name="X">
<block type="variables_get" id="y@,FCL|K4::.s_sE/zjK">
<field name="VAR" id="length">length</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="guaR{}wx|y*oK|,HE%2L">
<field name="NUM">3</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="ci%jv(AKPi{wcr9H:]^~">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.vector.vectorXYZ" id="Rb9=+ujTmLJhehrb3pdi">
<value name="X">
<block type="math_number" id="2X3X%230tCh0o{}C|?%g">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=":iDz`z94t;uR3TH3s/5x">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="weH]k}^SISUl25,zP{WH">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="Zl/E=%r?f+dIC^c+py0}">
<field name="NUM">360</field>
</block>
</value>
<valu
Editor plans for 3D development, API keys for server-side CAD algorithms
Cloud storage, private projects & 3D tools for Bitbybit editors
* "Unlimited" means high limits that most users won't reach. Compare the plans
Run CAD algorithms on managed cloud servers from your own backend applications
Custom software development, dedicated servers & CAD automation at scale.