o sub ; o call [side] [x][y] [r] [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] # = #<_td> # = [#/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 # = [45 + #1*#] o300 while [# GE [-45 + #1*#]] # = [SQRT[2]*#4] # = FUP[[#-#4-ABS[#7]]/#] # = [#4 + ABS[#7] + # + #*# + #*0.2*SQRT[2]] G0 X[#2 + #*COS[#*#]] Y[#3 + #*SIN[#*#]] G0 Z#5 G1 Z#6 o200 while [# GE 1] # = [#4 + ABS[#7] + # + #*#] # = [#/#*57.3] # = [ASIN[[#4 + #]/#]-45] o201 if [# LT 0] # = 0 o201 endif # = [# + #] o202 if [# GT 45] # = 45 o202 endif o205 if [#] G1 X[#2 + #*COS[#*[#-#]]] Y[#3 + #*SIN[#*[#-#]]] o204 if [#] G2 X[#2 + #*COS[#*[#+#]]] Y[#3 + #*SIN[#*[#+#]]] I#2 J#3 o204 else G3 X[#2 + #*COS[#*[#+#]]] Y[#3 + #*SIN[#*[#+#]]] I#2 J#3 o204 endif G0 X[#2 + [#+#*0.2]*COS[#*[#+#]]] Y[#3 + [#+#*0.2]*SIN[#*[#+#]]] # = [#] o203 while [# GT -#] G0 X[#2 + [#+#*0.2]*COS[#*[#+#]]] Y[#3 + [#+#*0.2]*SIN[#*[#+#]]]; I#2 J#3 # = [#-1] o203 endwhile o205 else o206 if [# MOD 2] # = [-#] o206 endif G1 X[#2 + #*COS[#*[#-#]]] Y[#3 + #*SIN[#*[#-#]]] o204 if [# MOD 2 EQ #] G3 X[#2 + #*COS[#*[#+#]]] Y[#3 + #*SIN[#*[#+#]]] I#2 J#3 o204 else G2 X[#2 + #*COS[#*[#+#]]] Y[#3 + #*SIN[#*[#+#]]] I#2 J#3 o204 endif o205 endif # = [#-1] o200 endwhile G0 Z# # = [#-90] o300 endwhile # = [#4 + ABS[#7] + #] G0 X[#2 + #*COS[-90*# + #1]] Y[#3 + #*SIN[-90*# + #1]] G0 Z#5 G1 Z#6 o401 if [#] G2 X[#2 + #*COS[+90*# + #1]] Y[#3 + #*SIN[+90*# + #1]] I#2 J#3 o401 else G3 X[#2 + #*COS[+90*# + #1]] Y[#3 + #*SIN[+90*# + #1]] I#2 J#3 o401 endif G0 Z# o400 if [#7 GT 0] # = [#4 + #] G0 X[#2 + #*COS[-90*# + #1]] Y[#3 + #*SIN[-90*# + #1]] G0 Z#5 G1 Z#6 o402 if [#] G2 X[#2 + #*COS[+90*# + #1]] Y[#3 + #*SIN[+90*# + #1]] I#2 J#3 o402 else G3 X[#2 + #*COS[+90*# + #1]] Y[#3 + #*SIN[+90*# + #1]] I#2 J#3 o402 endif o400 endif G0 Z# o endsub M2