Files
linuxcnc/nc_files/end_cope.ngc
Thaddeus Hughes ad1f8719d6 big overhaul
2026-04-05 20:51:43 -05:00

100 lines
2.7 KiB
Plaintext
Executable File

o<end_cope> sub
; o<cope_angle> call [direction] [x][y] [d] [ztop][zbot] [fincut] [mode]
; right now only 0 and 2 work but hey that's most of what you'd do
; 0: +x side
; 1: +y side
; 2: -x side
; 3: -y side
;G10 L0 ; re-read tool data
G90 ; absolute x,y,z
G90.1 ; absolute i,j,k
M101 ; enable Z-axis (M102 disables)
G17 ; select XY plane for arcs
#<M_CONVENTIONAL> = [FIX[#8/1] MOD 2 EQ 1]
#<M_BOTHWAYS> = [FIX[#8/2] MOD 2 EQ 1]
#<M_PLUNGE> = [FIX[#8/4] MOD 2 EQ 1]
#<M_OUTSIDE> = [FIX[#8/8] MOD 2 EQ 1]
#<M_CLIMB> = [FIX[#8/1] MOD 2 EQ 0]
#<M_ONEWAY> = [FIX[#8/2] MOD 2 EQ 0]
#<M_HELIX> = [FIX[#8/4] MOD 2 EQ 0]
#<M_INSIDE> = [FIX[#8/8] MOD 2 EQ 0]
#<td> = #5410
#<tr> = [#<td>/2]
o1 if [EXISTS[#<_z_clearance>]]
#<z_clearance> = #<_z_clearance>
o1 else
#<z_clearance> = #5
o1 endif
o3 if [EXISTS[#<_stepover>]]
#<stepover> = #<_stepover>
o3 else
#<stepover> = [#<td>*0.4]
o3 endif
o4 if [EXISTS[#<_overlap>]]
#<overlap> = #<_overlap>
o4 else
#<overlap> = [#<stepover>*0.4]
o4 endif
G0 Z#<z_clearance>
#<cs> = -1
o10 if [#<M_CLIMB>]
#<cs> = +1
o10 endif
; angle is #1
; center is #2, #3
;G0 X[#2+#<td>*COS[#1]] Y[#3+#<td>*SIN[#1]]
;G1 X[#2] Y[#3]
#<l_total> = [#4/2 - #<tr> - ABS[#7]]
#<l_steps_total> = FUP[[#<l_total>-ABS[#7]]/#<stepover>]
#<l_steps> = [#<l_steps_total>-1]
#<r> = [#<l_total> - #<l_steps>/#<l_steps_total>*#<l_total>*1.1]
G0 X[#2+COS[#1+90]*#<r>+COS[#1]*#<stepover>] Y[#3+SIN[#1+90]*#<r>+SIN[#1]*#<stepover>]
G0 Z#5
G1 Z#6
o101 while [#<l_steps> GE 0]
#<r> = [#<l_total> - #<l_steps>/#<l_steps_total>*#<l_total>*1.1]
G0 X[#2+COS[#1+90*#<cs>]*#<r>+COS[#1]*#<stepover>] Y[#3+SIN[#1+90*#<cs>]*#<r>+SIN[#1]*#<stepover>]
G1 X[#2+COS[#1+90*#<cs>]*#<r>] Y[#3+SIN[#1+90*#<cs>]*#<r>]
o111 if [#<M_CLIMB>]
G3 X[#2+COS[#1-90*#<cs>]*#<r>] Y[#3+SIN[#1-90*#<cs>]*#<r>] I#2 J#3
o111 else
G2 X[#2+COS[#1-90*#<cs>]*#<r>] Y[#3+SIN[#1-90*#<cs>]*#<r>] I#2 J#3
o111 endif
G1 X[#2+COS[#1-90*#<cs>]*#<r>+COS[#1]*#<stepover>] Y[#3+SIN[#1-90*#<cs>]*#<r>+SIN[#1]*#<stepover>]
#<l_steps> = [#<l_steps> - 1]
o101 endwhile
o102 if [#7 GT 0]
#<r> = [#4/2 - #<tr>]
G0 X[#2+COS[#1+90*#<cs>]*#<r>+COS[#1]*#<stepover>] Y[#3+SIN[#1+90*#<cs>]*#<r>+SIN[#1]*#<stepover>]
G1 X[#2+COS[#1+90*#<cs>]*#<r>] Y[#3+SIN[#1+90*#<cs>]*#<r>]
o112 if [#<M_CLIMB>]
G3 X[#2+COS[#1-90*#<cs>]*#<r>] Y[#3+SIN[#1-90*#<cs>]*#<r>] I#2 J#3
o112 else
G2 X[#2+COS[#1-90*#<cs>]*#<r>] Y[#3+SIN[#1-90*#<cs>]*#<r>] I#2 J#3
o112 endif
G1 X[#2+COS[#1-90*#<cs>]*#<r>+COS[#1]*#<stepover>] Y[#3+SIN[#1-90*#<cs>]*#<r>+SIN[#1]*#<stepover>]
o102 endif
G0 Z#<z_clearance>
o<end_cope> endsub
M2