86 lines
1.6 KiB
Plaintext
86 lines
1.6 KiB
Plaintext
; 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<radius> 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<radius> 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<radius> endsub
|
|
m2
|