<LinuxCNC-Features>
  <feature src="tool-change.ini" expanded="False" help="&lt;big&gt;Adds tool change Gcode&lt;/big&gt;" icon="icons/tool-change.png" image="images/tool-change.png" after="" order="['PARAM_N']" call="&#10;M61 Q#param_n&#10;G43H#param_n&#10;" selected="False" path="0" definitions="" before="&#10;" type="Tool change" id="Tool-change-0002" name="Tool change 0002">
    <param tool_tip="Toola number from tools table" expanded="False" name="Tool number" selected="False" value="2" call="#param_n" path="0:0" type="float" icon="icons/num.png"/>
  </feature>
  <feature src="mill/cutting-params.ini" after="" help="Sets global cutting depth, depth step, surface origin, and rappid distance." name="Set cutting params 0002" image="images/cutting-params.png" expanded="False" id="Set-cutting-params-0002" call="&#10;#&lt;_global_surface&gt; =&#9;[#param_surface]&#10;#&lt;_global_depth&gt; = [#param_depth]&#10;#&lt;_global_depth_step&gt; = [#param_depth_step]&#10;#&lt;_global_rappid&gt; =&#9;&#9;[#param_rappid]&#10;#&lt;_global_feed&gt; =&#9;&#9;[#param_feed]&#10;F[#&lt;_global_feed&gt;]&#10;#&lt;_global_spindle&gt; =&#9;[#param_spindle]&#10;S[#&lt;_global_spindle&gt;]&#10;#&lt;_global_final&gt; =&#9;&#9;[#param_final]&#10;#&lt;_global_final_feed&gt; = [#param_final_feed]&#10;#&lt;_global_final_spindle&gt; = [#param_final_spindle]&#10;#&lt;_global_flood&gt; = &#9;&#9;[#param_flood]&#10;#&lt;_global_mist&gt; = &#9;&#9;[#param_mist]&#10;#&lt;_global_test&gt; = &#9;&#9;[#param_test]&#10;#&lt;_global_final_num&gt; = 1&#10;#&lt;_global_penetration_angle&gt;&#9;= [#param_penetration_angle]&#10;#&lt;_global_penetration_feed&gt; = [#param_penetration_feed]&#10;#&lt;_paranoid&gt; = [#param_paranoid]&#10;O&lt;cut-params&gt; CALL&#10;" selected="False" definitions="&#10;O&lt;cut-params&gt; SUB&#10;&#9;O&lt;#self_id&gt; IF [TAN[#&lt;_global_penetration_angle&gt;] LE 0 AND  #&lt;_paranoid&gt; NE 0]&#10;&#9;&#9;(DEBUG, Penetraion angle less or equal than 0! /#&lt;_global_penetration_angle&gt;/)&#10;&#9;&#9;#1 = [1/0] (Raise div 0 error)&#10;&#9;O&lt;#self_id&gt; ELSEIF [TAN[#&lt;_global_penetration_angle&gt;] LE 0]&#10;&#9;&#9;#&lt;_global_penetration_angle&gt; = 10&#10;&#9;O&lt;#self_id&gt; ENDIF&#10;&#9;O&lt;m03-if&gt;IF [#&lt;_global_test&gt; EQ 0]&#10;&#9;&#9;M03&#10;&#9;O&lt;m03-if&gt;ENDIF&#10;O&lt;cut-params&gt; ENDSUB" path="1" before="&#10;" type="Set cutting params" order="['PARAM_SURFACE', 'PARAM_DEPTH', 'PARAM_DEPTH_STEP', 'PARAM_RAPPID', 'PARAM_FEED', 'PARAM_SPINDLE', 'PARAM_PENETRATION_ANGLE', 'PARAM_PENETRATION_FEED', 'PARAM_FINAL', 'PARAM_FINAL_FEED', 'PARAM_FINAL_SPINDLE', 'PARAM_PARANOID', 'PARAM_FLOOD', 'PARAM_MIST', 'PARAM_TEST']" icon="icons/cutting-params.png">
    <param tool_tip="Surface" expanded="False" name="Surface" selected="False" value="0" call="#param_surface" path="1:0" type="float" icon="icons/surface.png"/>
    <param tool_tip="Depth" expanded="False" name="Depth" selected="False" value="-23.9" call="#param_depth" path="1:1" type="float" icon="icons/depth.png"/>
    <param tool_tip="Depth step" expanded="False" name="Depth step" selected="False" value="1" call="#param_depth_step" path="1:2" type="float" icon="icons/dz.png"/>
    <param tool_tip="Rappid distance" expanded="False" name="Rappid" selected="False" value="5" call="#param_rappid" path="1:3" type="float" icon="icons/rappid.png"/>
    <param tool_tip="Feed" expanded="False" name="Feed" selected="False" value="600" call="#param_feed" path="1:4" type="float" icon="icons/feed.png"/>
    <param tool_tip="Spindle speed" expanded="False" name="Spindle" selected="False" value="18000" call="#param_spindle" path="1:5" type="float" icon="icons/tool-spindle.png"/>
    <param tool_tip="Penetration angle 90 = straight" expanded="False" name="Penetration angle" selected="False" value="45" call="#param_penetration_angle" path="1:6" type="float" icon="icons/tool-penetration-angle.png"/>
    <param tool_tip="Penetration Feed" expanded="False" name="Penetration Feed" selected="False" value="100" call="#param_penetration_feed" path="1:7" type="float" icon="icons/feed.png"/>
    <param tool_tip="Final cut depth step" expanded="False" name="Final cut" selected="False" value="0" call="#param_final" path="1:8" type="float" icon="icons/tool-depth.png"/>
    <param tool_tip="Final cut Feed" expanded="False" name="Final cut feed" selected="False" value="600" call="#param_final_feed" path="1:9" type="float" icon="icons/feed.png"/>
    <param tool_tip="Spindle speed" expanded="False" name="Final cut spindle" selected="False" value="18000" call="#param_final_spindle" path="1:10" type="float" icon="icons/tool-final-spindle.png"/>
    <param tool_tip="Paranoid" expanded="False" name="Paranoid" selected="False" value="0" call="#param_paranoid" path="1:11" type="float" icon="icons/tool-params.png"/>
    <param tool_tip="Use flood (1 - yes / 0 - no)" expanded="False" name="Flood" selected="False" value="0" call="#param_flood" path="1:12" type="float" icon="icons/tool-final-spindle.png"/>
    <param tool_tip="Use mist (1 - yes / 0 - no)" expanded="False" name="Mist" selected="False" value="0" call="#param_mist" path="1:13" type="float" icon="icons/tool-final-spindle.png"/>
    <param tool_tip="0 - spindle on, else - test (spindle off)" expanded="False" name="Test" selected="False" value="0" call="#param_test" path="1:14" type="float" icon="icons/circle.png"/>
  </feature>
  <feature src="mill/set-tool-params.ini" expanded="False" help="Sets global tool parameters depth step, feed, spindle, final cut and etc." icon="icons/tool-params.png" image="images/tool-params.png" after="" order="['PARAM_D', 'PARAM_DEPTH_STEP', 'PARAM_FEED', 'PARAM_SPINDLE', 'PARAM_FINAL', 'PARAM_FINAL_FEED', 'PARAM_FINAL_SPINDLE', 'PARAM_PENETRATION_FEED', 'PARAM_PENETRATION_ANGLE']" call="&#10;&#9;#&lt;_global_tool_d&gt;&#9;&#9;&#9;= [#param_d]&#10;&#9;#&lt;_global_depth_step&gt;&#9;&#9;= [#param_depth_step]&#10;&#9;#&lt;_global_feed&gt;&#9;&#9;&#9;&#9;= [#param_feed]&#10;&#9;#&lt;_global_spindle&gt;&#9;&#9;&#9;= [#param_spindle]&#10;&#9;#&lt;_global_final&gt;&#9;&#9;&#9;= [#param_final]&#10;&#9;#&lt;_global_final_feed&gt;&#9;&#9;= [#param_final_feed]&#10;&#9;#&lt;_global_final_spindle&gt;&#9;= [#param_final_spindle]&#10;&#9;#&lt;_global_penetration_feed&gt;&#9;&#9;= [#param_penetration_feed]&#10;&#9;#&lt;_global_penetration_angle&gt;&#9;= [#param_penetration_angle]&#10;&#10;" selected="False" path="2" definitions="" before="&#10;" type="Set tool params" id="Set-tool-params-0002" name="Set tool params 0002">
    <param tool_tip="current tool diameter" expanded="False" name="Diameter" selected="False" value="[#5410]" call="#param_d" path="2:0" type="float" icon="icons/tool-d.png"/>
    <param tool_tip="depth step" expanded="False" name="Depth step" selected="False" value="#&lt;_global_depth_step&gt;" call="#param_depth_step" path="2:1" type="float" icon="icons/tool-depth.png"/>
    <param tool_tip="Feed" expanded="False" name="Feed" selected="False" value="#&lt;_global_feed&gt;" call="#param_feed" path="2:2" type="float" icon="icons/tool-feed.png"/>
    <param tool_tip="Spindle" expanded="False" name="Spindle speed" selected="False" value="#&lt;_global_spindle&gt;" call="#param_spindle" path="2:3" type="float" icon="icons/tool-spindle.png"/>
    <param tool_tip="Final cut depth per pass" expanded="False" name="Final cut depth" selected="False" value="#&lt;_global_final&gt;" call="#param_final" path="2:4" type="float" icon="icons/tool-final-depth.png"/>
    <param tool_tip="Final cut feed" expanded="False" name="Final cut feed" selected="False" value="#&lt;_global_final_feed&gt;" call="#param_final_feed" path="2:5" type="float" icon="icons/tool-final-feed.png"/>
    <param tool_tip="Final cut spindle speed" expanded="False" name="Final cut spindle" selected="False" value="#&lt;_global_final_spindle&gt;" call="#param_final_spindle" path="2:6" type="float" icon="icons/tool-final-spindle.png"/>
    <param tool_tip="Penetration feed" expanded="False" name="Penetration feed" selected="False" value="#&lt;_global_penetration_feed&gt;" call="#param_penetration_feed" path="2:7" type="float" icon="icons/tool-final-feed.png"/>
    <param tool_tip="Penetration angle 90 = straight" expanded="False" name="Penetration angle" selected="False" value="#&lt;_global_penetration_angle&gt;" call="#param_penetration_angle" path="2:8" type="float" icon="icons/tool-penetration-angle.png"/>
  </feature>
  <feature src="mill/circle-pocket.ini" expanded="True" help="&lt;big&gt;Creates Circular pocket&lt;/big&gt;&#10;&#9;Parameters: &lt;i&gt;CX CY InD OutD CW BEGIN Step INAV OUTAV&lt;/i&gt;" icon="icons/circle.png" image="images/circle.png" after="" order="['PARAM_CX', 'PARAM_CY', 'PARAM_IND', 'PARAM_OUTD', 'PARAM_CW', 'PARAM_BEGIN', 'PARAM_STEP', 'PARAM_INAV', 'PARAM_OUTAV']" call="&#10;(Call circle sub cx cy r depth rappid)&#10;#&lt;inr&gt; = [0.5*#param_ind]&#10;#&lt;inr&gt; = [#&lt;inr&gt; + 0.5*#&lt;_global_tool_d&gt;]&#10;#&lt;outr&gt; = [0.5*#param_outd]&#10;#&lt;outr&gt; = [#&lt;outr&gt; - 0.5*#&lt;_global_tool_d&gt;]&#10;#&lt;x0&gt; = [#param_cx+#&lt;inr&gt;]&#10;#&lt;y0&gt; = [#param_cy]&#10;#&lt;cw&gt; = [#param_cw]&#10;#&lt;begin&gt; = [#param_begin]&#10;#&lt;inav&gt; = [#param_inav]&#10;#&lt;outav&gt; = [#param_outav]&#10;#&lt;step-circle&gt; = [#param_step]&#10;O&lt;multipass_circle&gt; CALL [#&lt;_circle-sub&gt;] [#&lt;x0&gt;] [#&lt;y0&gt;] [#&lt;inr&gt;] [#&lt;outr&gt;] [#&lt;cw&gt;] [#&lt;begin&gt;] [#&lt;step-circle&gt;] [#&lt;inav&gt;] [#&lt;outav&gt;]&#10;" selected="False" path="3" definitions="&#10;(Multipass sub definition)&#10;O&lt;multipass_circle&gt; SUB&#10;&#9;#&lt;sub&gt; = #1&#10;&#9;#&lt;x0&gt; = #2&#10;&#9;#&lt;y0&gt; = #3&#10;&#9;#&lt;inr&gt; = #4&#10;&#9;#&lt;outr&gt; = #5&#10;&#9;#&lt;cw&gt; = #6&#10;&#9;#&lt;begin&gt; = #7&#10;&#9;#&lt;step-circle&gt; = #8&#10;&#9;#&lt;inav&gt; = #9&#10;&#9;#&lt;outav&gt; = #10&#10;&#9;#&lt;depth&gt; = [#&lt;_global_depth&gt;]&#10;&#9;#&lt;step&gt; = [#&lt;_global_depth_step&gt;]&#10;&#9;#&lt;surface&gt; = [#&lt;_global_surface&gt;]&#10;&#9;#&lt;rappid&gt; = [#&lt;_global_rappid&gt;]&#10;&#9;#&lt;final&gt; = [#&lt;_global_final&gt;]&#10;&#9;F#&lt;_global_feed&gt; S#&lt;_global_spindle&gt;&#10;&#9;G0 Z#&lt;rappid&gt;&#10;&#9;G0 X#&lt;x0&gt; Y#&lt;y0&gt;&#10;&#9;#&lt;delta&gt; = 0&#10;&#9;#&lt;z&gt; = #&lt;surface&gt;&#10;&#9;O&lt;multipass-while&gt; WHILE [#&lt;z&gt; GT [#&lt;depth&gt;+#&lt;final&gt;]]&#10;&#9;&#9;#&lt;delta&gt;=#&lt;step&gt;&#10;&#9;&#9;O&lt;multipass-if&gt; IF [[#&lt;z&gt;-#&lt;step&gt;] LT [#&lt;depth&gt;+#&lt;final&gt;]]&#10;&#9;&#9;&#9;#&lt;delta&gt;=[#&lt;z&gt;-#&lt;depth&gt;+#&lt;final&gt;]&#10;&#9;&#9;O&lt;multipass-if&gt; ENDIF&#10;&#9;&#9;#&lt;z&gt; = [#&lt;z&gt;-#&lt;delta&gt;]&#10;&#9;&#9;G1 X#&lt;x0&gt; Y#&lt;y0&gt; Z#&lt;z&gt; F#&lt;_global_penetration_feed&gt;&#10;&#9;&#9;F#&lt;_global_feed&gt;&#10;&#9;&#9;(call pass sub with the restof parameters)&#10;&#9;&#9;#&lt;sub&gt; = #1&#10;&#9;&#9;O#1 CALL [#&lt;x0&gt;] [#&lt;y0&gt;] [#&lt;inr&gt;] [#&lt;outr&gt;] [#&lt;step-circle&gt;] [#&lt;outav&gt;] [#&lt;cw&gt;] [#&lt;begin&gt;]&#10;&#9;&#9;O&lt;multipass-if02&gt; IF [#&lt;z&gt; GT [#&lt;depth&gt;+#&lt;final&gt;]]&#10;&#9;&#9;&#9;#&lt;x0&gt; = [#&lt;x0&gt;-#&lt;delta&gt;*TAN[#&lt;inav&gt;]]&#10;&#9;&#9;&#9;#&lt;inr&gt; = [#&lt;inr&gt;-#&lt;delta&gt;*TAN[#&lt;inav&gt;]]&#10;&#9;&#9;&#9;#&lt;outr&gt; = [#&lt;outr&gt;-#&lt;delta&gt;*TAN[#&lt;outav&gt;]]&#10;&#9;&#9;O&lt;multipass-if02&gt; ELSE&#10;&#9;&#9;&#9;#&lt;x0&gt; = [#&lt;x0&gt;-#&lt;final&gt;*TAN[#&lt;inav&gt;]]&#10;&#9;&#9;&#9;#&lt;inr&gt; = [#&lt;inr&gt;-#&lt;final&gt;*TAN[#&lt;inav&gt;]]&#10;&#9;&#9;&#9;#&lt;outr&gt; = [#&lt;outr&gt;-#&lt;final&gt;*TAN[#&lt;outav&gt;]]&#10;&#9;&#9;O&lt;multipass-if02&gt; ENDIF&#10;&#9;&#9;O&lt;multipass-if04&gt; IF [#&lt;inr&gt; LT 0]&#10;&#9;&#9;&#9;#&lt;final&gt;=0&#10;&#9;&#9;&#9;O&lt;multipass-while&gt; BREAK&#10;&#9;&#9;O&lt;multipass-if04&gt; ENDIF&#10;&#10;&#9;O&lt;multipass-while&gt; ENDWHILE&#10;&#10;&#9;(Make final cut)&#10;&#9;O&lt;multipass-if03&gt; IF [#&lt;final&gt; GT 0]&#10;&#9;&#9;G1 X#&lt;x0&gt; Y#&lt;y0&gt; Z#&lt;depth&gt; F#&lt;_global_penetration_feed&gt;&#10;&#9;&#9;F#&lt;_global_final_feed&gt; S#&lt;_global_final_spindle&gt;&#10;&#9;&#9;O#1 CALL [#&lt;x0&gt;] [#&lt;y0&gt;] [#&lt;inr&gt;] [#&lt;outr&gt;] [#&lt;step-circle&gt;] [#&lt;outav&gt;] [#&lt;cw&gt;] [#&lt;begin&gt;]&#10;&#9;O&lt;multipass-if03&gt; ENDIF&#10;&#9;G0 Z#&lt;rappid&gt;&#10;O&lt;multipass_circle&gt; ENDSUB&#10;&#10;(Circle sub definition)&#10;#&lt;_circle-sub&gt; = &lt;eval&gt;self.get_unique_id()&lt;/eval&gt; ; should be unique id&#10;O#&lt;_circle-sub&gt; sub&#10;&#9;#&lt;x0&gt; = #1&#10;&#9;#&lt;y0&gt; = #2&#10;&#9;#&lt;cx&gt; = [#1-#3]&#10;&#9;#&lt;cy&gt; = #2&#10;&#9;#&lt;inr&gt;  = #3&#10;&#9;#&lt;outr&gt;  = #4&#10;&#9;#&lt;step-circle&gt; = #5&#10;&#9;#&lt;outav&gt; = #6&#10;&#9;#&lt;cw&gt; = #7&#10;&#9;#&lt;begin&gt; = #8&#10;&#9;O&lt;circle-sub-while&gt; WHILE [#&lt;inr&gt; LT #&lt;outr&gt;]&#10;&#9; O&lt;circle-sub-if04&gt; IF [#&lt;begin&gt; EQ 0]&#10;&#9;&#9;G1 X[#&lt;cx&gt;+#&lt;inr&gt;] Y#&lt;cy&gt;&#10;&#9;&#9;O&lt;circle-sub-if02&gt; IF [#&lt;cw&gt; EQ 0]&#10;&#9;&#9;&#9;G2 X[#&lt;cx&gt;+#&lt;inr&gt;] Y#&lt;cy&gt; I[-#&lt;inr&gt;]&#10;&#9;&#9;O&lt;circle-sub-if02&gt; ELSE&#10;&#9;&#9;&#9;G3 X[#&lt;cx&gt;+#&lt;inr&gt;] Y#&lt;cy&gt; I[-#&lt;inr&gt;]&#10;&#9;&#9;O&lt;circle-sub-if02&gt; ENDIF&#10;&#9;&#9;#&lt;inr&gt; = [#&lt;inr&gt; + #&lt;step-circle&gt;]&#10;&#9;&#9;O&lt;circle-sub-if&gt; IF [#&lt;inr&gt; GE #&lt;outr&gt;]&#10;&#9;&#9;&#9;G1 X[#&lt;cx&gt;+#&lt;outr&gt;] Y#&lt;cy&gt;&#10;&#9;&#9;&#9;O&lt;circle-sub-if03&gt; IF [#&lt;cw&gt; EQ 0]&#10;&#9;&#9;&#9; G2 X[#&lt;cx&gt;+#&lt;outr&gt;] Y#&lt;cy&gt; I[-#&lt;outr&gt;]&#10;&#9;&#9;&#9;O&lt;circle-sub-if03&gt; ELSE&#10;&#9;&#9;&#9; G3 X[#&lt;cx&gt;+#&lt;outr&gt;] Y#&lt;cy&gt; I[-#&lt;outr&gt;]&#10;&#9;&#9;&#9;O&lt;circle-sub-if03&gt; ENDIF&#10;&#9;&#9;O&lt;circle-sub-if&gt; ENDIF&#10;&#9; O&lt;circle-sub-if04&gt; ELSE&#10;&#9;&#9;G1 X[#&lt;cx&gt;+#&lt;outr&gt;] Y#&lt;cy&gt;&#10;&#9;&#9;O&lt;circle-sub-if05&gt; IF [#&lt;cw&gt; EQ 0]&#10;&#9;&#9;&#9;G2 X[#&lt;cx&gt;+#&lt;outr&gt;] Y#&lt;cy&gt; I[-#&lt;outr&gt;]&#10;&#9;&#9;O&lt;circle-sub-if05&gt; ELSE&#10;&#9;&#9;&#9;G3 X[#&lt;cx&gt;+#&lt;outr&gt;] Y#&lt;cy&gt; I[-#&lt;outr&gt;]&#10;&#9;&#9;O&lt;circle-sub-if05&gt; ENDIF&#10;&#9;&#9;#&lt;outr&gt; = [#&lt;outr&gt; - #&lt;step-circle&gt;]&#10;&#9;&#9;O&lt;circle-sub-if06&gt; IF [#&lt;inr&gt; GE #&lt;outr&gt;]&#10;&#9;&#9;&#9;G1 X[#&lt;cx&gt;+#&lt;inr&gt;] Y#&lt;cy&gt;&#10;&#9;&#9;&#9;O&lt;circle-sub-if07&gt; IF [#&lt;cw&gt; EQ 0]&#10;&#9;&#9;&#9; G2 X[#&lt;cx&gt;+#&lt;inr&gt;] Y#&lt;cy&gt; I[-#&lt;inr&gt;]&#10;&#9;&#9;&#9;O&lt;circle-sub-if07&gt; ELSE&#10;&#9;&#9;&#9; G3 X[#&lt;cx&gt;+#&lt;inr&gt;] Y#&lt;cy&gt; I[-#&lt;inr&gt;]&#10;&#9;&#9;&#9;O&lt;circle-sub-if07&gt; ENDIF&#10;&#9;&#9;O&lt;circle-sub-if06&gt; ENDIF&#10;&#9; O&lt;circle-sub-if04&gt; ENDIF&#10;&#9;O&lt;circle-sub-while&gt; ENDWHILE&#10;O#&lt;_circle-sub&gt; endsub&#10;" before="&#10;" type="Circular pocket" id="Circular-pocket-0001" name="Circular pocket 0001">
    <param tool_tip="CX" selected="False" name="CX" expanded="False" value="14.1" call="#param_cx" path="3:0" type="float" icon="icons/rect.png"/>
    <param tool_tip="CY" selected="False" name="CY" expanded="False" value="14.1" call="#param_cy" path="3:1" type="float" icon="icons/rect.png"/>
    <param tool_tip="Inside diameter" selected="False" name="InD" expanded="False" value="28.12" call="#param_ind" path="3:2" type="float" icon="icons/diameter.png"/>
    <param tool_tip="Outside diameter" selected="False" name="OutD" expanded="False" value="34.68" call="#param_outd" path="3:3" type="float" icon="icons/diameter.png"/>
    <param tool_tip="cw=0 else ccw" selected="True" name="cw" expanded="False" value="1" call="#param_cw" path="3:4" type="float" icon="icons/arc-cw-ccw.png"/>
    <param tool_tip="begin from in =0 else begin from out" selected="False" name="begin" expanded="False" value="1" call="#param_begin" path="3:5" type="float" icon="icons/goto1.png"/>
    <param tool_tip="Side step" selected="False" name="Side step" expanded="False" value="1" call="#param_step" path="3:6" type="float" icon="icons/dx.png"/>
    <param tool_tip="Inside Angle Vertical" selected="False" name="Inside Angle Vert" expanded="False" value="0" call="#param_inav" path="3:7" type="float" icon="icons/angle-vert.png"/>
    <param tool_tip="Outside Angle Vertical" selected="False" name="Outside Angle Vert" expanded="False" value="0" call="#param_outav" path="3:8" type="float" icon="icons/angle-vert.png"/>
  </feature>
</LinuxCNC-Features>
