-
Notifications
You must be signed in to change notification settings - Fork 0
/
triangle.min
92 lines (70 loc) · 2.35 KB
/
triangle.min
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
%
O2021
(Sample recursive code with user-defined variables, in incremental mode)
(Uses centerline cutting tool, such as engraving)
(Uses Z=0.0 as cutting depth, set accordingly)
(Variable VC1 sets the initial length)
(Variable VC2 sets the number of iterations)
G90 G17 G80 G40 G0 (Safe line)
IF [VC1 EQ EMPTY] GOTO NNOVC (CHECK IF LENGTH IS UNDEF.)
IF [VC2 EQ EMPTY] GOTO NNOVC (CHECK IF ITERATIONS NUMBER IS UNDEF.)
IF [VC2 GT 9] GOTO NLRG (CHECK IF NUMBER OF ITERATIONS IS TOO LARGE)
LL=VC1 (INITIAL LENGTH IN INCHES)
LD=VC2 (NUMBER OF ITERATIONS)
G30 P1 (Goto tool change position)
G15 H1 (Call work offset 1)
G116 T83 (Call tool 83)
G56 HA (Call tool length offset for active tool)
S10000 M03 (start spindle)
M8 (COOLANT ON)
G00 X0. Y0. (PREPOSITION ON CENTER)
Z0.2
CALL OSTR LL=LL LD=LD (INITIAL SUB CALL, LENGTH, MAX_ITERATIONS)
M5 (STOP SPINDLE)
M9 (COOLANT OFF)
NLRG (VARIABLES TOO LARGE ERROR)
MSG (One or more variable is too large)
GOTO NCNCL
NNOVC (VARIABLES UNSET ERROE)
MSG (User variables are not set, set var.1 for length, var.2 for number of iterations)
GOTO NCNCL
NCNCL (CANCEL PROGRAM LABEL)
G30 P2 (Goto home position, move table to door)
M30 (program end)
OSTR (CUTTING SUBPROGRAM)
G91 (INCREMENTAL MODE)
(CALCULATIONS)
RX1=0. (X COORDINATE FOR VERT. RAY)
RY1=LL (Y COORDINATE FOR VERT. RAY)
RX2=COS[30]*LL (X COORDINATE FOR RIGHT RAY)
RY2=-SIN[30]*LL (Y COORDINATE FOR RIGHT RAY)
RX3=-COS[30]*LL (X COORDINATE FOR LEFT RAY)
RY3=-SIN[30]*LL (Y COORDINATE FOR LEFT RAY)
(START FROM CENTER, Z=0.2)
G01 Z-0.2 F5. (PLUNGE TO CUTTING PLANE)
G01 X=RX1 Y=RY1 F5.0 (MACHINE VERT. RAY)
G00 Z0.2 (RAPID UP)
G00 X=-RX1 Y=-RY1 (RAPID BACK TO CENTER)
G01 Z-0.2
G01 X=RX2 Y=RY2 F5.0 (MACHINE RIGHT RAY)
G00 Z0.2
G00 X=-RX2 Y=-RY2
G01 Z-0.2
G01 X=RX3 Y=RY3 F5.0 (MACHINE LEFT RAY)
G00 Z0.2
G00 X=-RX3 Y=-RY3
(END AT CENTER, Z=0.2)
IF [LD EQ 0] GOTO NEND (EXIT IF ITERATIONS EXCEEDED)
LD=LD-1 (ITERATION COUNTER DECREMENT)
G00 X=RX1 Y=RY1 (PREPOSITION FOR VERT. RAY)
CALL OSTR LL=LL/2 LD=LD (CALL ITSELF)
G00 X=-RX1 Y=-RY1 (RETURN)
G00 X=RX2 Y=RY2 (PREPOSITION FOR RIGHT RAY)
CALL OSTR LL=LL/2 LD=LD (CALL ITSELF)
G00 X=-RX2 Y=-RY2 (RETURN)
G00 X=RX3 Y=RY3 (PREPOSITION FOR LEFT RAY)
CALL OSTR LL=LL/2 LD=LD (CALL ITSELF)
G00 X=-RX3 Y=-RY3 (RETURN)
NEND (SUB END LABEL)
RTS
%