;boring O sub # = #<_ccomp> # = #<_metric> # = #<_absolute> # = #<_feed> # = #<_coord_system> # = #<_lathe_diameter_mode> # = #<_ijk_absolute_mode> G8 ; Lathe radius Mode G90 ; Absolute Distance G91.1 ; but not for arcs ; #1 X coord ; #2 surface speed ; #3 cut size ; #4 feed/rpm ; #5 Z coord ; #6 radius ; #7 angle ; #8 tool number ; #9 coolant O10 if [#9 EQ 1] M8 O10 endif ;M6 T#8 G43 O100 if [#8 NE #<_current_tool>] (MSG, ERROR : Set tool before use macro) O call [#] [#] [#] [#] [#] [#] [#] O100 return [-2] ; indicate failure to epilog O100 endif #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 G4P1 ; Wait to reach speed (debuG, TurninG finish dia #1 start dia #14 start lenGth #13 finish lenGth #5) O101 WHILE [#14 LT [#1 - #3]] G0 X #14 #14=[#14 + #3] G1 X #14 G1 Z #23 X[#14 + #24] o102 IF [#6 GT 0] G3 Z#5 X[#14 + #24 + #21] I#21 K#20 G1 X[#14 + #24 + #21 - #3] o102 ELSE G1 X[#14 + #24 - [#3 * 1.5]] o102 ENDIF G0 Z[#13] O101 ENDWHILE G0 X#1 G1 Z#23 X[#1 + #24] O103 IF [#6 GT 0] G3 Z#5 X[#1 + #24 + #21] I#21 K#20 G1 X[#1 + #24 + #21 - #3] O103 ELSE G1 X[#1 + #24 - #3] O103 ENDIF G0 Z#13 G0 X#1 ; For touch-off M5 M9 ; restore g20/21, g90/g91, feed O call [#] [#] [#] [#] [#] [#] [#] O endsub M2 %