Files
linuxcnc/nc_files/pocket_rect_lin.ngc
Thaddeus-Maximus f3953d66ae ?
2026-04-03 15:58:58 -05:00

88 lines
1.7 KiB
Plaintext
Executable File

o<pocket_rect_lin> 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]
G90 ; absolute x,y,z
G90.1 ; absolute 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> = #5
o1 endif
o2 if [EXISTS[#<_rampang>]]
#<rampang> = #<_rampang>
o2 else
#<rampang> = 5 ; degrees
o2 endif
o3 if [EXISTS[#<_stepover>]]
#<stepover> = #<_stepover>
o3 else
#<stepover> = [#<td>*0.4]
o3 endif
#<z_down> = #6
#<z_lift> = [#6+#<td>*0.1]
#<minx> = #1
#<maxx> = #3
o11 if [#3 LT #1]
#<minx> = #3
#<maxx> = #1
o11 endif
#<miny> = #2
#<maxy> = #4
o12 if [#4 LT #2]
#<miny> = #4
#<maxy> = #2
o12 endif
#<xA> = [#<minx> + #<td>]
#<xB> = [#<maxx> - #<td>]
#<yA> = [#<miny> + #<td>]
#<yB> = [#<maxy> - #<td>]
G0 Z#<z_clearance>
G0 X[#<xA>] Y[#<yA>]
G0 Z[#5]
G1 Z[#6]
;#<y> = #<yA>
#<i> = 0
#<yT> = [#<yB>-#<yA>]
#<imax> = FUP[#<yT>/#<stepover>]
o100 while [#<i> LE #<imax>]
G1 Y[#<yA>+#<yT>/#<imax>*#<i>]
o101 if [#<i> MOD 2 EQ 0]
G1 X[#<xB>]
o101 else
G1 X[#<xA>]
o101 endif
#<i> = [#<i>+1]
o100 endwhile
o<frame_rect> call [#1][#2] [#3][#4] [#5][#6] [#7] [#8]
G0 Z#<z_clearance>
o<pocket_rect> endsub
M2