; slot - slot/obround cut between two points (x1,y1) and (x2,y2). ; Requires globals: #<_z_top>, #<_z_bot> ; Requires tool loaded (uses #5410 for diameter) ; Optional global: #<_z_clearance> o sub ; o call [mode] [x1][y1] [x2][y2] [width] [fincut] ; #1=mode #2=x1 #3=y1 #4=x2 #5=y2 #6=width #7=fincut # = [FIX[#1/1] MOD 2 EQ 1] # = [FIX[#1/1] MOD 2 EQ 0] G90 G90.1 M101 G17 # = #5410 # = [#/2] o1 if [EXISTS[#<_z_clearance>]] # = #<_z_clearance> o1 else # = #<_z_top> o1 endif # = [ATAN[#5-#3]/[#4-#2]] G0 Z# G0 X#2 Y#3 G0 Z#<_z_top> G1 Z#<_z_bot> G1 X#4 Y#5 # = [[#6-#5410]/2] o100 if [#] o101 if [#7 GT 0] G1 X[#4 +[SIN[#]*[#-#7]]] Y[#5 -[COS[#]*[#-#7]]] G3 X[#4 -[SIN[#]*[#-#7]]] Y[#5 +[COS[#]*[#-#7]]] I#4 J#5 G1 X[#2 -[SIN[#]*[#-#7]]] Y[#3 +[COS[#]*[#-#7]]] G3 X[#2 +[SIN[#]*[#-#7]]] Y[#3 -[COS[#]*[#-#7]]] I#2 J#3 G1 X[#4 +[SIN[#]*[#-#7]]] Y[#5 -[COS[#]*[#-#7]]] o101 endif G1 X[#4 +[SIN[#]*[#]]] Y[#5 -[COS[#]*[#]]] G3 X[#4 -[SIN[#]*[#]]] Y[#5 +[COS[#]*[#]]] I#4 J#5 G1 X[#2 -[SIN[#]*[#]]] Y[#3 +[COS[#]*[#]]] G3 X[#2 +[SIN[#]*[#]]] Y[#3 -[COS[#]*[#]]] I#2 J#3 G1 X[#4 +[SIN[#]*[#]]] Y[#5 -[COS[#]*[#]]] G0 X#4 Y#5 G0 Z#<_z_top> o100 else o102 if [#7 GT 0] G1 X[#4 -[SIN[#]*[#-#7]]] Y[#5 +[COS[#]*[#-#7]]] G2 X[#4 +[SIN[#]*[#-#7]]] Y[#5 -[COS[#]*[#-#7]]] I#4 J#5 G1 X[#2 +[SIN[#]*[#-#7]]] Y[#3 -[COS[#]*[#-#7]]] G2 X[#2 -[SIN[#]*[#-#7]]] Y[#3 +[COS[#]*[#-#7]]] I#2 J#3 G1 X[#4 -[SIN[#]*[#-#7]]] Y[#5 +[COS[#]*[#-#7]]] o102 endif G1 X[#4 -[SIN[#]*[#]]] Y[#5 +[COS[#]*[#]]] G2 X[#4 +[SIN[#]*[#]]] Y[#5 -[COS[#]*[#]]] I#4 J#5 G1 X[#2 +[SIN[#]*[#]]] Y[#3 -[COS[#]*[#]]] G2 X[#2 -[SIN[#]*[#]]] Y[#3 +[COS[#]*[#]]] I#2 J#3 G1 X[#4 -[SIN[#]*[#]]] Y[#5 +[COS[#]*[#]]] o100 endif G0 X#4 Y#5 G0 Z# o endsub M2