#<_clearance> = .01 #<_od> = 1.575 #<_pocketd> = 1.0 #<_pocketz> = 0.45 #<_id> = .63 #<_tab_height> = .09 #<_z_clearance> = 1.0 #<_z_thru> = -0.03 #<_z_start> = 0.65 #<_z_feed> = 20.0 #<_xy_feed> = 30.0 #<_angle_offset> = 13.0 #<_xspacing> = [COS[30] * [#5410+#<_od>+#<_clearance>]] #<_yspacing> = [SIN[30] * [#5410+#<_od>+#<_clearance>] * 2] #<_xstart> = 1.25 #<_ystart> = 1.2 o100 sub G54 G90.1 ; absolute arc distance (inner bore) G0 X#1 Y[#2+#<_id>/2 - #5410/2] Z[#<_z_clearance>] ; goto inner G0 Z[#<_z_start>] G3 F[#<_xy_feed>] I#1 J#2 X#1 Y[#2+#<_id>/2 - #5410/2] P4 Z#<_z_thru> ; helix inner G3 F[#<_xy_feed>] I#1 J#2 X#1 Y[#2+#<_id>/2 - #5410/2] G0 Z[#<_z_clearance>] ; retract inner (inner pocket) G0 X#1 Y[#2+#<_pocketd>/2 - #5410/2] Z[#<_z_start>] G1 F[#<_z_feed>] Z[#<_pocketz>] G3 F[#<_xy_feed>] I#1 J#2 X#1 Y[#2+#<_pocketd>/2 - #5410/2] G0 Z[#<_z_clearance>] (outer cut, with tabs) G0 Z#<_z_clearance> X#1 Y[#2+#<_od>/2 + #5410/2] ; goto outer G0 Z[#<_z_start>] # = [#<_od>/2 + #5410/2] # = 90 G3 F[#<_xy_feed>] I#1 J#2 X[#1+#*COS[#-#<_angle_offset>]] Y[#2+#*SIN[#-#<_angle_offset>]] P3 Z[#<_tab_height>] ; helix inner G3 F[#<_xy_feed>] I#1 J#2 X[#1+#*COS[#+#<_angle_offset>]] Y[#2+#*SIN[#+#<_angle_offset>]] G1 F[#<_z_feed>] Z[#<_z_thru>] o101 repeat [6] # = [#+60] G3 F[#<_xy_feed>] I#1 J#2 X[#1+#*COS[#-#<_angle_offset>]] Y[#2+#*SIN[#-#<_angle_offset>]] G1 F[#<_z_feed>] Z[#<_tab_height>] G3 F[#<_xy_feed>] I#1 J#2 X[#1+#*COS[#+#<_angle_offset>]] Y[#2+#*SIN[#+#<_angle_offset>]] G1 F[#<_z_feed>] Z[#<_z_thru>] o101 endrepeat G0 Z[#<_z_clearance>] ; retract inner o100 endsub o105 sub G54 G90.1 ; absolute arc distance # = [#<_od>/2 + #5410/2] # = 90 G0 X[#1+#*COS[#-#<_angle_offset>]] Y[#2+#*SIN[#-#<_angle_offset>]] Z[#<_z_start>] ; goto outer G1 F[#<_z_feed>] Z[#<_tab_height>] ; G3 F[#<_xy_feed>] I#1 J#2 X[#1+#*COS[#-#<_angle_offset>]] Y[#2+#*SIN[#-#<_angle_offset>]] P3 Z[#<_tab_height>] ; helix inner G3 F[#<_xy_feed>] I#1 J#2 X[#1+#*COS[#+#<_angle_offset>]] Y[#2+#*SIN[#+#<_angle_offset>]] G1 F[#<_z_feed>] Z[#<_z_thru>] o101 repeat [6] # = [#+60] G3 F[#<_xy_feed>] I#1 J#2 X[#1+#*COS[#-#<_angle_offset>]] Y[#2+#*SIN[#-#<_angle_offset>]] G1 F[#<_z_feed>] Z[#<_tab_height>] G3 F[#<_xy_feed>] I#1 J#2 X[#1+#*COS[#+#<_angle_offset>]] Y[#2+#*SIN[#+#<_angle_offset>]] G1 F[#<_z_feed>] Z[#<_z_thru>] o101 endrepeat G0 Z[#<_z_clearance>] ; retract inner o105 endsub ;o100 call [-0.9] [0.8] ;o100 call [+0.9] [0.8] #<_ix> = 0 o201 while [#<_ix> LT 8] #<_iy> = 0 o202 while [#<_iy> LT 6] o203 if [[#<_ix> MOD 2] EQ 0] o105 call [#<_xstart>+#<_ix>*#<_xspacing>] [#<_ystart>+#<_iy>*#<_yspacing>] o203 else o105 call [#<_xstart>+#<_ix>*#<_xspacing>] [#<_ystart>+#<_iy>*#<_yspacing>+#<_yspacing>/2] o203 endif #<_iy> = [#<_iy>+1] o202 endwhile #<_ix> = [#<_ix>+1] o201 endwhile M2 (Program End)