159 lines
3.4 KiB
Plaintext
Executable File
159 lines
3.4 KiB
Plaintext
Executable File
o<frame_rect> sub
|
|
; o<frame_rect> call [x1][y1] [x2][y2] [ztop][zbot] [mode] [radius]
|
|
|
|
#<M_CONVENTIONAL> = [FIX[#7/1] MOD 2 EQ 1]
|
|
#<M_BOTHWAYS> = [FIX[#7/2] MOD 2 EQ 1]
|
|
#<M_PLUNGE> = [FIX[#7/4] MOD 2 EQ 1]
|
|
#<M_OUTSIDE> = [FIX[#7/8] MOD 2 EQ 1]
|
|
#<M_CLIMB> = [FIX[#7/1] MOD 2 EQ 0]
|
|
#<M_ONEWAY> = [FIX[#7/2] MOD 2 EQ 0]
|
|
#<M_HELIX> = [FIX[#7/4] MOD 2 EQ 0]
|
|
#<M_INSIDE> = [FIX[#7/8] MOD 2 EQ 0]
|
|
|
|
;G10 L0 ; re-read tool data
|
|
G90 ; absolute x,y,z
|
|
G91.1 ; incremental i,j,k
|
|
M101 ; enable Z-axis (M102 disables)
|
|
G17 ; select XY plane for arcs
|
|
|
|
#<td> = #<_td>
|
|
#<tr> = [#<td>/2]
|
|
o1 if [EXISTS[#<_z_clearance>]]
|
|
#<z_clearance> = #<_z_clearance>
|
|
o1 else
|
|
#<z_clearance> = #4
|
|
o1 endif
|
|
|
|
|
|
#<minx> = #1
|
|
#<maxx> = #3
|
|
o3 if [#3 LT #1]
|
|
#<minx> = #3
|
|
#<maxx> = #1
|
|
o3 endif
|
|
|
|
#<miny> = #2
|
|
#<maxy> = #4
|
|
o4 if [#4 LT #2]
|
|
#<miny> = #4
|
|
#<maxy> = #2
|
|
o4 endif
|
|
|
|
G0 Z#<z_clearance>
|
|
|
|
|
|
o10 if [#<M_INSIDE> AND #<M_CONVENTIONAL>]
|
|
; plunge in center
|
|
G0 X[[#1+#3]/2] Y[[#2+#4]/2]
|
|
G0 Z#5
|
|
G1 Z#6
|
|
|
|
G1 X[#<maxx>-#<tr>]
|
|
|
|
o102 if [#8 GT #<tr>]
|
|
G1 Y[#<miny>+#8]
|
|
G2 X[#<maxx>-#8] Y[#<miny>+#<tr>] J0 I[-#8+#<tr>]
|
|
G1 X[#<minx>+#8]
|
|
G2 Y[#<miny>+#8] X[#<minx>+#<tr>] I0 J[+#8-#<tr>]
|
|
G1 Y[#<maxy>-#8]
|
|
G2 X[#<minx>+#8] Y[#<maxy>-#<tr>] J0 I[+#8-#<tr>]
|
|
G1 X[#<maxx>-#8]
|
|
G2 Y[#<maxy>-#8] X[#<maxx>-#<tr>] I0 J[-#8+#<tr>]
|
|
|
|
o102 else
|
|
G1 Y[#<miny>+#<tr>]
|
|
G1 X[#<minx>-#<tr>]
|
|
G1 Y[#<maxy>-#<tr>]
|
|
G1 X[#<maxx>-#<tr>]
|
|
G1 Y[#<miny>+#<tr>]
|
|
o102 endif
|
|
G1 Y[[#2+#4]/2]
|
|
|
|
; go to center and pull out
|
|
G0 X[[#1+#3]/2] Y[[#2+#4]/2]
|
|
G0 Z#5
|
|
|
|
o10 elseif [#<M_INSIDE> AND #<M_CLIMB>]
|
|
; CCW inside
|
|
G0 X[[#1+#3]/2] Y[[#2+#4]/2]
|
|
G0 Z#5
|
|
G1 Z#6
|
|
|
|
G1 X[#<maxx>-#<tr>]
|
|
|
|
o101 if [#8 GT #<tr>]
|
|
G1 Y[#<maxy>-#8]
|
|
G3 X[#<maxx>-#8] Y[#<maxy>-#<tr>] J0 I[-#8+#<tr>]
|
|
G1 X[#<minx>+#8]
|
|
G3 Y[#<maxy>-#8] X[#<minx>+#<tr>] I0 J[-#8+#<tr>]
|
|
G1 Y[#<miny>+#8]
|
|
G3 X[#<minx>+#8] Y[#<miny>+#<tr>] J0 I[+#8-#<tr>]
|
|
G1 X[#<maxx>-#8]
|
|
G3 Y[#<miny>+#8] X[#<maxx>-#<tr>] I0 J[+#8-#<tr>]
|
|
o101 else
|
|
G1 Y[#<maxy>-#<tr>]
|
|
G1 X[#<minx>+#<tr>]
|
|
G1 Y[#<miny>+#<tr>]
|
|
G1 X[#<maxx>-#<tr>]
|
|
G1 Y[#<maxy>-#<tr>]
|
|
o101 endif
|
|
G1 Y[[#2+#4]/2]
|
|
|
|
; go to center and pull out
|
|
G0 X[[#1+#3]/2] Y[[#2+#4]/2]
|
|
G0 Z#5
|
|
|
|
o10 elseif [#<M_OUTSIDE> AND #<M_CONVENTIONAL>]
|
|
; plunge at corner
|
|
G0 X[#<minx>-#<tr>] Y[#<maxy>+#<tr>]
|
|
G0 Z#5
|
|
G1 Z#6
|
|
|
|
o104 if [#8 GT 0]
|
|
G1 Y[#<miny>+#8]
|
|
G3 X[#<minx>+#8] Y[#<miny>-#<tr>] J0 I[+#8+#<tr>]
|
|
G1 X[#<maxx>-#8]
|
|
G3 Y[#<miny>+#8] X[#<maxx>+#<tr>] I0 J[+#8+#<tr>]
|
|
G1 Y[#<maxy>-#8]
|
|
G3 X[#<maxx>-#8] Y[#<maxy>+#<tr>] J0 I[-#8-#<tr>]
|
|
G1 X[#<minx>+#8]
|
|
G3 Y[#<maxy>-#8] X[#<minx>-#<tr>] I0 J[-#8-#<tr>]
|
|
|
|
o104 else
|
|
G1 Y[#<miny>-#<tr>]
|
|
G1 X[#<maxx>+#<tr>]
|
|
G1 Y[#<maxy>+#<tr>]
|
|
G1 X[#<minx>-#<tr>]
|
|
o104 endif
|
|
|
|
G0 Z#5
|
|
|
|
o10 elseif [#<M_OUTSIDE> AND #<M_CLIMB>]
|
|
; plunge at corner
|
|
G0 X[#<minx>-#<tr>] Y[#<miny>-#<tr>]
|
|
G0 Z#5
|
|
G1 Z#6
|
|
|
|
o103 if [#8 GT 0]
|
|
G1 Y[#<maxy>-#8]
|
|
G2 X[#<minx>+#8] Y[#<maxy>+#<tr>] J0 I[+#8+#<tr>]
|
|
G1 X[#<maxx>-#8]
|
|
G2 Y[#<maxy>-#8] X[#<maxx>+#<tr>] I0 J[-#8-#<tr>]
|
|
G1 Y[#<miny>+#8]
|
|
G2 X[#<maxx>-#8] Y[#<miny>-#<tr>] J0 I[-#8-#<tr>]
|
|
G1 X[#<minx>+#8]
|
|
G2 Y[#<miny>+#8] X[#<minx>-#<tr>] I0 J[+#8+#<tr>]
|
|
|
|
o103 else
|
|
G1 Y[#<maxy>+#<tr>]
|
|
G1 X[#<maxx>+#<tr>]
|
|
G1 Y[#<miny>-#<tr>]
|
|
G1 X[#<minx>-#<tr>]
|
|
o103 endif
|
|
|
|
G0 Z#5
|
|
o10 endif
|
|
|
|
o<frame_rect> endsub
|
|
|
|
M2 |