; pocket_rect - rectangular pocket, zigzag along the long axis. ; Requires globals: #<_z_top>, #<_z_bot> ; Requires tool loaded (uses #5410 for diameter) ; Optional globals: #<_z_clearance>, #<_stepover>, #<_rampang> o sub ; o call [mode] [x1][y1] [x2][y2] [fincut] ; #1=mode #2=x1 #3=y1 #4=x2 #5=y2 #6=fincut # = [FIX[#1/4] MOD 2 EQ 1] # = [FIX[#1/4] MOD 2 EQ 0] G90 G90.1 M101 G17 # = #5410 # = [#/2] o1 if [EXISTS[#<_z_clearance>]] # = #<_z_clearance> o1 else # = #<_z_top> o1 endif o2 if [EXISTS[#<_stepover>]] # = #<_stepover> o2 else # = [#*0.4] o2 endif o3 if [EXISTS[#<_rampang>]] # = #<_rampang> o3 else # = 5 o3 endif ; sort coords # = #2 # = #4 o11 if [#4 LT #2] # = #4 # = #2 o11 endif # = #3 # = #5 o12 if [#5 LT #3] # = #5 # = #3 o12 endif # = #6 o13 if [# LT 0] # = [0 - #] o13 endif # = [# + # + #] # = [# - # - #] # = [# + # + #] # = [# - # - #] # = [# - #] # = [# - #] o14 if [[# LE 0] OR [# LE 0]] o15 return o14 endif G0 Z# o20 if [# GE #] G0 X# Y# G0 Z#<_z_top> o21 if [#] # = [#*0.3] o22 if [[2*#] GT #] # = [#/2 - 0.001] o22 endif # = [#*2*3.14*TAN[#]] o25 if [# LT 0.0001] # = 0.0001 o25 endif G0 X[#+2*#] Y# # = [#<_z_top>-#] o23 while [# GT #<_z_bot>] G3 X[#+2*#] Y# I[-#] J0 Z# # = [# - #] o23 endwhile G3 X[#+2*#] Y# I[-#] J0 Z#<_z_bot> G1 X# o21 else G1 Z#<_z_bot> o21 endif # = # # = # # = # o30 while [1] G1 X# Y# # = [# + #] o31 if [# GE #] # = # G1 Y# # = # # = # # = # G1 X# o30 BREAK o31 endif G1 Y# # = # # = # # = # # = # o30 endwhile o20 else G0 X# Y# G0 Z#<_z_top> o41 if [#] # = [#*0.3] o42 if [[2*#] GT #] # = [#/2 - 0.001] o42 endif # = [#*2*3.14*TAN[#]] o45 if [# LT 0.0001] # = 0.0001 o45 endif G0 X# Y[#+2*#] # = [#<_z_top>-#] o43 while [# GT #<_z_bot>] G3 X# Y[#+2*#] I0 J[-#] Z# # = [# - #] o43 endwhile G3 X# Y[#+2*#] I0 J[-#] Z#<_z_bot> G1 Y# o41 else G1 Z#<_z_bot> o41 endif # = # # = # # = # o50 while [1] G1 Y# X# # = [# + #] o51 if [# GE #] # = # G1 X# # = # # = # # = # G1 Y# o50 BREAK o51 endif G1 X# # = # # = # # = # # = # o50 endwhile o20 endif G1 X# Y# G1 X# Y# G1 X# Y# G1 X# Y# G1 X# Y# G0 Z# o endsub M2