; MACROCOMMAND=X,SFM,DOC,Z,Tool Number,Radius,Front Outside,Front Inside,Back Outside ; MACRODEFAULTS=1,300,.5,1,.1,.015,true,false,false ; MACROSVG=LatheMacro.svg,3 ; O call [${radius.x-f}] [${radius.sf-f}] [0.5] [0][${radius.z-f}] [${radius.tool-s}] [0] [${radius.rad-f}] [${radius.fo}] [${radius.fi}] [${radius.bo}] O sub O107 IF [#<_imperial>] (MSG, IMPERIAL ON) #1 = [#1 * 25.4]; X #2 = [#2 * 3.28]; surface speed #3 = [#3 * 25.4]; doc #4 = [#4 * 25.4]; Z #6 = [#6 * 25.4]; radius O107 ENDIF M73 ; save/restore codes G8 ; Lathe radius Mode G18 ; XZ Plane G21 ; Metric Units G90 ; Absolute Distance M6 T#6 G43 #1 = [#1 / 2] ; because of radius mode #14 = [#<_x>] (starting X) #13 = [#<_z>] (starting Z) G96 D1500 S#2 ; Constant Surface Speed Mode M3 g95 F0.1 ; Feed-Per-Rev Mode #20 = 0 O101 if [#9 GT 0.5] ; Front outside o100 while [[#20 + #3] lt #8] #20 = [#20 + #3] g0 x[#1 - #20] z#13 g1 z#5 g3 x#1 z[#5 - #20] K[-#20] g1 x #14 g0 z#13 o100 endwhile g0 x#14 z#13 g0 x[#1 - #8] g1 z#5 g3 x#1 z[#5 - #8] K[-#8] g1 x #14 g0 z#13 O101 elseif [#10 GT 0.5] ; front inside o102 while [[#20 + #3] lt #8] #20 = [#20 + #3] g0 x[#1 + #20] z#13 g1 z#5 g2 x#1 z[#5 - #20] K[-#20] g1 x #14 g0 z#13 o102 endwhile g0 x#14 z#13 g0 x[#1 + #8] g1 z#5 g2 x#1 z[#5 - #8] K[-#8] g1 x #14 g0 z#13 O101 elseif [#11 GT 0.5] ; back outside o103 while [[#20 + #3] lt #8] #20 = [#20 + #3] g0 x[#1 - #20] z#13 g1 z#5 g2 x#1 z[#5 + #20] K#20 g1 x #14 g0 z#13 o103 endwhile g0 x#14 z#13 g0 x[#1 - #8] g1 z#5 g2 x#1 z[#5 + #8] K#8 g1 x #14 g0 z#13 O101 endif G7 O endsub m2