Files
linuxcnc/nc_files/programs/spacers.ngc
Thaddeus-Maximus f3953d66ae ?
2026-04-03 15:58:58 -05:00

110 lines
3.1 KiB
Plaintext
Executable File

#<_clearance> = .01
#<_od> = 1.575
#<_pocketd> = 1.0
#<_pocketz> = 0.45
#<_id> = .63
#<_td> = .1875
#<_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] * [#<_td>+#<_od>+#<_clearance>]]
#<_yspacing> = [SIN[30] * [#<_td>+#<_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 - #<_td>/2] Z[#<_z_clearance>] ; goto inner
G0 Z[#<_z_start>]
G3 F[#<_xy_feed>] I#1 J#2 X#1 Y[#2+#<_id>/2 - #<_td>/2] P4 Z#<_z_thru> ; helix inner
G3 F[#<_xy_feed>] I#1 J#2 X#1 Y[#2+#<_id>/2 - #<_td>/2]
G0 Z[#<_z_clearance>] ; retract inner
(inner pocket)
G0 X#1 Y[#2+#<_pocketd>/2 - #<_td>/2] Z[#<_z_start>]
G1 F[#<_z_feed>] Z[#<_pocketz>]
G3 F[#<_xy_feed>] I#1 J#2 X#1 Y[#2+#<_pocketd>/2 - #<_td>/2]
G0 Z[#<_z_clearance>]
(outer cut, with tabs)
G0 Z#<_z_clearance> X#1 Y[#2+#<_od>/2 + #<_td>/2] ; goto outer
G0 Z[#<_z_start>]
#<orad> = [#<_od>/2 + #<_td>/2]
#<angle> = 90
G3 F[#<_xy_feed>] I#1 J#2 X[#1+#<orad>*COS[#<angle>-#<_angle_offset>]] Y[#2+#<orad>*SIN[#<angle>-#<_angle_offset>]] P3 Z[#<_tab_height>] ; helix inner
G3 F[#<_xy_feed>] I#1 J#2 X[#1+#<orad>*COS[#<angle>+#<_angle_offset>]] Y[#2+#<orad>*SIN[#<angle>+#<_angle_offset>]]
G1 F[#<_z_feed>] Z[#<_z_thru>]
o101 repeat [6]
#<angle> = [#<angle>+60]
G3 F[#<_xy_feed>] I#1 J#2 X[#1+#<orad>*COS[#<angle>-#<_angle_offset>]] Y[#2+#<orad>*SIN[#<angle>-#<_angle_offset>]]
G1 F[#<_z_feed>] Z[#<_tab_height>]
G3 F[#<_xy_feed>] I#1 J#2 X[#1+#<orad>*COS[#<angle>+#<_angle_offset>]] Y[#2+#<orad>*SIN[#<angle>+#<_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
#<orad> = [#<_od>/2 + #<_td>/2]
#<angle> = 90
G0 X[#1+#<orad>*COS[#<angle>-#<_angle_offset>]] Y[#2+#<orad>*SIN[#<angle>-#<_angle_offset>]] Z[#<_z_start>] ; goto outer
G1 F[#<_z_feed>] Z[#<_tab_height>]
; G3 F[#<_xy_feed>] I#1 J#2 X[#1+#<orad>*COS[#<angle>-#<_angle_offset>]] Y[#2+#<orad>*SIN[#<angle>-#<_angle_offset>]] P3 Z[#<_tab_height>] ; helix inner
G3 F[#<_xy_feed>] I#1 J#2 X[#1+#<orad>*COS[#<angle>+#<_angle_offset>]] Y[#2+#<orad>*SIN[#<angle>+#<_angle_offset>]]
G1 F[#<_z_feed>] Z[#<_z_thru>]
o101 repeat [6]
#<angle> = [#<angle>+60]
G3 F[#<_xy_feed>] I#1 J#2 X[#1+#<orad>*COS[#<angle>-#<_angle_offset>]] Y[#2+#<orad>*SIN[#<angle>-#<_angle_offset>]]
G1 F[#<_z_feed>] Z[#<_tab_height>]
G3 F[#<_xy_feed>] I#1 J#2 X[#1+#<orad>*COS[#<angle>+#<_angle_offset>]] Y[#2+#<orad>*SIN[#<angle>+#<_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)