a_get_ext_note(nom_diameter, TPI){ SetFormat, FloatFast, 0.3 major_d_max:=nom_diameter pitch:=1/TPI major_d_min:=major_d_max-.05*pitch basic_pitch_d:=major_d_max-.5*pitch col3_table4:=.008*sqrt(major_d_max) pitch_d_max:=basic_pitch_d-col3_table4 pdt:=.006*sqrt(major_d_max)+.03*sqrt(1/TPI) pitch_d_min:=pitch_d_max-pdt basic_minor_d:=major_d_max-pitch if TPI<=10 minor_d_offset:=.02 if TPI>10 minor_d_offset:=.01 minor_d_max:=basic_minor_d-minor_d_offset minor_d_min:=minor_d_max-1.5*pdt ext_note:=major_d_max “-” TPI ” ACME-2G” “`n” ext_note:=ext_note . “C/W 45° END CHAMS” “`n” ext_note:=ext_note . “MAJORØ ” major_d_max “/” major_d_min “`n” ext_note:=ext_note . “PITCHØ ” pitch_d_max “/” pitch_d_min “`n” ext_note:=ext_note . “MINORØ ” minor_d_max “/” minor_d_min return ext_note }

ext_note:=sa_get_ext_note(nom_diameter,TPI) GuiControl, , sa_get_ext_note, % ext_note GuiControl, , sa_get_int_note, % sa_get_int_note(nom_diameter, TPI) GuiControl, , a_get_ext_note, % a_get_ext_note(nom_diameter, TPI) GuiControl, , a_get_int_note, % a_get_int_note(nom_diameter, TPI) return ;————————————————————————————————————– sa_get_ext_note: Gui, Submit,NoHide SetFormat, FloatFast, 0 GuiControlGet, TPI , , TPI SetFormat, FloatFast, 0.3 GuiControlGet, nom_diameter , , nom_diameter ext_note:=sa_get_ext_note(nom_diameter,TPI) clipboard:=ext_note return

sa_get_ext_note(nom_diameter, TPI){ SetFormat, FloatFast, 0.3 major_d_max:=nom_diameter pitch:=1/TPI major_d_min:=major_d_max-.05*pitch basic_pitch_d:=major_d_max-.3*pitch col3_table4:=.008*sqrt(major_d_max) pitch_d_max:=basic_pitch_d-col3_table4 pdt:=.006*sqrt(major_d_max)+.03*sqrt(1/TPI) pitch_d_min:=pitch_d_max-pdt basic_minor_d:=major_d_max-.6*pitch if TPI<=10 minor_d_offset:=.02 if TPI>10 minor_d_offset:=.01 minor_d_max:=basic_minor_d-minor_d_offset minor_d_min:=minor_d_max-pdt ext_note:=major_d_max “-” TPI ” STUB ACME-2G” “`n” ext_note:=ext_note . “C/W 45° END CHAMS” “`n” ext_note:=ext_note . “MAJORØ ” major_d_max “/” major_d_min “`n” ext_note:=ext_note . “PITCHØ ” pitch_d_max “/” pitch_d_min “`n” ext_note:=ext_note . “MINORØ ” minor_d_max “/” minor_d_min return ext_note }

sa_get_int_note: Gui, Submit,NoHide SetFormat, FloatFast, 0 GuiControlGet, TPI , , TPI SetFormat, FloatFast, 0.3 GuiControlGet, nom_diameter , , nom_diameter int_note:=sa_get_int_note(nom_diameter,TPI) clipboard:=int_note return

;set spacing and widths text_width:=100 text_space:=80 input_width:=60 input_space:=70 button_width:=150 button_spacing:=160

Just copy all the following, save it as a new text file with .ahk extension and then double click it to run it. This works if you have Authotkey installed.

a_get_int_note(nom_diameter, TPI) { SetFormat, FloatFast, 0.3 pitch:=1/TPI if TPI<=10 major_d_offset:=.02 if TPI>10 major_d_offset:=.01 major_d_min:=nom_diameter+major_d_offset pdt:=.006*sqrt(nom_diameter)+.03*sqrt(1/TPI) major_d_max:=major_d_min+major_d_offset pitch_d_min:=nom_diameter-.5*pitch pitch_d_max:=pitch_d_min+pdt minor_d_min:=nom_diameter-pitch minor_d_max:=minor_d_min+.05*pitch int_note:=nom_diameter “-” TPI ” ACME-2G” “`n” int_note:=int_note . “C/W 45° END CHAMS” “`n” int_note:=int_note . “MINORØ ” minor_d_min “/” minor_d_max “`n” int_note:=int_note . “PITCHØ ” pitch_d_min “/” pitch_d_max “`n” int_note:=int_note . “MAJORØ ” major_d_min “/” major_d_max return int_note }

