;boring O sub G8 ; Radius mode (easier maths) G18 ; XZ Plane G21 ; Metric Units G90 ; Absolute Distance G91.1 ; but not for arcs M6 T#8 G43 #1 = [#1 / 2] ; because of radius mode #14 = [#<_x>] (starting X) #13 = #<_z> (starting Z) #20 = [#6 * SIN[#7]] #21 = [-#6 * COS[#7]] #22 = [#6 / COS[#7]] #23 = [#5 + #6 - #20] #24 = [[#23 - #13] * TAN[#7]] G96 D2500 S#2 ; Constant Surface Speed Mode m3 ;Start Spindle g95 F#4 ; Feed-Per-Rev Mode O90 IF [#9 GT 0.5] M8 O90 ENDIF g4p1 ; Wait to reach speed (debug, Turning finish dia #1 start dia #14 start length #13 finish length #5 coolant #9) O100 WHILE [#14 LT [#1 - #3]] g0 X #14 #14=[#14 + #3] G1 X #14 G1 Z #23 X[#14 + #24] O101 IF [#6 GT 0] G3 Z#5 X[#14 + #24 + #21] I#21 K#20 G1 X[#14 + #24 + #21 - #3] O101 ELSE G1 X[#14 + #24 - [#3 * 1.5]] O101 ENDIF G0 Z[#13] O100 ENDWHILE G0 x#1 G1 Z #23 X[#1 + #24] O102 IF [#6 GT 0] G3 Z#5 X[#1 + #24 + #21] I#21 K#20 G1 X[#1 + #24 + #21 - #3] O102 ELSE G1 X[#1 + #24 - #3] O102 ENDIF G0 Z #13 G0 X #1 ; For touch-off M5 M9 G7 O endsub M2