93 lines
2.5 KiB
Text
93 lines
2.5 KiB
Text
(This file is Copyright 2006 Chris Radek and released under the GPL v2.)
|
|
|
|
(This is meant as a place to collect useful subroutines. Please add any)
|
|
(other general-purpose routines that you think are useful. Put instructions)
|
|
(for calling the subroutine at its beginning, and add it to the table of)
|
|
(contents. Use a different O number for each subroutine. If you like, add)
|
|
(a usage example at the end of this file.)
|
|
|
|
(Table of contents:)
|
|
(O100: "hole drilling" with an end mill)
|
|
(O200: slot cutting)
|
|
|
|
|
|
o100 sub
|
|
(helical hole milling, load tool and set feed first, then use like so:)
|
|
(o100 call [x pos] [y pos] [safety height] [hole depth] [hole dia] [tool dia])
|
|
(tool dia doesn't have to be specified exactly.)
|
|
#4=[0 - #4]
|
|
#7=[#6 / 2] (#7 is depth per circle = half of tool diameter)
|
|
#8=[#3 - #7] (#8 is current depth step)
|
|
g0 z#3
|
|
(start above and right so we make a convex corner for entry to the ccw arcs)
|
|
g0 x[#1 + #6] y[#2 + [#5 / 2]]
|
|
g41 g0 x#1 y[#2 + [#5 / 2]]
|
|
o101 while [#8 GT #4]
|
|
(down toward the specified depth a bit at a time)
|
|
g3 x#1 y[#2 + [#5 / 2]] i0 j[0 - [#5 / 2]] z#8
|
|
#8=[#8 - #7]
|
|
o101 endwhile
|
|
(down to the actual depth)
|
|
g3 x#1 y[#2 + [#5 / 2]] i0 j[0 - [#5 / 2]] z#4
|
|
(full circle at the actual depth)
|
|
g3 x#1 y[#2 + [#5 / 2]] i0 j[0 - [#5 / 2]]
|
|
g0 z#3
|
|
g40
|
|
o100 endsub
|
|
|
|
|
|
o200 sub
|
|
(slot cutting, load tool and set feed first, then use like so:)
|
|
(o200 call [x1] [y1] [x2] [y2] [width] [depth] [safety height] [tool dia])
|
|
#10=[#5/2] (radius)
|
|
#11=[[atan [#4-#2]/[#3-#1]] + 180] ("backward" direction)
|
|
#12=[#11 + 90] ("right" side direction)
|
|
#13=[#10 * [cos [#11]]]
|
|
#14=[#10 * [sin [#11]]]
|
|
#15=[#10 * [cos [#12]]]
|
|
#16=[#10 * [sin [#12]]]
|
|
g0 z#7
|
|
g0 x[#1+#13+#15] y[#2+#14+#16]
|
|
g41 g0x[#1+#15] y[#2+#16]
|
|
#17=[#8/2] (depth per cut is half tool dia)
|
|
#18=[#7-#17] (z)
|
|
(down toward the specified depth a bit at a time)
|
|
o201 while [#18 GT [0-#6]]
|
|
g1 x[#3+#15] y[#4+#16] z#18
|
|
g3 x[#3-#15] y[#4-#16] r#10
|
|
g1 x[#1-#15] y[#2-#16]
|
|
g3 x[#1+#15] y[#2+#16] r#10
|
|
#18=[#18-#17]
|
|
o201 endwhile
|
|
(down to the actual depth and one more cut)
|
|
g1 x[#3+#15] y[#4+#16] z[0-#6]
|
|
g3 x[#3-#15] y[#4-#16] r#10
|
|
g1 x[#1-#15] y[#2-#16]
|
|
g3 x[#1+#15] y[#2+#16] r#10
|
|
g1 x[#3+#15] y[#4+#16]
|
|
g0 z#7
|
|
g40
|
|
o200 endsub
|
|
|
|
|
|
g20 g64 g17 g90
|
|
|
|
(here is the actual usage of o100: T1 is a 1/16th end mill)
|
|
t1 m6
|
|
s1000 m3
|
|
f60
|
|
o100 call [0] [0] [.01] [.125] [.125] [.0625]
|
|
o100 call [.25] [0] [.01] [.0625] [.25] [.0625]
|
|
m5
|
|
t0 m6
|
|
|
|
(here is the actual usage of o200: T1 is a 1/16th end mill)
|
|
t1 m6
|
|
s1000 m3
|
|
f60
|
|
o200 call [0] [.5] [1] [1] [.190] [.1] [.02] [.0625]
|
|
o200 call [1] [0] [.5] [.5] [.190] [.1] [.02] [.0625]
|
|
m5
|
|
t0 m6
|
|
|
|
m2
|