This post is aimed at anyone that needs to calculate quickly the Major, Minor and Pitch diameters for a single start Stub Acme thread. As an engineer, this is the fastest way to generate note call-outs on drawings without any typos. The forumlas shown could also be used by anyone else that needs Stub Acme dimensions for something. In my previous post I showed you how to make a UDF in Creo 2/3 that automatically creates Stub Acme thread features in whichever model you place it. This example and others sometimes require calculating Stub Acme thread dims instead of simply looking them up. I have also included an extraordinarily useful Autohotkey script I made that you can simply enter the pin OD and the TPI to and you can then just click a button in order to copy the relevant note for the drawing (for the Engineers that like to give the machine shop as much info as possible). This works for external or pin threads and internal or box threads.

notes: Gui, Submit,NoHide SetFormat, FloatFast, 0 GuiControlGet, TPI , , TPI SetFormat, FloatFast, 0.3 GuiControlGet, nom_diameter , , nom_diameter

Gui, Add, Text, xm w250, Stub ACME Gui, Add, Button, Default xm w%button_width% vsa_external gsa_get_ext_note, Copy External/Pin Note Gui, Add, Button, Default xp+%button_spacing% w%button_width% vsa_internal gsa_get_int_note, Copy Internal/Box Note Gui, Add, Text, xm w250 vsa_get_ext_note, % sa_get_ext_note(nom_diameter, TPI) Gui, Add, Text, xp+%button_spacing% w250 vsa_get_int_note, % sa_get_int_note(nom_diameter, TPI) Gui, Add, Text, xm Gui, Add, Text, xm w250, ACME Gui, Add, Button, Default xm w%button_width% va_external ga_get_ext_note, Copy External/Pin Note Gui, Add, Button, Default xp+%button_spacing% w%button_width% va_internal ga_get_int_note, Copy Internal/Box Note Gui, Add, Text, xm w250 va_get_ext_note, % a_get_ext_note(nom_diameter, TPI) Gui, Add, Text, xp+%button_spacing% w250 va_get_int_note, % a_get_int_note(nom_diameter, TPI) Gui, Add, Text, xm Gui, Add, Text, xm w250 , Enter Nominal Diameter Gui, Add, Edit, r1 w60 xp+150 vnom_diameter gnotes,%nom_diameter% Gui, Add, Text, xm w250, Enter TPI (Threads per inch) Gui, Add, Edit, r1 w60 xp+150 vTPI gnotes ,%TPI%

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. #SingleInstance force ;sets script to automatically override the replace instance dialog with yes settimer, ontop,100

sa_get_int_note(nom_diameter, TPI){ SetFormat, FloatFast, 0.3 pitch:=1/TPI if TPI<=10 major_d_offset:=.02 if TPI>10 major_d_offset:=.01 major_d_min:=nom_diameter+major_d_offset pdt:=.006*sqrt(nom_diameter)+.03*sqrt(1/TPI) major_d_max:=major_d_min+pdt pitch_d_min:=nom_diameter-.3*pitch pitch_d_max:=pitch_d_min+pdt minor_d_min:=nom_diameter-.6*pitch minor_d_max:=minor_d_min+.05*pitch int_note:=nom_diameter “-” TPI ” STUB ACME-2G” “`n” int_note:=int_note . “C/W 45° END CHAMS” “`n” int_note:=int_note . “MINORØ ” minor_d_min “/” minor_d_max “`n” int_note:=int_note . “PITCHØ ” pitch_d_min “/” pitch_d_max “`n” int_note:=int_note . “MAJORØ ” major_d_min “/” major_d_max return int_note } ;————————————————————————————————————– ;acme functions a_get_ext_note: Gui, Submit,NoHide SetFormat, FloatFast, 0 GuiControlGet, TPI , , TPI SetFormat, FloatFast, 0.3 GuiControlGet, nom_diameter , , nom_diameter ext_note:=a_get_ext_note(nom_diameter,TPI) clipboard:=ext_note return

Here is a picture of the Mathcad sheet I made which has the comments saying where in the Machinery Handbook I got each equation. It shows the calculation for greater than 10 TPI. For 10 TPI or lower step 5 doesn’t include the .01 inch offset as per the Machinery Handbook. This assumes Stub Acme or Acme 2G Single Start threads but it could be easily modified to include others. Mathcad now has a free version so if you don’t want to install Authotkey you could simply type out these equations below just like it shows into a Mathcad sheet and it would calculate any size you wanted by simply changing the major_diameter_max and tpi values at the top. You can now download the Mathcad sheet here.

a_get_int_note: Gui, Submit,NoHide SetFormat, FloatFast, 0 GuiControlGet, TPI , , TPI SetFormat, FloatFast, 0.3 GuiControlGet, nom_diameter , , nom_diameter int_note:=a_get_int_note(nom_diameter,TPI) clipboard:=int_note return