Code:
o<threading-metric> sub
(metric threading subroutine)
(threading-metric.ngc)
(July 11, 2016 - M Kennedy)
(Change these values)
#<_MajorDiameter> = #1 (Major Diameter)
#<_Pitch> = #2 (Pitch mm)
#<_Z_Finish> = #3 (+/- Z Length mm, Z)
(Don't usually have to change these values)
(PeakOffset is initial tool clearance)
#<_PeakOffset> = #4 (= -.1 Offset -ext, +int, I)
#<_TipRadius> = #5 (= 0.005 Tip Radius)
#<_Z_LeadIn> = #6 (= 2.5 Z Leadin)
#<_Z_Final> = #7 (= 50 Z Final Position)
#<_Spring_Passes> = #8 (= 1 Spring Passes, H)
#<_First_Cut_Depth> = #9 (= 0.18 First Cut Depth, J)
#<_Depth_Regression> = #10 (= 1.2 Depth Regression, R)
#<_CompoundSlideAngle> = #11 (= 29.5 Angle, Q)
#<_TaperAmount> = #12 (= 0 Taper)
#<_TaperType> = #13 (= 0 Taper Type, L)
(check to see if tool set)
o100 if [#5400 EQ 0]
(msg, Tool not set)
M2
o100 endif
(Calculations)
(calculate ThreadDepth, K)
o110 if [#<_PeakOffset> GT 0]
(internal = pitch * cos30 * 2 * 6/8 - 2 * tip radius)
#<_ThreadDepth>=[#<_Pitch> * 1.299 - 2 * #<_TipRadius>]
(thread height = pitch * cos30 * 2 * 5/8)
#<_MinorDiameter>=[#<_MajorDiameter> - #<_Pitch> * 1.0825]
#<_Diameter>=[#<_MinorDiameter> - #<_PeakOffset>]
o110 else
(external = pitch * cos30 * 2 * 7/8 - 2 * tip radius)
#<_ThreadDepth>=[#<_Pitch> * 1.5155 - 2 * #<_TipRadius>]
#<_Diameter>=[#<_MajorDiameter> + #<_PeakOffset>]
o110 endif
G7 G18 G54 G90 G94
G21 (set metric units)
G95 (feed per revolution mode)
M3
F0 S500
(Go to OD and Z Lead in)
G0 X#<_Diameter> Z#<_Z_LeadIn>
(Thread)
G76 P#<_Pitch> Z#<_Z_Finish> I#<_PeakOffset> J#<_First_Cut_Depth> R#<_Depth_Regression> K#<_ThreadDepth> Q#<_CompoundSlideAngle> H#<_Spring_Passes> L#<_TaperType>
G00 X#<_Diameter>
G00 Z#<_Z_Final>
G20 (set standard units)
M5
o<threading-metric> endsub