aboutsummaryrefslogtreecommitdiffstats
path: root/nc_files/macros/lathe/radius.ngc
blob: 6d1a9b7ea1753a9377e911f10ec90c6fb67dd97a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
; 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
bues.ch cgit interface