( Helix-mill a hole. ) ( Assumes metric, XY plane, feedrate, and tool compensation are set. ) O sub # = #1 ( [mm] X center ) # = #2 ( [mm] Y center ) # = #3 ( [mm] Hole radius ) # = #4 ( [mm] Z start position ) # = #5 ( [mm] Z end position ) G0 X[ # - # ] Y# G0 Z# # = # ( Mill out body with several full helical turns ) O100 while [ # GT [ # + #<_zstep> ] ] # = [ # - #<_zstep> ] G2 I# J0 Z# O100 endwhile G2 I# J0 Z# ( Flat out the bottom ) G2 I# J0 O endsub ( Mill a flat groove. ) ( Assumes metric, XY plane, feedrate are set, and no tool compensation. ) O sub # = #1 ( [mm] X center ) # = #2 ( [mm] Y center ) # = #3 ( [mm] Starting radius ) # = #4 ( [mm] Ending radius ) # = #5 ( [mm] Z position ) # = [ #5410 / 2 ] ( Mill out body with several full helical turns ) O100 if [ # GT # ] # = [ # - # ] G0 X[ # - # ] Y# G1 Z# O110 while [ # GT [ # + # ] ] G1 X[ # - # ] G2 I# J0 # = [ # - # ] O110 endwhile G1 X[ # - [ # + # ] ] G2 I[ # + # ] J0 O100 else O100 endif O endsub ( --- BEGIN CONFIGURATION --- ) ( 1.6mm cylindrical cutter ) T60 M6 S8000 F200 #<_zsafe> = 10. ( Safe Z [mm] ) #<_zstep> = 1. ( Pocketing Z step [mm] ) #<_thickness> = 3. ( Acrylic thickness [mm] ) ( --- END CONFIGURATION --- ) ( Metric, Absolute, XY plane ) G21 G90 G17 ( Spindle on, Coolant on ) M3 M8 ( Dwell for 2s ) G4 P2 G0 Z#<_zsafe> G0 X0 Y0 O call [0.] [0.] [46. / 2] [40. / 2] [-1.] G0 Z#<_zsafe> G41 O call [0.] [0.] [8.0 / 2 - #5410] [0.] [-#<_thickness>] G40 G0 Z#<_zsafe> G42 O call [0.] [0.] [60. / 2 + #5410] [0.] [-#<_thickness>] G0 Z#<_zsafe> M2