o sub ; o 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 # = [FIX[#8/1] MOD 2 EQ 1] # = [FIX[#8/2] MOD 2 EQ 1] # = [FIX[#8/4] MOD 2 EQ 1] # = [FIX[#8/8] MOD 2 EQ 1] # = [FIX[#8/1] MOD 2 EQ 0] # = [FIX[#8/2] MOD 2 EQ 0] # = [FIX[#8/4] MOD 2 EQ 0] # = [FIX[#8/8] MOD 2 EQ 0] # = #5410 # = [#/2] o1 if [EXISTS[#<_z_clearance>]] # = #<_z_clearance> o1 else # = #5 o1 endif o3 if [EXISTS[#<_stepover>]] # = #<_stepover> o3 else # = [#*0.4] o3 endif o4 if [EXISTS[#<_overlap>]] # = #<_overlap> o4 else # = [#*0.4] o4 endif G0 Z# # = -1 o10 if [#] # = +1 o10 endif ; angle is #1 ; center is #2, #3 ;G0 X[#2+#*COS[#1]] Y[#3+#*SIN[#1]] ;G1 X[#2] Y[#3] # = [#4/2 - # - ABS[#7]] # = FUP[[#-ABS[#7]]/#] # = [#-1] # = [# - #/#*#*1.1] G0 X[#2+COS[#1+90]*#+COS[#1]*#] Y[#3+SIN[#1+90]*#+SIN[#1]*#] G0 Z#5 G1 Z#6 o101 while [# GE 0] # = [# - #/#*#*1.1] G0 X[#2+COS[#1+90*#]*#+COS[#1]*#] Y[#3+SIN[#1+90*#]*#+SIN[#1]*#] G1 X[#2+COS[#1+90*#]*#] Y[#3+SIN[#1+90*#]*#] o111 if [#] G3 X[#2+COS[#1-90*#]*#] Y[#3+SIN[#1-90*#]*#] I#2 J#3 o111 else G2 X[#2+COS[#1-90*#]*#] Y[#3+SIN[#1-90*#]*#] I#2 J#3 o111 endif G1 X[#2+COS[#1-90*#]*#+COS[#1]*#] Y[#3+SIN[#1-90*#]*#+SIN[#1]*#] # = [# - 1] o101 endwhile o102 if [#7 GT 0] # = [#4/2 - #] G0 X[#2+COS[#1+90*#]*#+COS[#1]*#] Y[#3+SIN[#1+90*#]*#+SIN[#1]*#] G1 X[#2+COS[#1+90*#]*#] Y[#3+SIN[#1+90*#]*#] o112 if [#] G3 X[#2+COS[#1-90*#]*#] Y[#3+SIN[#1-90*#]*#] I#2 J#3 o112 else G2 X[#2+COS[#1-90*#]*#] Y[#3+SIN[#1-90*#]*#] I#2 J#3 o112 endif G1 X[#2+COS[#1-90*#]*#+COS[#1]*#] Y[#3+SIN[#1-90*#]*#+SIN[#1]*#] o102 endif G0 Z# o endsub M2