o sub (standard threading subroutine) (threading.ngc) (July 11, 2016 - written by M Kennedy) (June 17, 2021 - added Allowance) (Change these values) #<_MajorDiameter> = #1 (Major Diameter) #<_TPI> = #2 (TPI) #<_Z_Finish> = #3 (+/- Z Length, Z) (Don't usually have to change these values) (PeakOffset is initial tool clearance) #<_Allowance> = #14 (= 0.0015 Diameter external only) #<_PeakOffset> = #4 (= -.004 Peak Offset -external, +internal, I) #<_TipRadius> = #5 (= 0.004 Tip Radius) #<_Z_LeadIn> = #6 (= 0.1 Z Leadin) #<_Z_Final> = #7 (= 2 Z Final Position) #<_Spring_Passes> = #8 (= 1 Spring Passes, H) #<_First_Cut_Depth> = #9 (= 0.007 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) #<_Pitch>=[1 / #<_TPI>] (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> + #<_Allowance>] #<_Diameter>=[#<_MajorDiameter> + #<_PeakOffset>] o110 endif G7 G18 G20 G54 G90 G94 G95 (feed per revolution mode) M3 F0 S500 (Go to start diameter 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> M5 o endsub