diff --git a/.gitignore b/.gitignore index 8d6f474..19ae1e3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ *.bak .vs/ .idea/ +*.code-workspace +Resources/assets/_patch_bsw_into_cmd.py +Resources/assets/_verify_bsw_patch.py diff --git a/InitGui.py b/InitGui.py index baa939a..59c87cc 100644 --- a/InitGui.py +++ b/InitGui.py @@ -59,7 +59,7 @@ def Initialize(self): "This function is executed when FreeCAD starts" import ThreadProfileCmd #needed files for FreeCAD commands self.list = ["ThreadProfileCreateObject", "ThreadProfileCreateButtressObject", "ThreadProfileCreateBottleObject", - "ThreadProfileCreatePGObject", + "ThreadProfileCreatePGObject", "ThreadProfileCreateBSWObject", "ThreadProfileMakeHelix", "ThreadProfileDoSweep", "ThreadProfileOpenOnlineCalculator", "ThreadProfileSettings"] # A list of command names created in the line above self.appendToolbar("ThreadProfile Commands",self.list[:-1]) # leave settings off toolbar diff --git a/README.md b/README.md index 551447b..150e57d 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,10 @@ This creates a bottle thread object (SP4xx M type) 45 degree / 10 degree buttres create PG object
This creates a PG (Panzergewinde / DIN 40430) thread profile with an 80 degree included angle. Presets cover common sizes from PG 7 to PG 48. Dimensions are based on published PG charts (see the British Metrics PG chart linked from the Open Online Calculator command). External presets include a small print clearance (0.15 mm) similar to the bottle thread presets; adjust the minor diameter if you need a tighter or looser fit.
+## Create BSW Whitworth thread profile Command +create BSW object
+This creates a British Standard Whitworth (BSW) thread profile with a 55 degree included angle and rounded crest and root (not a sharp truncated V). Presets cover common sizes from 1/16 in to 6 in. Basic minor diameters use the Whitworth depth h = (2/3) H. External presets include a 0.15 mm print clearance (same idea as PG / Bottle); adjust the minor diameter if you need a tighter or looser fit.
+ ## Make Helix Command make helix
The Make Helix command creates a Helix and sets its Pitch property to match the Pitch property of the ThreadProfile object. This property is linked parametrically, thus any change to the ThreadProfile.Pitch property will also cause the Helix.Pitch property to update itself. We also set the Helix.Height property to ThreadProfile.Pitch * ThreadProfile.ThreadCount, thus ensuring the Helix.Height property is such that the thread produced in the sweep will have Thread Count threads. This is also parametrically linked. As of v1.70 the helix will be attached to the object the thread profile is attached to via expressions. That way if you attach the thread profile to something else after creating the helix the helix will also attach itself to the same object in the same map mode.
@@ -63,7 +67,7 @@ Be wary of coplanar issues when cutting internal threads out of existing materia ## Open Online Calculator Command open online calculator
-Opens an online calculator for the metric sizes, ANSI UN and UNR inch sizes, ANSI Buttress sizes, or the PG (DIN 40430) thread chart (British Metrics) in the default browser. It is possible (I think) that FreeCAD might not have permission to do this. If so, then it will likely fail. Use the calculator to get the minor diameter for the thread you wish to make. For inch sizes, the 2A and 2B tolerances are for the normal fit. For Buttress threads class 2 is normal, class 3 is tighter fit. For metric size v threads the 6g tolerance is for normal fit. Typically there will be 2 minor diameters to select from: a minimum and a maximum. If you make the internal thread a little bit smaller the fit will be tighter. If you make the external thread a little bit smaller the fit will be looser. A good way to check the fit is to make the nut and the screw at the same time, then use the Part workbench cross-section tool to check the fit. +Opens an online calculator for the metric sizes, ANSI UN and UNR inch sizes, ANSI Buttress sizes, the PG (DIN 40430) thread chart (British Metrics), or a BSW / Whitworth thread chart in the default browser. It is possible (I think) that FreeCAD might not have permission to do this. If so, then it will likely fail. Use the calculator to get the minor diameter for the thread you wish to make. For inch sizes, the 2A and 2B tolerances are for the normal fit. For Buttress threads class 2 is normal, class 3 is tighter fit. For metric size v threads the 6g tolerance is for normal fit. Typically there will be 2 minor diameters to select from: a minimum and a maximum. If you make the internal thread a little bit smaller the fit will be tighter. If you make the external thread a little bit smaller the fit will be looser. A good way to check the fit is to make the nut and the screw at the same time, then use the Part workbench cross-section tool to check the fit. ## Parameterization Property This property can change the shape of the threadprofile object. If you are not satisfied with the looks of the threads when viewed up close after zooming in, you can try modifying this property to see what difference it makes. Default is 1.0. It's value can range from 0.0 to 1.0. @@ -132,6 +136,9 @@ The internal_data and external_data list properties define the radius of the Thr #### Release notes:
+* 2026.08.03 (version 2.01)
+* Add BSW / Whitworth (BS 84) 55 degree rounded thread profile presets +* Add Machining Doctor BSW chart link to Open Online Calculator * 2026.07.28 (version 2.00)
* Add PG (Panzergewinde / DIN 40430) 80 degree thread profile presets (PG 7 to PG 48), addresses issue #79 * Add British Metrics PG chart link to Open Online Calculator diff --git a/Resources/assets/generate_bsw_profile_data.py b/Resources/assets/generate_bsw_profile_data.py new file mode 100644 index 0000000..f6a0447 --- /dev/null +++ b/Resources/assets/generate_bsw_profile_data.py @@ -0,0 +1,207 @@ +#!/usr/bin/env python3 +"""Generate BSW / Whitworth (55°) internal/external profile tables. + +British Standard Whitworth form (pitch normalized to 1): + included angle 55° -> flank angle θ = 27.5° + H = 1 / (2·tan(θ)) ≈ 0.960491 + h = (2/3)·H ≈ 0.640327 (thread depth) + r = 0.137329 (crest & root radius) + e = H·sin(θ)/6 ≈ 0.073918 (arc height) + +Tables use the ThreadProfile convention: + radius = MinorDiameter/2 + table[i] · Pitch +with ~719 samples (k = 1..719 of 720), same as thread_builder / PG generator. + +Internal: root fillet at 0 … flanks … crest fillet at h +External: same shape with a small root dip (default -0.018) for clearance + +Usage: + python Resources/assets/generate_bsw_profile_data.py + python Resources/assets/generate_bsw_profile_data.py --check + python Resources/assets/generate_bsw_profile_data.py --emit-cmd + +See _bsw_validation/BSW_PROFILE_DATA_REPORT.md +""" +from __future__ import annotations + +import argparse +import math +import sys +from pathlib import Path + +RES = 720 +THETA = math.radians(27.5) +H = 1.0 / (2.0 * math.tan(THETA)) +DEPTH = (2.0 / 3.0) * H # h +R = 0.137329083233 +E = H * math.sin(THETA) / 6.0 +ROOT_EXTERNAL = -0.018 +SLOPE = 1.0 / math.tan(THETA) # cot(27.5°) = dx/dz on flank + +# Arc half-angle from bottom to flank tangent: 90° - 27.5° = 62.5° +ARC_HALF = math.radians(90.0 - 27.5) + + +def _clamp(v, lo, hi): + return lo if v < lo else hi if v > hi else v + + +def whitworth_offset(z: float) -> float: + """Radial offset from minor for one pitch, z in [0, 1). + + Layout (symmetric): + root centre at z=0 (and z=1), crest centre at z=0.5 + """ + # fold to [0, 1), then to [0, 0.5] by mirroring + z = z % 1.0 + if z > 0.5: + z = 1.0 - z + + # Root arc: centre at (R, 0). Bottom at x=0. + # Tangent points at angles ±ARC_HALF from the downward vertical. + z_root_tan = R * math.sin(ARC_HALF) + # Crest arc: centre at (DEPTH - R, 0.5). Top at x=DEPTH. + z_crest_tan = 0.5 - R * math.sin(ARC_HALF) + + if z <= z_root_tan: + # root fillet: x = R - sqrt(R^2 - z^2) + return R - math.sqrt(max(R * R - z * z, 0.0)) + + if z >= z_crest_tan: + # crest fillet relative to crest centre at 0.5 + dz = z - 0.5 + # centre at x = DEPTH - R; point on circle toward outside + return (DEPTH - R) + math.sqrt(max(R * R - dz * dz, 0.0)) + + # straight flank through root tangent point + x_tan = R - R * math.cos(ARC_HALF) # = E + # verify: R*(1-cos(ARC_HALF)) ... ARC_HALF=62.5°, cos(62.5°)≈0.4617, R*0.538≈0.074 ≈ E + return x_tan + SLOPE * (z - z_root_tan) + + +def generate_bsw_tables(root_external: float = ROOT_EXTERNAL): + """Return (internal_bsw_data, external_bsw_data).""" + internal = [] + for k in range(1, RES): + z = k / float(RES) + internal.append(round(whitworth_offset(z), 12)) + + # External: same flanks/crest, root shifted down by root_external (at valley) + # Map: scale/shift so min goes to root_external and max stays DEPTH + i_min = min(internal) + i_max = max(internal) + external = [] + for v in internal: + if i_max == i_min: + external.append(root_external) + else: + # keep crest at i_max, move root from i_min to root_external + t = (v - i_min) / (i_max - i_min) + external.append(round(root_external + t * (i_max - root_external), 12)) + return internal, external + + +def format_array(name: str, values) -> str: + return f"{name} = [" + ",".join(str(v) for v in values) + "]" + + +def basic_minor(major_mm: float, pitch_mm: float) -> float: + return major_mm - 2.0 * DEPTH * pitch_mm + + +def extract_from_cmd(src: str, name: str): + import re + + m = re.search(rf"{name}\s*=\s*\[([^\]]+)\]", src) + if not m: + raise SystemExit(f"{name} not found in ThreadProfileCmd.py") + return [float(x) for x in m.group(1).split(",") if x.strip()] + + +def main(argv=None) -> int: + p = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + p.add_argument( + "--check", + action="store_true", + help="geometry sanity + match ThreadProfileCmd.py arrays when present", + ) + p.add_argument( + "--cmd", + type=Path, + default=None, + help="path to ThreadProfileCmd.py (for --check)", + ) + p.add_argument( + "--emit-cmd", + action="store_true", + help="print arrays suitable for pasting into ThreadProfileCmd.py", + ) + p.add_argument("--quarter", action="store_true", help="print 1/4-20 BSW diameters") + args = p.parse_args(argv) + + internal, external = generate_bsw_tables() + + if args.quarter: + major = 0.25 * 25.4 + pitch = 25.4 / 20.0 + print(f"1/4-20 BSW major={major:.4f} P={pitch:.4f}") + print(f" basic minor={basic_minor(major, pitch):.4f} (chart ~4.72)") + print(f" h/P={DEPTH:.6f} H/P={H:.6f} r={R:.6f} e={E:.6f}") + + if args.check: + imin, imax = min(internal), max(internal) + emin, emax = min(external), max(external) + print(f"n={len(internal)} internal [{imin:.6f} .. {imax:.6f}]") + print(f" external [{emin:.6f} .. {emax:.6f}]") + print(f"H={H:.6f} h={DEPTH:.6f} r={R:.6f} e={E:.6f} slope={SLOPE:.6f}") + ok = ( + len(internal) == RES - 1 + and abs(imax - DEPTH) < 1e-3 + and imin >= -1e-6 + and abs(emax - DEPTH) < 1e-3 + and abs(emin - ROOT_EXTERNAL) < 1e-6 + ) + z1, z2 = 0.15, 0.20 + slope = (whitworth_offset(z2) - whitworth_offset(z1)) / (z2 - z1) + print(f"flank slope sample={slope:.6f} expect cot(27.5°)={SLOPE:.6f}") + ok = ok and abs(slope - SLOPE) < 0.05 + + here = Path(__file__).resolve() + cmd = args.cmd or here.parents[2] / "ThreadProfileCmd.py" + if cmd.is_file() and "internal_bsw_data" in cmd.read_text(encoding="utf-8"): + text = cmd.read_text(encoding="utf-8") + ref_i = extract_from_cmd(text, "internal_bsw_data") + ref_e = extract_from_cmd(text, "external_bsw_data") + di = max(abs(a - b) for a, b in zip(internal, ref_i)) + de = max(abs(a - b) for a, b in zip(external, ref_e)) + match = ( + len(internal) == len(ref_i) + and len(external) == len(ref_e) + and di == 0.0 + and de == 0.0 + ) + print(f"vs ThreadProfileCmd: internal maxdiff={di} external maxdiff={de}") + print("EMBEDDED MATCH" if match else "EMBEDDED MISMATCH") + ok = ok and match + else: + print("ThreadProfileCmd.py arrays not yet present; geometry-only check") + + print("OK" if ok else "MISMATCH") + return 0 if ok else 1 + + if args.emit_cmd: + print(format_array("internal_bsw_data", internal)) + print(format_array("external_bsw_data", external)) + return 0 + + print(format_array("internal_bsw_data", internal)) + print(format_array("external_bsw_data", external)) + print( + f"# n={len(internal)} h={DEPTH:.6f} root_ext={ROOT_EXTERNAL}", + file=sys.stderr, + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Resources/icons/CreateBSWObject.svg b/Resources/icons/CreateBSWObject.svg new file mode 100644 index 0000000..da2c082 --- /dev/null +++ b/Resources/icons/CreateBSWObject.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + BSW + diff --git a/ThreadProfileCmd.py b/ThreadProfileCmd.py index c755d55..099a71f 100644 --- a/ThreadProfileCmd.py +++ b/ThreadProfileCmd.py @@ -30,12 +30,12 @@ __author__ = "Mark Ganson " __url__ = "https://github.com/mwganson/ThreadProfile" __date__ = "2026.07.28" -__version__ = "2.00" +__version__ = "2.01" from fractions import Fraction from numbers import Rational -version = 2.00 +version = 2.01 import FreeCAD, FreeCADGui, Part, os from PySide import QtCore, QtGui @@ -579,7 +579,7 @@ def GetResources(self): def Activated(self): import webbrowser - items = ["Open online metric calculator", "Open online unified inch calculator", "Open online ANSI buttress thread calculator", "Open PG (DIN 40430) thread chart (British Metrics)", "Cancel"] + items = ["Open online metric calculator", "Open online unified inch calculator", "Open online ANSI buttress thread calculator", "Open PG (DIN 40430) thread chart (British Metrics)", "Open BSW / Whitworth thread chart", "Cancel"] window = QtGui.QApplication.activeWindow() item,ok = QtGui.QInputDialog.getItem(window,'ThreadProfile','Open online calculator in default browser?',items,0,False) if ok and item == items[0]: @@ -590,6 +590,8 @@ def Activated(self): webbrowser.open('https://amesweb.info/Screws/ButtressInchScrewThreads.aspx') elif ok and item == items[3]: webbrowser.open('https://www.britishmetrics.com/images/pdf/technical/pgstd_4.htm') + elif ok and item == items[4]: + webbrowser.open('https://www.machiningdoctor.com/charts/bsw/') return @@ -768,10 +770,6 @@ def nuns(number: int, tpi: float): major_diameter_in = uts_numbered_major_diameter_in(number) return preset_uts('UNS', f'#{number}', major_diameter_in, tpi) - def bsw(major_diameter_in: Fraction, tpi: float): - name = f'{format_rational(major_diameter_in)} in BSW' - major_diameter = major_diameter_in * 25.4 - return preset_v_thread(name, major_diameter, ttp(tpi), 55) if len (presets) == 0: tmp_presets_data=[ @@ -1173,46 +1171,6 @@ def bsw(major_diameter_in: Fraction, tpi: float): uns(mixed(5, 3, 4), 14), uns(Fraction(6), 10), uns(Fraction(6), 14), - bsw(Fraction(1, 16), 60), - bsw(Fraction(3, 32), 48), - bsw(Fraction(1, 8), 40), - bsw(Fraction(5, 32), 32), - bsw(Fraction(3, 16), 24), - bsw(Fraction(7, 32), 24), - bsw(Fraction(1, 4), 20), - bsw(Fraction(5, 16), 18), - bsw(Fraction(3, 8), 16), - bsw(Fraction(7, 16), 14), - bsw(Fraction(1, 2), 12), - bsw(Fraction(9, 16), 12), - bsw(Fraction(5, 8), 11), - bsw(Fraction(3, 4), 10), - bsw(Fraction(7, 8), 9), - bsw(Fraction(1), 8), - bsw(mixed(1, 1, 8), 7), - bsw(mixed(1, 1, 4), 7), - bsw(mixed(1, 3, 8), 6), - bsw(mixed(1, 1, 2), 6), - bsw(mixed(1, 5, 8), 5), - bsw(mixed(1, 3, 4), 5), - bsw(mixed(1, 7, 8), 4.5), - bsw(Fraction(2), 4.5), - bsw(mixed(2, 1, 4), 4), - bsw(mixed(2, 1, 2), 4), - bsw(mixed(2, 3, 4), 3.5), - bsw(Fraction(3), 3.5), - bsw(mixed(3, 1, 4), 3.5), - bsw(mixed(3, 1, 2), 3.5), - bsw(mixed(3, 3, 4), 3), - bsw(Fraction(4), 3), - bsw(mixed(4, 1, 4), 2 + 7 / 8), - bsw(mixed(4, 1, 2), 2 + 7 / 8), - bsw(mixed(4, 3, 4), 2 + 3 / 4), - bsw(Fraction(5), 2 + 3 / 4), - bsw(mixed(5, 1, 4), 2 + 5 / 8), - bsw(mixed(5, 1, 2), 2 + 5 / 8), - bsw(mixed(5, 3, 4), 2.5), - bsw(Fraction(6), 2.5) ] else: tmp_presets_data = presets @@ -1506,6 +1464,125 @@ def pg(txt, major_ext, minor_int, tpi, print_clearance=0.15): return obj #Gui.addCommand("ThreadProfileCreatePGObject", ThreadProfileCreatePGObjectCommandClass()) + +#################################################################################### +# Create the BSW / Whitworth (55 degree) rounded thread profile object + +class ThreadProfileCreateBSWObjectCommandClass(ThreadProfileCreateObjectCommandClass): + """Create BSW (British Standard Whitworth) thread profile command""" + + def GetResources(self): + return {'Pixmap' : os.path.join( iconPath , 'CreateBSWObject.svg') , + 'MenuText': "&Create BSW Whitworth thread profile" , + 'ToolTip' : "Create BSW / Whitworth 55 degree rounded ThreadProfile object"} + + def Activated(self): + doc = FreeCAD.ActiveDocument + doc.openTransaction("Create BSW ThreadProfile") + try: + self.makeBSWThreadProfile() + except Exception as e: + FreeCAD.Console.PrintError( + "ThreadProfile Error: Exception creating BSW thread profile object.\n\n" + + '\n'.join(traceback.format_exception(e)) + "\n" + ) + QtGui.QApplication.restoreOverrideCursor() + doc.commitTransaction() + doc.recompute() + return + + def IsActive(self): + if not FreeCAD.ActiveDocument: + return False + return True + + def getHelp(self): + return ["Created with ThreadProfile (v"+str(version)+") workbench.", + "This is a BSW / Whitworth 55 degree rounded thread profile", + "for sweeping along a helix in either the", + "Part or Part Design workbench.", + "installation of the ThreadProfile workbench is required.", +] + + def makeBSWThreadProfile(self): + # Preset format: [name, pitch_mm, external_minor_mm, internal_minor_mm] + # Basic Whitworth: minor = major - 2*h, h = (2/3)*H, H = P/(2*tan(27.5 deg)) + # h/P = 0.640327. External minus 0.15 mm print clearance (cf. PG/Bottle). + def bsw_preset(name, major_in, tpi, print_clearance=0.15): + major = float(major_in) * 25.4 + pitch = 25.4 / float(tpi) + internal_minor = major - 2.0 * 0.640327375657 * pitch + external_minor = internal_minor - float(print_clearance) + return [name, pitch, external_minor, internal_minor] + + bsw_presets_data = [ + ["BSW Whitworth presets", 0, 0, 0], + bsw_preset("1/16 in - 60 BSW", Fraction(1, 16), 60), + bsw_preset("3/32 in - 48 BSW", Fraction(3, 32), 48), + bsw_preset("1/8 in - 40 BSW", Fraction(1, 8), 40), + bsw_preset("5/32 in - 32 BSW", Fraction(5, 32), 32), + bsw_preset("3/16 in - 24 BSW", Fraction(3, 16), 24), + bsw_preset("7/32 in - 24 BSW", Fraction(7, 32), 24), + bsw_preset("1/4 in - 20 BSW", Fraction(1, 4), 20), + bsw_preset("5/16 in - 18 BSW", Fraction(5, 16), 18), + bsw_preset("3/8 in - 16 BSW", Fraction(3, 8), 16), + bsw_preset("7/16 in - 14 BSW", Fraction(7, 16), 14), + bsw_preset("1/2 in - 12 BSW", Fraction(1, 2), 12), + bsw_preset("9/16 in - 12 BSW", Fraction(9, 16), 12), + bsw_preset("5/8 in - 11 BSW", Fraction(5, 8), 11), + bsw_preset("3/4 in - 10 BSW", Fraction(3, 4), 10), + bsw_preset("7/8 in - 9 BSW", Fraction(7, 8), 9), + bsw_preset("1 in - 8 BSW", Fraction(1, 1), 8), + bsw_preset("1 1/8 in - 7 BSW", Fraction(9, 8), 7), + bsw_preset("1 1/4 in - 7 BSW", Fraction(5, 4), 7), + bsw_preset("1 3/8 in - 6 BSW", Fraction(11, 8), 6), + bsw_preset("1 1/2 in - 6 BSW", Fraction(3, 2), 6), + bsw_preset("1 5/8 in - 5 BSW", Fraction(13, 8), 5), + bsw_preset("1 3/4 in - 5 BSW", Fraction(7, 4), 5), + bsw_preset("1 7/8 in - 4.5 BSW", Fraction(15, 8), 4.5), + bsw_preset("2 in - 4.5 BSW", Fraction(2, 1), 4.5), + bsw_preset("2 1/4 in - 4 BSW", Fraction(9, 4), 4), + bsw_preset("2 1/2 in - 4 BSW", Fraction(5, 2), 4), + bsw_preset("2 3/4 in - 3.5 BSW", Fraction(11, 4), 3.5), + bsw_preset("3 in - 3.5 BSW", Fraction(3, 1), 3.5), + bsw_preset("3 1/4 in - 3.5 BSW", Fraction(13, 4), 3.5), + bsw_preset("3 1/2 in - 3.5 BSW", Fraction(7, 2), 3.5), + bsw_preset("3 3/4 in - 3 BSW", Fraction(15, 4), 3), + bsw_preset("4 in - 3 BSW", Fraction(4, 1), 3), + bsw_preset("4 1/4 in - 2.875 BSW", Fraction(17, 4), 2.875), + bsw_preset("4 1/2 in - 2.875 BSW", Fraction(9, 2), 2.875), + bsw_preset("4 3/4 in - 2.75 BSW", Fraction(19, 4), 2.75), + bsw_preset("5 in - 2.75 BSW", Fraction(5, 1), 2.75), + bsw_preset("5 1/4 in - 2.625 BSW", Fraction(21, 4), 2.625), + bsw_preset("5 1/2 in - 2.625 BSW", Fraction(11, 2), 2.625), + bsw_preset("5 3/4 in - 2.5 BSW", Fraction(23, 4), 2.5), + bsw_preset("6 in - 2.5 BSW", Fraction(6, 1), 2.5), + ] + + internal_bsw_data = [7.0235e-06,2.8096156e-05,6.3224439e-05,0.000112419143,0.000175695404,0.000253072724,0.000344574997,0.000450230551,0.000570072189,0.000704137242,0.000852467625,0.001015109907,0.001192115384,0.001383540158,0.001589445235,0.001809896617,0.002044965415,0.002294727969,0.002559265971,0.00283866661,0.00313302272,0.003442432941,0.003767001897,0.004106840381,0.004462065559,0.004832801187,0.005219177845,0.005621333185,0.006039412204,0.006473567528,0.006923959724,0.007390757633,0.007874138727,0.008374289487,0.008891405824,0.009425693514,0.009977368677,0.01054665829,0.011133800739,0.011739046413,0.012362658348,0.013004912921,0.013666100597,0.014346526745,0.015046512514,0.015766395791,0.016506532234,0.017267296402,0.018049082983,0.018852308136,0.019677410952,0.020524855061,0.021395130387,0.02228875508,0.023206277642,0.024148279271,0.025115376448,0.02610822381,0.027127517335,0.028173997886,0.029248455166,0.03035173215,0.031484730046,0.032648413892,0.033843818866,0.035072057441,0.036334327518,0.037631921713,0.038966237992,0.040338791926,0.041751230845,0.043205350298,0.044703113271,0.046246672765,0.047838398482,0.049480908562,0.051177107608,0.052930232586,0.054743908702,0.05662221804,0.058569784724,0.060591881764,0.062694566739,0.064884856475,0.067170955378,0.069562559101,0.072071266405,0.074704860359,0.077372891091,0.080040921823,0.082708952555,0.085376983287,0.088045014019,0.090713044751,0.093381075483,0.096049106215,0.098717136947,0.101385167679,0.10405319841,0.106721229142,0.109389259874,0.112057290606,0.114725321338,0.11739335207,0.120061382802,0.122729413534,0.125397444266,0.128065474998,0.130733505729,0.133401536461,0.136069567193,0.138737597925,0.141405628657,0.144073659389,0.146741690121,0.149409720853,0.152077751585,0.154745782317,0.157413813049,0.16008184378,0.162749874512,0.165417905244,0.168085935976,0.170753966708,0.17342199744,0.176090028172,0.178758058904,0.181426089636,0.184094120368,0.186762151099,0.189430181831,0.192098212563,0.194766243295,0.197434274027,0.200102304759,0.202770335491,0.205438366223,0.208106396955,0.210774427687,0.213442458419,0.21611048915,0.218778519882,0.221446550614,0.224114581346,0.226782612078,0.22945064281,0.232118673542,0.234786704274,0.237454735006,0.240122765738,0.242790796469,0.245458827201,0.248126857933,0.250794888665,0.253462919397,0.256130950129,0.258798980861,0.261467011593,0.264135042325,0.266803073057,0.269471103788,0.27213913452,0.274807165252,0.277475195984,0.280143226716,0.282811257448,0.28547928818,0.288147318912,0.290815349644,0.293483380376,0.296151411108,0.298819441839,0.301487472571,0.304155503303,0.306823534035,0.309491564767,0.312159595499,0.314827626231,0.317495656963,0.320163687695,0.322831718427,0.325499749158,0.32816777989,0.330835810622,0.333503841354,0.336171872086,0.338839902818,0.34150793355,0.344175964282,0.346843995014,0.349512025746,0.352180056478,0.354848087209,0.357516117941,0.360184148673,0.362852179405,0.365520210137,0.368188240869,0.370856271601,0.373524302333,0.376192333065,0.378860363797,0.381528394528,0.38419642526,0.386864455992,0.389532486724,0.392200517456,0.394868548188,0.39753657892,0.400204609652,0.402872640384,0.405540671116,0.408208701848,0.410876732579,0.413544763311,0.416212794043,0.418880824775,0.421548855507,0.424216886239,0.426884916971,0.429552947703,0.432220978435,0.434889009167,0.437557039898,0.44022507063,0.442893101362,0.445561132094,0.448229162826,0.450897193558,0.45356522429,0.456233255022,0.458901285754,0.461569316486,0.464237347218,0.466905377949,0.469573408681,0.472241439413,0.474909470145,0.477577500877,0.480245531609,0.482913562341,0.485581593073,0.488249623805,0.490917654537,0.493585685268,0.496253716,0.498921746732,0.501589777464,0.504257808196,0.506925838928,0.50959386966,0.512261900392,0.514929931124,0.517597961856,0.520265992588,0.522934023319,0.525602054051,0.528270084783,0.530938115515,0.533606146247,0.536274176979,0.538942207711,0.541610238443,0.544278269175,0.546946299907,0.549614330638,0.55228236137,0.554950392102,0.557618422834,0.560286453566,0.562954484298,0.56562251503,0.568256109252,0.570764816556,0.573156420279,0.575442519182,0.577632808918,0.579735493893,0.581757590933,0.583705157617,0.585583466955,0.587397143071,0.589150268049,0.590846467095,0.592488977175,0.594080702892,0.595624262387,0.597122025359,0.598576144812,0.599988583731,0.601361137665,0.602695453944,0.603993048139,0.605255318216,0.606483556791,0.607678961765,0.608842645611,0.609975643507,0.611078920491,0.612153377771,0.613199858322,0.614219151847,0.615211999209,0.616179096386,0.617121098015,0.618038620577,0.618932245271,0.619802520596,0.620649964705,0.621475067521,0.622278292674,0.623060079256,0.623820843423,0.624560979866,0.625280863143,0.625980848912,0.62666127506,0.627322462736,0.627964717309,0.628588329244,0.629193574918,0.629780717367,0.63035000698,0.630901682143,0.631435969833,0.63195308617,0.632453236931,0.632936618024,0.633403415933,0.633853808129,0.634287963453,0.634706042472,0.635108197812,0.63549457447,0.635865310098,0.636220535276,0.63656037376,0.636884942716,0.637194352937,0.637488709047,0.637768109686,0.638032647688,0.638282410242,0.63851747904,0.638737930422,0.638943835499,0.639135260273,0.63931226575,0.639474908032,0.639623238415,0.639757303468,0.639877145106,0.63998280066,0.640074302933,0.640151680253,0.640214956514,0.640264151218,0.640299279501,0.640320352157,0.640327375657,0.640320352157,0.640299279501,0.640264151218,0.640214956514,0.640151680253,0.640074302933,0.63998280066,0.639877145106,0.639757303468,0.639623238415,0.639474908032,0.63931226575,0.639135260273,0.638943835499,0.638737930422,0.63851747904,0.638282410242,0.638032647688,0.637768109686,0.637488709047,0.637194352937,0.636884942716,0.63656037376,0.636220535276,0.635865310098,0.63549457447,0.635108197812,0.634706042472,0.634287963453,0.633853808129,0.633403415933,0.632936618024,0.632453236931,0.63195308617,0.631435969833,0.630901682143,0.63035000698,0.629780717367,0.629193574918,0.628588329244,0.627964717309,0.627322462736,0.62666127506,0.625980848912,0.625280863143,0.624560979866,0.623820843423,0.623060079256,0.622278292674,0.621475067521,0.620649964705,0.619802520596,0.618932245271,0.618038620577,0.617121098015,0.616179096386,0.615211999209,0.614219151847,0.613199858322,0.612153377771,0.611078920491,0.609975643507,0.608842645611,0.607678961765,0.606483556791,0.605255318216,0.603993048139,0.602695453944,0.601361137665,0.599988583731,0.598576144812,0.597122025359,0.595624262387,0.594080702892,0.592488977175,0.590846467095,0.589150268049,0.587397143071,0.585583466955,0.583705157617,0.581757590933,0.579735493893,0.577632808918,0.575442519182,0.573156420279,0.570764816556,0.568256109252,0.56562251503,0.562954484298,0.560286453566,0.557618422834,0.554950392102,0.55228236137,0.549614330638,0.546946299907,0.544278269175,0.541610238443,0.538942207711,0.536274176979,0.533606146247,0.530938115515,0.528270084783,0.525602054051,0.522934023319,0.520265992588,0.517597961856,0.514929931124,0.512261900392,0.50959386966,0.506925838928,0.504257808196,0.501589777464,0.498921746732,0.496253716,0.493585685268,0.490917654537,0.488249623805,0.485581593073,0.482913562341,0.480245531609,0.477577500877,0.474909470145,0.472241439413,0.469573408681,0.466905377949,0.464237347218,0.461569316486,0.458901285754,0.456233255022,0.45356522429,0.450897193558,0.448229162826,0.445561132094,0.442893101362,0.44022507063,0.437557039898,0.434889009167,0.432220978435,0.429552947703,0.426884916971,0.424216886239,0.421548855507,0.418880824775,0.416212794043,0.413544763311,0.410876732579,0.408208701848,0.405540671116,0.402872640384,0.400204609652,0.39753657892,0.394868548188,0.392200517456,0.389532486724,0.386864455992,0.38419642526,0.381528394528,0.378860363797,0.376192333065,0.373524302333,0.370856271601,0.368188240869,0.365520210137,0.362852179405,0.360184148673,0.357516117941,0.354848087209,0.352180056478,0.349512025746,0.346843995014,0.344175964282,0.34150793355,0.338839902818,0.336171872086,0.333503841354,0.330835810622,0.32816777989,0.325499749158,0.322831718427,0.320163687695,0.317495656963,0.314827626231,0.312159595499,0.309491564767,0.306823534035,0.304155503303,0.301487472571,0.298819441839,0.296151411108,0.293483380376,0.290815349644,0.288147318912,0.28547928818,0.282811257448,0.280143226716,0.277475195984,0.274807165252,0.27213913452,0.269471103788,0.266803073057,0.264135042325,0.261467011593,0.258798980861,0.256130950129,0.253462919397,0.250794888665,0.248126857933,0.245458827201,0.242790796469,0.240122765738,0.237454735006,0.234786704274,0.232118673542,0.22945064281,0.226782612078,0.224114581346,0.221446550614,0.218778519882,0.21611048915,0.213442458419,0.210774427687,0.208106396955,0.205438366223,0.202770335491,0.200102304759,0.197434274027,0.194766243295,0.192098212563,0.189430181831,0.186762151099,0.184094120368,0.181426089636,0.178758058904,0.176090028172,0.17342199744,0.170753966708,0.168085935976,0.165417905244,0.162749874512,0.16008184378,0.157413813049,0.154745782317,0.152077751585,0.149409720853,0.146741690121,0.144073659389,0.141405628657,0.138737597925,0.136069567193,0.133401536461,0.130733505729,0.128065474998,0.125397444266,0.122729413534,0.120061382802,0.11739335207,0.114725321338,0.112057290606,0.109389259874,0.106721229142,0.10405319841,0.101385167679,0.098717136947,0.096049106215,0.093381075483,0.090713044751,0.088045014019,0.085376983287,0.082708952555,0.080040921823,0.077372891091,0.074704860359,0.072071266405,0.069562559101,0.067170955378,0.064884856475,0.062694566739,0.060591881764,0.058569784724,0.05662221804,0.054743908702,0.052930232586,0.051177107608,0.049480908562,0.047838398482,0.046246672765,0.044703113271,0.043205350298,0.041751230845,0.040338791926,0.038966237992,0.037631921713,0.036334327518,0.035072057441,0.033843818866,0.032648413892,0.031484730046,0.03035173215,0.029248455166,0.028173997886,0.027127517335,0.02610822381,0.025115376448,0.024148279271,0.023206277642,0.02228875508,0.021395130387,0.020524855061,0.019677410952,0.018852308136,0.018049082983,0.017267296402,0.016506532234,0.015766395791,0.015046512514,0.014346526745,0.013666100597,0.013004912921,0.012362658348,0.011739046413,0.011133800739,0.01054665829,0.009977368677,0.009425693514,0.008891405824,0.008374289487,0.007874138727,0.007390757633,0.006923959724,0.006473567528,0.006039412204,0.005621333185,0.005219177845,0.004832801187,0.004462065559,0.004106840381,0.003767001897,0.003442432941,0.00313302272,0.00283866661,0.002559265971,0.002294727969,0.002044965415,0.001809896617,0.001589445235,0.001383540158,0.001192115384,0.001015109907,0.000852467625,0.000704137242,0.000570072189,0.000450230551,0.000344574997,0.000253072724,0.000175695404,0.000112419143,6.3224439e-05,2.8096156e-05,7.0235e-06] + external_bsw_data = [-0.018,-0.017978334741,-0.017942218584,-0.017891640431,-0.017826584722,-0.017747031405,-0.017652955914,-0.017544329126,-0.017421117313,-0.017283282097,-0.017130780382,-0.01696356429,-0.016781581083,-0.016584773081,-0.016373077563,-0.016146426669,-0.015904747291,-0.01564796094,-0.015375983627,-0.015088725712,-0.014786091749,-0.014467980326,-0.014134283875,-0.013784888488,-0.013419673704,-0.013038512286,-0.012641269983,-0.012227805272,-0.011797969077,-0.011351604482,-0.010888546402,-0.01040862125,-0.009911646563,-0.009397430614,-0.008865771984,-0.00831645911,-0.007749269795,-0.007163970678,-0.006560316669,-0.005938050338,-0.005296901252,-0.004636585261,-0.003956803733,-0.00325724271,-0.002537572013,-0.001797444252,-0.001036493768,-0.000254335468,0.000549436436,0.001375249804,0.002223556078,0.003094831923,0.003989581043,0.004908336158,0.005851661196,0.006820153698,0.007814447483,0.008835215597,0.009883173591,0.010959083161,0.012063756219,0.013198059445,0.014362919392,0.015559328237,0.016788350267,0.018051129242,0.019348896749,0.020682981755,0.02205482154,0.023465974296,0.024918133678,0.026413145729,0.027953028639,0.029539995956,0.031176484021,0.032865184601,0.034609083983,0.036411510163,0.038276190293,0.040207321255,0.04220965721,0.044288619456,0.046450435923,0.048702320763,0.051052709106,0.053511569264,0.056090826179,0.058798481793,0.061541542612,0.064284603432,0.067027664251,0.069770725071,0.072513785891,0.07525684671,0.07799990753,0.080742968349,0.083486029169,0.086229089988,0.088972150807,0.091715211626,0.094458272446,0.097201333266,0.099944394085,0.102687454905,0.105430515724,0.108173576544,0.110916637363,0.113659698183,0.116402759001,0.119145819821,0.121888880641,0.12463194146,0.12737500228,0.130118063099,0.132861123919,0.135604184738,0.138347245558,0.141090306378,0.143833367197,0.146576428016,0.149319488835,0.152062549655,0.154805610474,0.157548671294,0.160291732113,0.163034792933,0.165777853753,0.168520914572,0.171263975392,0.17400703621,0.17675009703,0.179493157849,0.182236218669,0.184979279488,0.187722340308,0.190465401128,0.193208461947,0.195951522767,0.198694583586,0.201437644406,0.204180705224,0.206923766044,0.209666826863,0.212409887683,0.215152948503,0.217896009322,0.220639070142,0.223382130961,0.226125191781,0.2288682526,0.231611313419,0.234354374239,0.237097435058,0.239840495878,0.242583556697,0.245326617517,0.248069678336,0.250812739156,0.253555799975,0.256298860795,0.259041921614,0.261784982433,0.264528043253,0.267271104072,0.270014164892,0.272757225711,0.275500286531,0.27824334735,0.28098640817,0.28372946899,0.286472529809,0.289215590628,0.291958651447,0.294701712267,0.297444773086,0.300187833906,0.302930894725,0.305673955545,0.308417016365,0.311160077184,0.313903138004,0.316646198822,0.319389259642,0.322132320461,0.324875381281,0.327618442101,0.33036150292,0.33310456374,0.335847624559,0.338590685379,0.341333746198,0.344076807018,0.346819867836,0.349562928656,0.352305989476,0.355049050295,0.357792111115,0.360535171934,0.363278232754,0.366021293573,0.368764354393,0.371507415212,0.374250476031,0.376993536851,0.37973659767,0.38247965849,0.385222719309,0.387965780129,0.390708840948,0.393451901768,0.396194962587,0.398938023407,0.401681084227,0.404424145045,0.407167205865,0.409910266684,0.412653327504,0.415396388323,0.418139449143,0.420882509963,0.423625570782,0.426368631602,0.429111692421,0.43185475324,0.434597814059,0.437340874879,0.440083935698,0.442826996518,0.445570057338,0.448313118157,0.451056178977,0.453799239796,0.456542300616,0.459285361435,0.462028422254,0.464771483073,0.467514543893,0.470257604713,0.473000665532,0.475743726352,0.478486787171,0.481229847991,0.48397290881,0.48671596963,0.489459030448,0.492202091268,0.494945152088,0.497688212907,0.500431273727,0.503174334546,0.505917395366,0.508660456185,0.511403517005,0.514146577825,0.516889638644,0.519632699463,0.522375760282,0.525118821102,0.527861881921,0.530604942741,0.53334800356,0.53609106438,0.5388341252,0.541577186019,0.544320246839,0.547063307657,0.549806368477,0.552549429296,0.555292490116,0.558035550935,0.560778611755,0.563521672575,0.566229328464,0.568808585379,0.571267445537,0.57361783388,0.57586971872,0.578031535187,0.580110497433,0.582112833388,0.58404396435,0.58590864448,0.587711070659,0.589454970042,0.591143670622,0.592780158687,0.594367126004,0.595907008914,0.597402020965,0.598854180347,0.600265333103,0.601637172888,0.602971257894,0.604269025401,0.605531804376,0.606760826406,0.607957235251,0.609122095198,0.610256398424,0.611361071482,0.612436981052,0.613484939045,0.614505707159,0.615500000944,0.616468493447,0.617411818485,0.618330573601,0.61922532272,0.620096598565,0.620944904838,0.621770718207,0.622574490111,0.623356648411,0.624117598895,0.624857726656,0.625577397353,0.626276958376,0.626956739904,0.627617055894,0.628258204981,0.628880471312,0.62948412532,0.630069424438,0.630636613753,0.631185926627,0.631717585257,0.632231801207,0.632728775893,0.633208701045,0.633671759125,0.63411812372,0.634547959915,0.634961424626,0.635358666929,0.635739828346,0.636105043131,0.636454438518,0.636788134969,0.637106246392,0.637408880355,0.63769613827,0.637968115583,0.638224901934,0.638466581312,0.638693232206,0.638904927724,0.639101735726,0.639283718933,0.639450935025,0.639603436739,0.639741271956,0.639864483768,0.639973110557,0.640067186048,0.640146739365,0.640211795074,0.640262373227,0.640298489384,0.640320154643,0.640327375657,0.640320154643,0.640298489384,0.640262373227,0.640211795074,0.640146739365,0.640067186048,0.639973110557,0.639864483768,0.639741271956,0.639603436739,0.639450935025,0.639283718933,0.639101735726,0.638904927724,0.638693232206,0.638466581312,0.638224901934,0.637968115583,0.63769613827,0.637408880355,0.637106246392,0.636788134969,0.636454438518,0.636105043131,0.635739828346,0.635358666929,0.634961424626,0.634547959915,0.63411812372,0.633671759125,0.633208701045,0.632728775893,0.632231801207,0.631717585257,0.631185926627,0.630636613753,0.630069424438,0.62948412532,0.628880471312,0.628258204981,0.627617055894,0.626956739904,0.626276958376,0.625577397353,0.624857726656,0.624117598895,0.623356648411,0.622574490111,0.621770718207,0.620944904838,0.620096598565,0.61922532272,0.618330573601,0.617411818485,0.616468493447,0.615500000944,0.614505707159,0.613484939045,0.612436981052,0.611361071482,0.610256398424,0.609122095198,0.607957235251,0.606760826406,0.605531804376,0.604269025401,0.602971257894,0.601637172888,0.600265333103,0.598854180347,0.597402020965,0.595907008914,0.594367126004,0.592780158687,0.591143670622,0.589454970042,0.587711070659,0.58590864448,0.58404396435,0.582112833388,0.580110497433,0.578031535187,0.57586971872,0.57361783388,0.571267445537,0.568808585379,0.566229328464,0.563521672575,0.560778611755,0.558035550935,0.555292490116,0.552549429296,0.549806368477,0.547063307657,0.544320246839,0.541577186019,0.5388341252,0.53609106438,0.53334800356,0.530604942741,0.527861881921,0.525118821102,0.522375760282,0.519632699463,0.516889638644,0.514146577825,0.511403517005,0.508660456185,0.505917395366,0.503174334546,0.500431273727,0.497688212907,0.494945152088,0.492202091268,0.489459030448,0.48671596963,0.48397290881,0.481229847991,0.478486787171,0.475743726352,0.473000665532,0.470257604713,0.467514543893,0.464771483073,0.462028422254,0.459285361435,0.456542300616,0.453799239796,0.451056178977,0.448313118157,0.445570057338,0.442826996518,0.440083935698,0.437340874879,0.434597814059,0.43185475324,0.429111692421,0.426368631602,0.423625570782,0.420882509963,0.418139449143,0.415396388323,0.412653327504,0.409910266684,0.407167205865,0.404424145045,0.401681084227,0.398938023407,0.396194962587,0.393451901768,0.390708840948,0.387965780129,0.385222719309,0.38247965849,0.37973659767,0.376993536851,0.374250476031,0.371507415212,0.368764354393,0.366021293573,0.363278232754,0.360535171934,0.357792111115,0.355049050295,0.352305989476,0.349562928656,0.346819867836,0.344076807018,0.341333746198,0.338590685379,0.335847624559,0.33310456374,0.33036150292,0.327618442101,0.324875381281,0.322132320461,0.319389259642,0.316646198822,0.313903138004,0.311160077184,0.308417016365,0.305673955545,0.302930894725,0.300187833906,0.297444773086,0.294701712267,0.291958651447,0.289215590628,0.286472529809,0.28372946899,0.28098640817,0.27824334735,0.275500286531,0.272757225711,0.270014164892,0.267271104072,0.264528043253,0.261784982433,0.259041921614,0.256298860795,0.253555799975,0.250812739156,0.248069678336,0.245326617517,0.242583556697,0.239840495878,0.237097435058,0.234354374239,0.231611313419,0.2288682526,0.226125191781,0.223382130961,0.220639070142,0.217896009322,0.215152948503,0.212409887683,0.209666826863,0.206923766044,0.204180705224,0.201437644406,0.198694583586,0.195951522767,0.193208461947,0.190465401128,0.187722340308,0.184979279488,0.182236218669,0.179493157849,0.17675009703,0.17400703621,0.171263975392,0.168520914572,0.165777853753,0.163034792933,0.160291732113,0.157548671294,0.154805610474,0.152062549655,0.149319488835,0.146576428016,0.143833367197,0.141090306378,0.138347245558,0.135604184738,0.132861123919,0.130118063099,0.12737500228,0.12463194146,0.121888880641,0.119145819821,0.116402759001,0.113659698183,0.110916637363,0.108173576544,0.105430515724,0.102687454905,0.099944394085,0.097201333266,0.094458272446,0.091715211626,0.088972150807,0.086229089988,0.083486029169,0.080742968349,0.07799990753,0.07525684671,0.072513785891,0.069770725071,0.067027664251,0.064284603432,0.061541542612,0.058798481793,0.056090826179,0.053511569264,0.051052709106,0.048702320763,0.046450435923,0.044288619456,0.04220965721,0.040207321255,0.038276190293,0.036411510163,0.034609083983,0.032865184601,0.031176484021,0.029539995956,0.027953028639,0.026413145729,0.024918133678,0.023465974296,0.02205482154,0.020682981755,0.019348896749,0.018051129242,0.016788350267,0.015559328237,0.014362919392,0.013198059445,0.012063756219,0.010959083161,0.009883173591,0.008835215597,0.007814447483,0.006820153698,0.005851661196,0.004908336158,0.003989581043,0.003094831923,0.002223556078,0.001375249804,0.000549436436,-0.000254335468,-0.001036493768,-0.001797444252,-0.002537572013,-0.00325724271,-0.003956803733,-0.004636585261,-0.005296901252,-0.005938050338,-0.006560316669,-0.007163970678,-0.007749269795,-0.00831645911,-0.008865771984,-0.009397430614,-0.009911646563,-0.01040862125,-0.010888546402,-0.011351604482,-0.011797969077,-0.012227805272,-0.012641269983,-0.013038512286,-0.013419673704,-0.013784888488,-0.014134283875,-0.014467980326,-0.014786091749,-0.015088725712,-0.015375983627,-0.01564796094,-0.015904747291,-0.016146426669,-0.016373077563,-0.016584773081,-0.016781581083,-0.01696356429,-0.017130780382,-0.017283282097,-0.017421117313,-0.017544329126,-0.017652955914,-0.017747031405,-0.017826584722,-0.017891640431,-0.017942218584,-0.017978334741,-0.018] + + # Default: 1/4-20 BSW (common size; basic minor ~4.72 mm) + default = bsw_presets_data[7] + obj = super(ThreadProfileCreateBSWObjectCommandClass, self).makeThreadProfile( + name="BSWThreadProfile", + internal_data=internal_bsw_data, + external_data=external_bsw_data, + presets=bsw_presets_data, + minor_diameter=default[2], + pitch=default[1], + internal_or_external="External", + thread_count=6, + Quality=6, + ) + if obj: + obj.Presets = default[0] + obj.Pitch = default[1] + obj.MinorDiameter = default[2] + return obj + +#Gui.addCommand("ThreadProfileCreateBSWObject", ThreadProfileCreateBSWObjectCommandClass()) + #################################################################################### def initialize(): if FreeCAD.GuiUp: @@ -1515,6 +1592,7 @@ def initialize(): Gui.addCommand("ThreadProfileCreateButtressObject", ThreadProfileCreateButtressObjectCommandClass()) Gui.addCommand("ThreadProfileCreateBottleObject", ThreadProfileCreateBottleObjectCommandClass()) Gui.addCommand("ThreadProfileCreatePGObject", ThreadProfileCreatePGObjectCommandClass()) + Gui.addCommand("ThreadProfileCreateBSWObject", ThreadProfileCreateBSWObjectCommandClass()) Gui.addCommand("ThreadProfileDoSweep", ThreadProfileDoSweepCommandClass()) Gui.addCommand("ThreadProfileSettings", ThreadProfileSettingsCommandClass()) diff --git a/_bsw_eye_catcher/thread_forms_V60_V45_PG_BSW.png b/_bsw_eye_catcher/thread_forms_V60_V45_PG_BSW.png new file mode 100644 index 0000000..2a358b7 Binary files /dev/null and b/_bsw_eye_catcher/thread_forms_V60_V45_PG_BSW.png differ diff --git a/_bsw_eye_catcher/thread_forms_V60_V45_PG_BSW.svg b/_bsw_eye_catcher/thread_forms_V60_V45_PG_BSW.svg new file mode 100644 index 0000000..6c6c624 --- /dev/null +++ b/_bsw_eye_catcher/thread_forms_V60_V45_PG_BSW.svg @@ -0,0 +1,14 @@ + + + + ThreadProfile forms (pitch = 1) — V60 / V45 / PG / BSW + + + H60≈0.577hPG=0.48hBSW≈0.640 + + + V60 (60° sharp)V45 (experimental)PG (80° flat crest)BSW Whitworth (55° rounds) + normalized pitch position z/P + radial offset / pitch (minor at 0) + 00.250.50.75100.20.40.6 + diff --git a/package.xml b/package.xml index 06904da..386b00e 100644 --- a/package.xml +++ b/package.xml @@ -2,8 +2,8 @@ ThreadProfile ThreadProfile object for creating internal/external threads - 2.00 - 2026.07.28 + 2.01 + 2026.08.03 TheMarkster LGPL-2.1 https://github.com/mwganson/ThreadProfile @@ -15,7 +15,7 @@ ThreadProfile ThreadProfileWorkbench ThreadProfile object for creating internal/external threads - 2.00 + 2.01 ./ Resources/icons/ThreadProfileLogo.svg 0.19.0