aboutsummaryrefslogtreecommitdiffstats
path: root/nc_files/macros/lathe/turning.ngc
blob: 9c8fd6ab86bb65ec6a5de46918532a82b2ff45e9 (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
; MACROCOMMAND=Finish Diameter,SFM,DOC,FPR,Finish Length,Radius,Angle,Tool Number, Max RPM
; MACRODEFAULTS=1.0,500.0,.02,.007,-2.0,0.0,0.0,1,1500
; MACROSVG=LatheMacro.svg,0,11

; O<turning> call [${turn.x-f}] [${turn.sf-f}] [${turn.cut-f}] [${turn.feed-f}] [${turn.z-f}] [${turn.rad-f}] [${turn.angle-f}] [${turn.tool-s}]

; #1 finish diameter
; #2 speed
; #3 depth of cut
; #4 feed/rpm
; #5 finish length
; #6 radius
; #7 angle
; #8 tool number
; #9 max RPM
;Turning

O<turning> sub

O107 IF [#<_imperial>]
    (MSG, IMPERIAL ON)
    #1 = [#1 * 25.4]
    #2 = [#2 * 304.8] ; sf/m to mm/m
    #3 = [#3 * 25.4]
    #4 = [#4 * 25.4]
    #5 = [#5 * 25.4]
    #6 = [#6 * 25.4]
O107  ENDIF

M73 ;save/restore codes

G8 ; Radius mode (easier maths)
G18 ; XZ Plane
G21 ; Metric Units
G90 ; Absolute Distance
G91.1 ; but not for arcs

#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 = [[#13 - #23] * TAN[#7]]


(debug, Start rad #14)
(debug, start length #13)
(debug, finish rad #1)
(debug, finish length #5)
(MSG, Unpause To start Turning Macro)
m0

M6 T#8 G43

G96 D500 S#2 ; Constant Surface Speed Mode
m3 ;Start Spindle
g95 F#4 ; Feed-Per-Rev Mode


g4p1 ; Wait to reach speed


	O100 WHILE [#14 GT [#1 + #3 / 2]]
        g0 X #14
	#14=[#14-#3 / 2]
	G1 X #14
	G1 Z #23 X[#14 + #24]
        O101 IF [#6 GT 0]
                G2 Z#5 X[#14 + #24 + #21] I#21 K#20
		G1 X[#14 + #24 + #21 + #3/2]
        O101 ELSE
	        G1 X[#14 + #24 + [#3 * .6]]
        O101 ENDIF
	O104 IF  [#7 LT 0]
		G0 X#14
	O104 ENDIF
	G0 Z[#13]
	O100 ENDWHILE

	G0 x#1
	G1 Z #23 X[#1 + #24]
        O102 IF [#6 GT 0]
                G2 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
	O106 IF  [#7 LT 0]
		G0 X#14
	O106  ENDIF
	G0 Z #13
	G0 X #1 ; For touch-off
        M5
	G7
O<turning> endsub
M2
bues.ch cgit interface