mirror of
https://github.com/adrianschlatter/threadlib.git
synced 2025-08-05 14:07:29 +02:00
Release 0.4
Enhancements ============= - PCO-1810 - tap module - list metric threads under short *and* full designators Fixes ====== - $fn is not ignored anymore in module thread(...) - better error message when thread_specs(...) cannot find designator - error in README.rst related to thread_specs(...) demo Improvements ============= - docs
This commit is contained in:
18
.gitignore
vendored
18
.gitignore
vendored
@@ -1,4 +1,20 @@
|
||||
# Apple
|
||||
.DS_Store
|
||||
*.xcf
|
||||
|
||||
# Editor
|
||||
.*.swp
|
||||
.vscode/
|
||||
|
||||
# Build
|
||||
design/THREAD_TABLE.csv
|
||||
|
||||
# Files not intended for repository
|
||||
*.xcf
|
||||
*.xlsx
|
||||
*.stl
|
||||
renderall*.scad
|
||||
ASME*.pdf
|
||||
docs/*.png
|
||||
design/UIS.py
|
||||
*.afdesign
|
||||
experimental/
|
||||
|
65
CONTRIBUTING.md
Normal file
65
CONTRIBUTING.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# How to contribute to threadlib
|
||||
|
||||
Thank for considering a contribution to threadlib! Any help is greatly
|
||||
appreciated.
|
||||
|
||||
|
||||
## Did you find an issue?
|
||||
|
||||
* Check whether your issue has already been reported by searching under
|
||||
[existing issues](https://github.com/adrianschlatter/threadlib/issues).
|
||||
|
||||
* If don't find an issue addressing the problem, open a new issue.
|
||||
|
||||
* Choose a meaningful title, describe clearly what you consider to be a
|
||||
problem.
|
||||
|
||||
* If possible, provide example code or other means to make it easy for a
|
||||
maintainer to reproduce your problem.
|
||||
|
||||
|
||||
## Did you write a patch?
|
||||
|
||||
You already have a solution for an issue or a new feature? All the better! A
|
||||
pull request ("PR") is what you want to do.
|
||||
|
||||
* Open a new [pull-request](https://github.com/adrianschlatter/threadlib/pulls)
|
||||
with your patch.
|
||||
|
||||
* Try to create PRs that address a specific issue/feature/topic.
|
||||
|
||||
* Avoid PRs containing an assortment of unrelated fixes and features. Better
|
||||
split it into separate PRs for each topic.
|
||||
|
||||
* Clean up your code before creating a pull request: Remove code that you have
|
||||
commented out for debugging, remove test code you have added, e.g., inside
|
||||
threadlib.scad.
|
||||
|
||||
* Make sure the PR's description clearly describes the problem and your solution.
|
||||
Include relevant issue numbers if appropriate.
|
||||
|
||||
* You increase the chances of quick acceptance of your PR significantly if you
|
||||
have taken measures to assure quality (such as writing and passing tests).
|
||||
|
||||
|
||||
## You intend to contribute new threads?
|
||||
|
||||
That's what we need the most! This is how to do it:
|
||||
|
||||
* Find the specs (usually specified in a norm, sometimes published openly)
|
||||
|
||||
* Convert these specs for use in threadlib:
|
||||
|
||||
* Find help on this topic in [Design of threadlib](docs/DesignOfThreadlib.md)
|
||||
and [Creating Thread Specs](docs/CreatingThreadSpecs.md)
|
||||
|
||||
* Use existing threads as examples. You find them beneath design/
|
||||
|
||||
* When done, proceed with a pull request (see "Did you write a patch?" above)
|
||||
|
||||
|
||||
## Final remarks
|
||||
|
||||
Currently, threadlib is maintained in the spare time of a single person having
|
||||
a family and a job. If you do not get immediate feedback to your issue or pull
|
||||
request, please have some patience.
|
2
LICENSE
2
LICENSE
@@ -1,4 +1,4 @@
|
||||
Copyright 2019 Adrian Schlatter
|
||||
Copyright 2019 Adrian Schlatter and Contributors
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
76
README.rst
76
README.rst
@@ -59,6 +59,16 @@ threadlib:
|
||||
|
||||
Clone threadlib into the folder 'threadlib' inside your OpenSCAD library folder
|
||||
|
||||
Your libraries folder should now look similar to this:
|
||||
|
||||
::
|
||||
|
||||
libraries
|
||||
├── list-comprehension-demos/
|
||||
├── scad-utils/
|
||||
├── thread_profile.scad
|
||||
└── threadlib/
|
||||
|
||||
|
||||
Usage
|
||||
===========================
|
||||
@@ -89,6 +99,32 @@ argument for higbee_arc):
|
||||
Note that for a nut you also have to specify an outer diameter. The inner
|
||||
diameter is implicitly given by the thread designator ("M12x0.5" in this case).
|
||||
|
||||
To make a threaded hole (e.g. in a plate), an intuitive approach would be to
|
||||
create the difference of the plate and a bolt. However, this part would not work
|
||||
well in practice: You need a little space around the bolt to avoid collisions.
|
||||
threadlib's solution is to provide the tap module:
|
||||
|
||||
.. code-block:: OpenSCAD
|
||||
|
||||
tap("G1/2", turns=5);
|
||||
|
||||
.. image:: docs/imgs/tap-G1o2.png
|
||||
:alt: G1/2 tap
|
||||
|
||||
The tap shown above *is* intended for use like this and has accounted for the
|
||||
allowances needed in practice. Also, it will create the tapers:
|
||||
|
||||
.. code-block:: OpenSCAD
|
||||
|
||||
difference() {
|
||||
part_to_be_tapped_here();
|
||||
tap("G1/2", turns=5);
|
||||
}
|
||||
|
||||
Make sure that the tap extends a tiny bit out of the part to be tapped.
|
||||
Otherwise, you will end up with infinitely thin artifacts covering the entrance
|
||||
of your tapped hole.
|
||||
|
||||
If you only need the threads alone:
|
||||
|
||||
.. code-block:: OpenSCAD
|
||||
@@ -98,12 +134,13 @@ If you only need the threads alone:
|
||||
.. image:: docs/imgs/thread-G1o2-ext.png
|
||||
:alt: G1/2 external thread
|
||||
|
||||
Then, add the support you want. In the simplest case, a cylinder (which is what
|
||||
nut(...) uses):
|
||||
(Note: You need to specify whether you want internal ("-int") or external
|
||||
("-ext") thread here.) Then, add the support you want. In the simplest
|
||||
case, a cylinder (which is what nut(...) uses):
|
||||
|
||||
.. code-block:: OpenSCAD
|
||||
|
||||
specs = thread_specs("G2 1/2-ext");
|
||||
specs = thread_specs("G1/2-ext");
|
||||
P = specs[0]; Rrot = specs[1]; Dsupport = specs[2];
|
||||
section_profile = specs[3];
|
||||
H = (5 + 1) * P;
|
||||
@@ -122,9 +159,15 @@ List of supported threads
|
||||
|
||||
Currently, threadlib knows these threads:
|
||||
|
||||
- `Metric threads <http://mdmetric.com/tech/M-thead%20600.htm>`__ (coarse, fine, and super-fine pitches) M0.25 to M600
|
||||
- `BSP parallel thread <https://www.amesweb.info/Screws/British-Standard-Pipe-Parallel-Thread-BSPP.aspx>`__ G1/16 to G6
|
||||
- `PCO-1881 <https://www.bevtech.org/assets/Committees/Packaging-Technology/20/3784253-20.pdf>`__ (PET-bottle thread)
|
||||
- Metric threads (coarse, fine, and super-fine pitches) M0.25 to M600.
|
||||
- Unified Inch Screw Threads (UNC, UNF, UNEF, 4-UN, 6-UN, 8-UN, 12-UN,
|
||||
16-UN, 20-UN, 28-UN, and 32-UN). All threads are class 2 threads.
|
||||
- `BSP parallel thread
|
||||
<https://www.amesweb.info/Screws/British-Standard-Pipe-Parallel-Thread-BSPP.aspx>`__
|
||||
G1/16 to G6. All threads are class A threads.
|
||||
- `PCO-1881
|
||||
<https://www.bevtech.org/assets/Committees/Packaging-Technology/20/3784253-20.pdf>`__
|
||||
(PET-bottle thread)
|
||||
|
||||
|
||||
Extensibility
|
||||
@@ -146,15 +189,28 @@ add your own:
|
||||
|
||||
Care to share? Safe others from repeating the valuable work you have already
|
||||
accomplished and get the fame you deserve: Send in your tried and tested threads
|
||||
for addition to threadlib!
|
||||
for addition to threadlib! See `Design of Threadlib <./docs/DesignOfThreadlib.md>`_
|
||||
for help on how to hack your own thread as shown above and
|
||||
`Creating Thread Specs <./docs/CreatingThreadSpecs.md>`_ for an introduction on how
|
||||
to contribute entire thread classes to threadlib.
|
||||
|
||||
|
||||
Still reading?
|
||||
===========================
|
||||
|
||||
If you read this far, you're probably not here for the first time. If you
|
||||
use and like threadlib, would you consider giving it a Github Star? (The
|
||||
button is at the top of this website.)
|
||||
|
||||
|
||||
Change Log
|
||||
===========================
|
||||
|
||||
- 0.4: `PCO-1810 <https://www.isbt.com/assets/Threadspecs/pco1810.pdf>`__.
|
||||
tap module. Fixes bug with $fn in straight_thread(). Lists metric
|
||||
threads under short designator and full designator.
|
||||
- 0.3: Unified Inch Screw Threads (UNC, UNF, UNEF, 4-UN, 6-UN, 8-UN, 12-UN,
|
||||
16-UN, 20-UN, 28-UN, and 32-UN. Fixed problem with PCO-1881-int. Fixed problem
|
||||
with G-ext threads . New build system.
|
||||
- 0.2: `Metric threads <http://mdmetric.com/tech/M-thead%20600.htm>`__, `PCO-1881 <https://www.bevtech.org/assets/Committees/Packaging-Technology/20/3784253-20.pdf>`__
|
||||
with G-ext threads. New build system.
|
||||
- 0.2: Metric threads, `PCO-1881 <https://www.bevtech.org/assets/Committees/Packaging-Technology/20/3784253-20.pdf>`__
|
||||
- 0.1: Initial release supporting `BSP parallel thread <https://www.amesweb.info/Screws/British-Standard-Pipe-Parallel-Thread-BSPP.aspx>`__
|
||||
|
||||
|
@@ -74,7 +74,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M0.9x0.225-ext", [0.225, 0.2930, 0.6080, [[0, -0.1010], [0, 0.1010], [0.1487, 0.0151], [0.1487, -0.0151]]]],
|
||||
["M0.9x0.225-int", [0.225, -0.4790, 0.9390, [[0, 0.1114], [0, -0.1114], [0.1250, -0.0392], [0.1250, 0.0392]]]],
|
||||
["M1-ext", [0.25, 0.3065, 0.6620, [[0, -0.1146], [0, 0.1146], [0.1678, 0.0178], [0.1678, -0.0178]]]],
|
||||
["M1x0.25-ext", [0.25, 0.3065, 0.6620, [[0, -0.1146], [0, 0.1146], [0.1678, 0.0178], [0.1678, -0.0178]]]],
|
||||
["M1-int", [0.25, -0.5428, 1.0535, [[0, 0.1237], [0, -0.1237], [0.1583, -0.0323], [0.1583, 0.0323]]]],
|
||||
["M1x0.25-int", [0.25, -0.5428, 1.0535, [[0, 0.1237], [0, -0.1237], [0.1583, -0.0323], [0.1583, 0.0323]]]],
|
||||
["M1x0.2-ext", [0.2, 0.3410, 0.7240, [[0, -0.0924], [0, 0.0924], [0.1365, 0.0136], [0.1365, -0.0136]]]],
|
||||
["M1x0.2-int", [0.2, -0.5356, 1.0460, [[0, 0.0990], [0, -0.0990], [0.1254, -0.0266], [0.1254, 0.0266]]]],
|
||||
["M1.1x0.25-ext", [0.25, 0.3565, 0.7620, [[0, -0.1146], [0, 0.1146], [0.1678, 0.0178], [0.1678, -0.0178]]]],
|
||||
@@ -82,15 +84,21 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M1.1x0.2-ext", [0.2, 0.3910, 0.8240, [[0, -0.0924], [0, 0.0924], [0.1365, 0.0136], [0.1365, -0.0136]]]],
|
||||
["M1.1x0.2-int", [0.2, -0.5856, 1.1460, [[0, 0.0990], [0, -0.0990], [0.1254, -0.0266], [0.1254, 0.0266]]]],
|
||||
["M1.2-ext", [0.25, 0.4065, 0.8620, [[0, -0.1146], [0, 0.1146], [0.1677, 0.0178], [0.1677, -0.0178]]]],
|
||||
["M1.2x0.25-ext", [0.25, 0.4065, 0.8620, [[0, -0.1146], [0, 0.1146], [0.1677, 0.0178], [0.1677, -0.0178]]]],
|
||||
["M1.2-int", [0.25, -0.6428, 1.2535, [[0, 0.1237], [0, -0.1237], [0.1583, -0.0323], [0.1583, 0.0323]]]],
|
||||
["M1.2x0.25-int", [0.25, -0.6428, 1.2535, [[0, 0.1237], [0, -0.1237], [0.1583, -0.0323], [0.1583, 0.0323]]]],
|
||||
["M1.2x0.2-ext", [0.2, 0.4410, 0.9240, [[0, -0.0924], [0, 0.0924], [0.1365, 0.0136], [0.1365, -0.0136]]]],
|
||||
["M1.2x0.2-int", [0.2, -0.6356, 1.2460, [[0, 0.0990], [0, -0.0990], [0.1254, -0.0266], [0.1254, 0.0266]]]],
|
||||
["M1.4-ext", [0.3, 0.5350, 1.1180, [[0, -0.1192], [0, 0.1192], [0.1377, 0.0396], [0.1377, -0.0396]]]],
|
||||
["M1.4x0.3-ext", [0.3, 0.5350, 1.1180, [[0, -0.1192], [0, 0.1192], [0.1377, 0.0396], [0.1377, -0.0396]]]],
|
||||
["M1.4-int", [0.3, -0.7545, 1.4545, [[0, 0.1324], [0, -0.1324], [0.1442, -0.0492], [0.1442, 0.0492]]]],
|
||||
["M1.4x0.3-int", [0.3, -0.7545, 1.4545, [[0, 0.1324], [0, -0.1324], [0.1442, -0.0492], [0.1442, 0.0492]]]],
|
||||
["M1.4x0.2-ext", [0.2, 0.5410, 1.1240, [[0, -0.0924], [0, 0.0924], [0.1365, 0.0136], [0.1365, -0.0136]]]],
|
||||
["M1.4x0.2-int", [0.2, -0.7356, 1.4460, [[0, 0.0990], [0, -0.0990], [0.1254, -0.0266], [0.1254, 0.0266]]]],
|
||||
["M1.6-ext", [0.35, 0.5375, 1.1385, [[0, -0.1589], [0, 0.1589], [0.2318, 0.0251], [0.2318, -0.0251]]]],
|
||||
["M1.6x0.35-ext", [0.35, 0.5375, 1.1385, [[0, -0.1589], [0, 0.1589], [0.2318, 0.0251], [0.2318, -0.0251]]]],
|
||||
["M1.6-int", [0.35, -0.8563, 1.6680, [[0, 0.1732], [0, -0.1732], [0.2208, -0.0458], [0.2208, 0.0458]]]],
|
||||
["M1.6x0.35-int", [0.35, -0.8563, 1.6680, [[0, 0.1732], [0, -0.1732], [0.2208, -0.0458], [0.2208, 0.0458]]]],
|
||||
["M1.6x0.3-ext", [0.3, 0.5785, 1.2070, [[0, -0.1349], [0, 0.1349], [0.1937, 0.0230], [0.1937, -0.0230]]]],
|
||||
["M1.6x0.3-int", [0.3, -0.8448, 1.6515, [[0, 0.1485], [0, -0.1485], [0.1861, -0.0411], [0.1861, 0.0411]]]],
|
||||
["M1.6x0.2-ext", [0.2, 0.6400, 1.3230, [[0, -0.0927], [0, 0.0927], [0.1375, 0.0133], [0.1375, -0.0133]]]],
|
||||
@@ -98,15 +106,21 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M1.7x0.35-ext", [0.35, 0.5875, 1.2385, [[0, -0.1589], [0, 0.1589], [0.2318, 0.0251], [0.2318, -0.0251]]]],
|
||||
["M1.7x0.35-int", [0.35, -0.9063, 1.7680, [[0, 0.1732], [0, -0.1732], [0.2208, -0.0458], [0.2208, 0.0458]]]],
|
||||
["M1.8-ext", [0.35, 0.6375, 1.3385, [[0, -0.1589], [0, 0.1589], [0.2318, 0.0251], [0.2318, -0.0251]]]],
|
||||
["M1.8x0.35-ext", [0.35, 0.6375, 1.3385, [[0, -0.1589], [0, 0.1589], [0.2318, 0.0251], [0.2318, -0.0251]]]],
|
||||
["M1.8-int", [0.35, -0.9563, 1.8680, [[0, 0.1732], [0, -0.1732], [0.2208, -0.0458], [0.2208, 0.0458]]]],
|
||||
["M1.8x0.35-int", [0.35, -0.9563, 1.8680, [[0, 0.1732], [0, -0.1732], [0.2208, -0.0458], [0.2208, 0.0458]]]],
|
||||
["M1.8x0.2-ext", [0.2, 0.7400, 1.5230, [[0, -0.0927], [0, 0.0927], [0.1375, 0.0133], [0.1375, -0.0133]]]],
|
||||
["M1.8x0.2-int", [0.2, -0.9366, 1.8480, [[0, 0.0990], [0, -0.0990], [0.1264, -0.0260], [0.1264, 0.0260]]]],
|
||||
["M2-ext", [0.4, 0.7040, 1.4780, [[0, -0.1807], [0, 0.1807], [0.2628, 0.0290], [0.2628, -0.0290]]]],
|
||||
["M2x0.4-ext", [0.4, 0.7040, 1.4780, [[0, -0.1807], [0, 0.1807], [0.2628, 0.0290], [0.2628, -0.0290]]]],
|
||||
["M2-int", [0.4, -1.0622, 2.0740, [[0, 0.1980], [0, -0.1980], [0.2507, -0.0532], [0.2507, 0.0532]]]],
|
||||
["M2x0.4-int", [0.4, -1.0622, 2.0740, [[0, 0.1980], [0, -0.1980], [0.2507, -0.0532], [0.2507, 0.0532]]]],
|
||||
["M2x0.25-ext", [0.25, 0.8050, 1.6605, [[0, -0.1150], [0, 0.1150], [0.1693, 0.0173], [0.1693, -0.0173]]]],
|
||||
["M2x0.25-int", [0.25, -1.0438, 2.0555, [[0, 0.1237], [0, -0.1237], [0.1593, -0.0318], [0.1593, 0.0318]]]],
|
||||
["M2.2-ext", [0.45, 0.7700, 1.6165, [[0, -0.2027], [0, 0.2027], [0.2950, 0.0324], [0.2950, -0.0324]]]],
|
||||
["M2.2x0.45-ext", [0.45, 0.7700, 1.6165, [[0, -0.2027], [0, 0.2027], [0.2950, 0.0324], [0.2950, -0.0324]]]],
|
||||
["M2.2-int", [0.45, -1.1687, 2.2800, [[0, 0.2228], [0, -0.2228], [0.2810, -0.0605], [0.2810, 0.0605]]]],
|
||||
["M2.2x0.45-int", [0.45, -1.1687, 2.2800, [[0, 0.2228], [0, -0.2228], [0.2810, -0.0605], [0.2810, 0.0605]]]],
|
||||
["M2.2x0.25-ext", [0.25, 0.9050, 1.8605, [[0, -0.1150], [0, 0.1150], [0.1693, 0.0173], [0.1693, -0.0173]]]],
|
||||
["M2.2x0.25-int", [0.25, -1.1438, 2.2555, [[0, 0.1237], [0, -0.1237], [0.1593, -0.0318], [0.1593, 0.0318]]]],
|
||||
["M2.3x0.45-ext", [0.45, 0.8200, 1.7165, [[0, -0.2027], [0, 0.2027], [0.2950, 0.0324], [0.2950, -0.0324]]]],
|
||||
@@ -114,21 +128,29 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M2.3x0.4-ext", [0.4, 0.8540, 1.7780, [[0, -0.1807], [0, 0.1807], [0.2628, 0.0290], [0.2628, -0.0290]]]],
|
||||
["M2.3x0.4-int", [0.4, -1.2122, 2.3740, [[0, 0.1980], [0, -0.1980], [0.2507, -0.0532], [0.2507, 0.0532]]]],
|
||||
["M2.5-ext", [0.45, 0.9200, 1.9165, [[0, -0.2027], [0, 0.2027], [0.2950, 0.0324], [0.2950, -0.0324]]]],
|
||||
["M2.5x0.45-ext", [0.45, 0.9200, 1.9165, [[0, -0.2027], [0, 0.2027], [0.2950, 0.0324], [0.2950, -0.0324]]]],
|
||||
["M2.5-int", [0.45, -1.3187, 2.5800, [[0, 0.2228], [0, -0.2228], [0.2810, -0.0605], [0.2810, 0.0605]]]],
|
||||
["M2.5x0.45-int", [0.45, -1.3187, 2.5800, [[0, 0.2228], [0, -0.2228], [0.2810, -0.0605], [0.2810, 0.0605]]]],
|
||||
["M2.5x0.35-ext", [0.35, 0.9875, 2.0385, [[0, -0.1589], [0, 0.1589], [0.2317, 0.0251], [0.2317, -0.0251]]]],
|
||||
["M2.5x0.35-int", [0.35, -1.3063, 2.5680, [[0, 0.1732], [0, -0.1732], [0.2208, -0.0458], [0.2208, 0.0458]]]],
|
||||
["M2.6x0.45-ext", [0.45, 0.9700, 2.0165, [[0, -0.2027], [0, 0.2027], [0.2950, 0.0324], [0.2950, -0.0324]]]],
|
||||
["M2.6x0.45-int", [0.45, -1.3662, 2.6750, [[0, 0.2228], [0, -0.2228], [0.2785, -0.0620], [0.2785, 0.0620]]]],
|
||||
["M3-ext", [0.5, 1.1360, 2.3555, [[0, -0.2247], [0, 0.2247], [0.3275, 0.0357], [0.3275, -0.0357]]]],
|
||||
["M3x0.5-ext", [0.5, 1.1360, 2.3555, [[0, -0.2247], [0, 0.2247], [0.3275, 0.0357], [0.3275, -0.0357]]]],
|
||||
["M3-int", [0.5, -1.5747, 3.0860, [[0, 0.2475], [0, -0.2475], [0.3102, -0.0684], [0.3102, 0.0684]]]],
|
||||
["M3x0.5-int", [0.5, -1.5747, 3.0860, [[0, 0.2475], [0, -0.2475], [0.3102, -0.0684], [0.3102, 0.0684]]]],
|
||||
["M3x0.35-ext", [0.35, 1.2355, 2.5365, [[0, -0.1595], [0, 0.1595], [0.2337, 0.0246], [0.2337, -0.0246]]]],
|
||||
["M3x0.35-int", [0.35, -1.5575, 3.0705, [[0, 0.1732], [0, -0.1732], [0.2220, -0.0451], [0.2220, 0.0451]]]],
|
||||
["M3.5-ext", [0.6, 1.3175, 2.7320, [[0, -0.2688], [0, 0.2688], [0.3908, 0.0432], [0.3908, -0.0432]]]],
|
||||
["M3.5x0.6-ext", [0.6, 1.3175, 2.7320, [[0, -0.2688], [0, 0.2688], [0.3908, 0.0432], [0.3908, -0.0432]]]],
|
||||
["M3.5-int", [0.6, -1.8376, 3.5995, [[0, 0.2970], [0, -0.2970], [0.3726, -0.0819], [0.3726, 0.0819]]]],
|
||||
["M3.5x0.6-int", [0.6, -1.8376, 3.5995, [[0, 0.2970], [0, -0.2970], [0.3726, -0.0819], [0.3726, 0.0819]]]],
|
||||
["M3.5x0.35-ext", [0.35, 1.4855, 3.0365, [[0, -0.1595], [0, 0.1595], [0.2337, 0.0246], [0.2337, -0.0246]]]],
|
||||
["M3.5x0.35-int", [0.35, -1.8075, 3.5705, [[0, 0.1732], [0, -0.1732], [0.2220, -0.0451], [0.2220, 0.0451]]]],
|
||||
["M4-ext", [0.7, 1.5010, 3.1110, [[0, -0.3124], [0, 0.3124], [0.4530, 0.0509], [0.4530, -0.0509]]]],
|
||||
["M4x0.7-ext", [0.7, 1.5010, 3.1110, [[0, -0.3124], [0, 0.3124], [0.4530, 0.0509], [0.4530, -0.0509]]]],
|
||||
["M4-int", [0.7, -2.0990, 4.1095, [[0, 0.3465], [0, -0.3465], [0.4330, -0.0965], [0.4330, 0.0965]]]],
|
||||
["M4x0.7-int", [0.7, -2.0990, 4.1095, [[0, 0.3465], [0, -0.3465], [0.4330, -0.0965], [0.4330, 0.0965]]]],
|
||||
["M4x0.5-ext", [0.5, 1.6360, 3.3555, [[0, -0.2247], [0, 0.2247], [0.3275, 0.0357], [0.3275, -0.0357]]]],
|
||||
["M4x0.5-int", [0.5, -2.0747, 4.0860, [[0, 0.2475], [0, -0.2475], [0.3102, -0.0684], [0.3102, 0.0684]]]],
|
||||
["M4.5x0.75-ext", [0.75, 1.7195, 3.5525, [[0, -0.3339], [0, 0.3339], [0.4845, 0.0541], [0.4845, -0.0541]]]],
|
||||
@@ -136,13 +158,17 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M4.5x0.5-ext", [0.5, 1.8860, 3.8555, [[0, -0.2247], [0, 0.2247], [0.3275, 0.0357], [0.3275, -0.0357]]]],
|
||||
["M4.5x0.5-int", [0.5, -2.3247, 4.5860, [[0, 0.2475], [0, -0.2475], [0.3102, -0.0684], [0.3102, 0.0684]]]],
|
||||
["M5-ext", [0.8, 1.9345, 3.9895, [[0, -0.3557], [0, 0.3557], [0.5160, 0.0578], [0.5160, -0.0578]]]],
|
||||
["M5x0.8-ext", [0.8, 1.9345, 3.9895, [[0, -0.3557], [0, 0.3557], [0.5160, 0.0578], [0.5160, -0.0578]]]],
|
||||
["M5-int", [0.8, -2.6107, 5.1200, [[0, 0.3960], [0, -0.3960], [0.4937, -0.1109], [0.4937, 0.1109]]]],
|
||||
["M5x0.8-int", [0.8, -2.6107, 5.1200, [[0, 0.3960], [0, -0.3960], [0.4937, -0.1109], [0.4937, 0.1109]]]],
|
||||
["M5x0.5-ext", [0.5, 2.1360, 4.3555, [[0, -0.2247], [0, 0.2247], [0.3275, 0.0357], [0.3275, -0.0357]]]],
|
||||
["M5x0.5-int", [0.5, -2.5747, 5.0860, [[0, 0.2475], [0, -0.2475], [0.3102, -0.0684], [0.3102, 0.0684]]]],
|
||||
["M5.5x0.5-ext", [0.5, 2.3785, 4.8480, [[0, -0.2269], [0, 0.2269], [0.3350, 0.0335], [0.3350, -0.0335]]]],
|
||||
["M5.5x0.5-int", [0.5, -2.8297, 5.5960, [[0, 0.2475], [0, -0.2475], [0.3152, -0.0655], [0.3152, 0.0655]]]],
|
||||
["M6-ext", [1, 2.2980, 4.7435, [[0, -0.4440], [0, 0.4440], [0.6440, 0.0722], [0.6440, -0.0722]]]],
|
||||
["M6x1-ext", [1, 2.2980, 4.7435, [[0, -0.4440], [0, 0.4440], [0.6440, 0.0722], [0.6440, -0.0722]]]],
|
||||
["M6-int", [1, -3.1369, 6.1470, [[0, 0.4950], [0, -0.4950], [0.6194, -0.1374], [0.6194, 0.1374]]]],
|
||||
["M6x1-int", [1, -3.1369, 6.1470, [[0, 0.4950], [0, -0.4950], [0.6194, -0.1374], [0.6194, 0.1374]]]],
|
||||
["M6x0.8-ext", [0.8, 2.4420, 4.9970, [[0, -0.3536], [0, 0.3536], [0.5085, 0.0600], [0.5085, -0.0600]]]],
|
||||
["M6x0.8-int", [0.8, -3.1060, 6.1105, [[0, 0.3960], [0, -0.3960], [0.4890, -0.1137], [0.4890, 0.1137]]]],
|
||||
["M6x0.75-ext", [0.75, 2.4645, 5.0475, [[0, -0.3353], [0, 0.3353], [0.4895, 0.0527], [0.4895, -0.0527]]]],
|
||||
@@ -152,13 +178,17 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M6x0.5-ext", [0.5, 2.6310, 5.3505, [[0, -0.2262], [0, 0.2262], [0.3325, 0.0342], [0.3325, -0.0342]]]],
|
||||
["M6x0.5-int", [0.5, -3.0777, 6.0920, [[0, 0.2475], [0, -0.2475], [0.3132, -0.0667], [0.3132, 0.0667]]]],
|
||||
["M7-ext", [1, 2.7980, 5.7435, [[0, -0.4440], [0, 0.4440], [0.6440, 0.0722], [0.6440, -0.0722]]]],
|
||||
["M7x1-ext", [1, 2.7980, 5.7435, [[0, -0.4440], [0, 0.4440], [0.6440, 0.0722], [0.6440, -0.0722]]]],
|
||||
["M7-int", [1, -3.6369, 7.1470, [[0, 0.4950], [0, -0.4950], [0.6194, -0.1374], [0.6194, 0.1374]]]],
|
||||
["M7x1-int", [1, -3.6369, 7.1470, [[0, 0.4950], [0, -0.4950], [0.6194, -0.1374], [0.6194, 0.1374]]]],
|
||||
["M7x0.75-ext", [0.75, 2.9645, 6.0475, [[0, -0.3353], [0, 0.3353], [0.4895, 0.0527], [0.4895, -0.0527]]]],
|
||||
["M7x0.75-int", [0.75, -3.6078, 7.1200, [[0, 0.3712], [0, -0.3712], [0.4663, -0.1021], [0.4663, 0.1021]]]],
|
||||
["M7x0.5-ext", [0.5, 3.1310, 6.3505, [[0, -0.2262], [0, 0.2262], [0.3325, 0.0342], [0.3325, -0.0342]]]],
|
||||
["M7x0.5-int", [0.5, -3.5777, 7.0920, [[0, 0.2475], [0, -0.2475], [0.3132, -0.0667], [0.3132, 0.0667]]]],
|
||||
["M8-ext", [1.25, 3.1360, 6.4455, [[0, -0.5518], [0, 0.5518], [0.7970, 0.0917], [0.7970, -0.0917]]]],
|
||||
["M8x1.25-ext", [1.25, 3.1360, 6.4455, [[0, -0.5518], [0, 0.5518], [0.7970, 0.0917], [0.7970, -0.0917]]]],
|
||||
["M8-int", [1.25, -4.1644, 8.1700, [[0, 0.6188], [0, -0.6188], [0.7747, -0.1715], [0.7747, 0.1715]]]],
|
||||
["M8x1.25-int", [1.25, -4.1644, 8.1700, [[0, 0.6188], [0, -0.6188], [0.7747, -0.1715], [0.7747, 0.1715]]]],
|
||||
["M8x1-ext", [1, 3.2980, 6.7435, [[0, -0.4440], [0, 0.4440], [0.6440, 0.0722], [0.6440, -0.0722]]]],
|
||||
["M8x1-int", [1, -4.1369, 8.1470, [[0, 0.4950], [0, -0.4950], [0.6194, -0.1374], [0.6194, 0.1374]]]],
|
||||
["M8x0.8-ext", [0.8, 3.4290, 6.9840, [[0, -0.3573], [0, 0.3573], [0.5215, 0.0562], [0.5215, -0.0562]]]],
|
||||
@@ -176,7 +206,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M9x0.5-ext", [0.5, 4.1310, 8.3505, [[0, -0.2262], [0, 0.2262], [0.3325, 0.0342], [0.3325, -0.0342]]]],
|
||||
["M9x0.5-int", [0.5, -4.5777, 9.0920, [[0, 0.2475], [0, -0.2475], [0.3132, -0.0667], [0.3132, 0.0667]]]],
|
||||
["M10-ext", [1.5, 3.9690, 8.1410, [[0, -0.6608], [0, 0.6608], [0.9560, 0.1088], [0.9560, -0.1088]]]],
|
||||
["M10x1.5-ext", [1.5, 3.9690, 8.1410, [[0, -0.6608], [0, 0.6608], [0.9560, 0.1088], [0.9560, -0.1088]]]],
|
||||
["M10-int", [1.5, -5.1945, 10.1980, [[0, 0.7425], [0, -0.7425], [0.9315, -0.2047], [0.9315, 0.2047]]]],
|
||||
["M10x1.5-int", [1.5, -5.1945, 10.1980, [[0, 0.7425], [0, -0.7425], [0.9315, -0.2047], [0.9315, 0.2047]]]],
|
||||
["M10x1.25-ext", [1.25, 4.1360, 8.4455, [[0, -0.5518], [0, 0.5518], [0.7970, 0.0917], [0.7970, -0.0917]]]],
|
||||
["M10x1.25-int", [1.25, -5.1644, 10.1700, [[0, 0.6188], [0, -0.6188], [0.7747, -0.1715], [0.7747, 0.1715]]]],
|
||||
["M10x1.12-ext", [1.12, 4.2190, 8.5995, [[0, -0.4962], [0, 0.4962], [0.7200, 0.0805], [0.7200, -0.0805]]]],
|
||||
@@ -196,7 +228,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M11x0.5-ext", [0.5, 5.1310, 10.3505, [[0, -0.2269], [0, 0.2269], [0.3315, 0.0355], [0.3315, -0.0355]]]],
|
||||
["M11x0.5-int", [0.5, -5.5777, 11.0920, [[0, 0.2475], [0, -0.2475], [0.3132, -0.0667], [0.3132, 0.0667]]]],
|
||||
["M12-ext", [1.75, 4.8005, 9.8365, [[0, -0.7706], [0, 0.7706], [1.1170, 0.1257], [1.1170, -0.1257]]]],
|
||||
["M12x1.75-ext", [1.75, 4.8005, 9.8365, [[0, -0.7706], [0, 0.7706], [1.1170, 0.1257], [1.1170, -0.1257]]]],
|
||||
["M12-int", [1.75, -6.2241, 12.2265, [[0, 0.8663], [0, -0.8663], [1.0874, -0.2385], [1.0874, 0.2385]]]],
|
||||
["M12x1.75-int", [1.75, -6.2241, 12.2265, [[0, 0.8663], [0, -0.8663], [1.0874, -0.2385], [1.0874, 0.2385]]]],
|
||||
["M12x1.5-ext", [1.5, 4.9650, 10.1370, [[0, -0.6608], [0, 0.6608], [0.9600, 0.1065], [0.9600, -0.1065]]]],
|
||||
["M12x1.5-int", [1.5, -6.1970, 12.2030, [[0, 0.7425], [0, -0.7425], [0.9340, -0.2032], [0.9340, 0.2032]]]],
|
||||
["M12x1.25-ext", [1.25, 5.1290, 10.4385, [[0, -0.5541], [0, 0.5541], [0.8035, 0.0902], [0.8035, -0.0902]]]],
|
||||
@@ -208,7 +242,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M12x0.5-ext", [0.5, 5.6285, 11.3480, [[0, -0.2283], [0, 0.2283], [0.3340, 0.0355], [0.3340, -0.0355]]]],
|
||||
["M12x0.5-int", [0.5, -6.0797, 12.0960, [[0, 0.2475], [0, -0.2475], [0.3152, -0.0655], [0.3152, 0.0655]]]],
|
||||
["M14-ext", [2, 5.6355, 11.5340, [[0, -0.8779], [0, 0.8779], [1.2745, 0.1420], [1.2745, -0.1420]]]],
|
||||
["M14x2-ext", [2, 5.6355, 11.5340, [[0, -0.8779], [0, 0.8779], [1.2745, 0.1420], [1.2745, -0.1420]]]],
|
||||
["M14-int", [2, -7.2505, 14.2505, [[0, 0.9890], [0, -0.9890], [1.2393, -0.2735], [1.2393, 0.2735]]]],
|
||||
["M14x2-int", [2, -7.2505, 14.2505, [[0, 0.9890], [0, -0.9890], [1.2393, -0.2735], [1.2393, 0.2735]]]],
|
||||
["M14x1.5-ext", [1.5, 5.9650, 12.1370, [[0, -0.6608], [0, 0.6608], [0.9600, 0.1065], [0.9600, -0.1065]]]],
|
||||
["M14x1.5-int", [1.5, -7.1970, 14.2030, [[0, 0.7425], [0, -0.7425], [0.9340, -0.2032], [0.9340, 0.2032]]]],
|
||||
["M14x1.25-ext", [1.25, 6.1290, 12.4385, [[0, -0.5541], [0, 0.5541], [0.8035, 0.0902], [0.8035, -0.0902]]]],
|
||||
@@ -224,7 +260,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M15x1-ext", [1, 6.7950, 13.7405, [[0, -0.4449], [0, 0.4449], [0.6450, 0.0725], [0.6450, -0.0725]]]],
|
||||
["M15x1-int", [1, -7.6394, 15.1520, [[0, 0.4950], [0, -0.4950], [0.6219, -0.1360], [0.6219, 0.1360]]]],
|
||||
["M16-ext", [2, 6.6355, 13.5340, [[0, -0.8779], [0, 0.8779], [1.2745, 0.1420], [1.2745, -0.1420]]]],
|
||||
["M16x2-ext", [2, 6.6355, 13.5340, [[0, -0.8779], [0, 0.8779], [1.2745, 0.1420], [1.2745, -0.1420]]]],
|
||||
["M16-int", [2, -8.2505, 16.2505, [[0, 0.9890], [0, -0.9890], [1.2393, -0.2735], [1.2393, 0.2735]]]],
|
||||
["M16x2-int", [2, -8.2505, 16.2505, [[0, 0.9890], [0, -0.9890], [1.2393, -0.2735], [1.2393, 0.2735]]]],
|
||||
["M16x1.6-ext", [1.6, 6.9190, 14.0370, [[0, -0.6994], [0, 0.6994], [1.0135, 0.1142], [1.0135, -0.1142]]]],
|
||||
["M16x1.6-int", [1.6, -8.1855, 16.1855, [[0, 0.7868], [0, -0.7868], [0.9765, -0.2230], [0.9765, 0.2230]]]],
|
||||
["M16x1.5-ext", [1.5, 6.9650, 14.1370, [[0, -0.6608], [0, 0.6608], [0.9600, 0.1065], [0.9600, -0.1065]]]],
|
||||
@@ -242,7 +280,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M17x1-ext", [1, 7.7950, 15.7405, [[0, -0.4449], [0, 0.4449], [0.6450, 0.0725], [0.6450, -0.0725]]]],
|
||||
["M17x1-int", [1, -8.6394, 17.1520, [[0, 0.4950], [0, -0.4950], [0.6219, -0.1360], [0.6219, 0.1360]]]],
|
||||
["M18-ext", [2.5, 7.3120, 14.9380, [[0, -1.0929], [0, 1.0929], [1.5830, 0.1790], [1.5830, -0.1790]]]],
|
||||
["M18x2.5-ext", [2.5, 7.3120, 14.9380, [[0, -1.0929], [0, 1.0929], [1.5830, 0.1790], [1.5830, -0.1790]]]],
|
||||
["M18-int", [2.5, -9.2925, 18.2925, [[0, 1.2302], [0, -1.2302], [1.5330, -0.3451], [1.5330, 0.3451]]]],
|
||||
["M18x2.5-int", [2.5, -9.2925, 18.2925, [[0, 1.2302], [0, -1.2302], [1.5330, -0.3451], [1.5330, 0.3451]]]],
|
||||
["M18x2-ext", [2, 7.6355, 15.5340, [[0, -0.8779], [0, 0.8779], [1.2745, 0.1420], [1.2745, -0.1420]]]],
|
||||
["M18x2-int", [2, -9.2505, 18.2505, [[0, 0.9890], [0, -0.9890], [1.2393, -0.2735], [1.2393, 0.2735]]]],
|
||||
["M18x1.5-ext", [1.5, 7.9650, 16.1370, [[0, -0.6608], [0, 0.6608], [0.9600, 0.1065], [0.9600, -0.1065]]]],
|
||||
@@ -256,7 +296,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M18x0.5-ext", [0.5, 8.6285, 17.3480, [[0, -0.2283], [0, 0.2283], [0.3340, 0.0355], [0.3340, -0.0355]]]],
|
||||
["M18x0.5-int", [0.5, -9.0797, 18.0960, [[0, 0.2475], [0, -0.2475], [0.3152, -0.0655], [0.3152, 0.0655]]]],
|
||||
["M20-ext", [2.5, 8.3120, 16.9380, [[0, -1.0929], [0, 1.0929], [1.5830, 0.1790], [1.5830, -0.1790]]]],
|
||||
["M20x2.5-ext", [2.5, 8.3120, 16.9380, [[0, -1.0929], [0, 1.0929], [1.5830, 0.1790], [1.5830, -0.1790]]]],
|
||||
["M20-int", [2.5, -10.2925, 20.2925, [[0, 1.2304], [0, -1.2304], [1.5330, -0.3453], [1.5330, 0.3453]]]],
|
||||
["M20x2.5-int", [2.5, -10.2925, 20.2925, [[0, 1.2304], [0, -1.2304], [1.5330, -0.3453], [1.5330, 0.3453]]]],
|
||||
["M20x2-ext", [2, 8.6355, 17.5340, [[0, -0.8779], [0, 0.8779], [1.2745, 0.1420], [1.2745, -0.1420]]]],
|
||||
["M20x2-int", [2, -10.2505, 20.2505, [[0, 0.9890], [0, -0.9890], [1.2393, -0.2735], [1.2393, 0.2735]]]],
|
||||
["M20x1.5-ext", [1.5, 8.9650, 18.1370, [[0, -0.6608], [0, 0.6608], [0.9600, 0.1065], [0.9600, -0.1065]]]],
|
||||
@@ -270,7 +312,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M22x3-ext", [3, 8.9850, 18.3370, [[0, -1.3100], [0, 1.3100], [1.8975, 0.2145], [1.8975, -0.2145]]]],
|
||||
["M22x3-int", [3, -11.3385, 22.3385, [[0, 1.4727], [0, -1.4727], [1.8375, -0.4118], [1.8375, 0.4118]]]],
|
||||
["M22-ext", [2.5, 9.3120, 18.9380, [[0, -1.0929], [0, 1.0929], [1.5830, 0.1790], [1.5830, -0.1790]]]],
|
||||
["M22x2.5-ext", [2.5, 9.3120, 18.9380, [[0, -1.0929], [0, 1.0929], [1.5830, 0.1790], [1.5830, -0.1790]]]],
|
||||
["M22-int", [2.5, -11.2925, 22.2925, [[0, 1.2304], [0, -1.2304], [1.5330, -0.3453], [1.5330, 0.3453]]]],
|
||||
["M22x2.5-int", [2.5, -11.2925, 22.2925, [[0, 1.2304], [0, -1.2304], [1.5330, -0.3453], [1.5330, 0.3453]]]],
|
||||
["M22x2-ext", [2, 9.6355, 19.5340, [[0, -0.8779], [0, 0.8779], [1.2745, 0.1420], [1.2745, -0.1420]]]],
|
||||
["M22x2-int", [2, -11.2505, 22.2505, [[0, 0.9890], [0, -0.9890], [1.2393, -0.2735], [1.2393, 0.2735]]]],
|
||||
["M22x1.5-ext", [1.5, 9.9650, 20.1370, [[0, -0.6608], [0, 0.6608], [0.9600, 0.1065], [0.9600, -0.1065]]]],
|
||||
@@ -282,7 +326,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M22x0.5-ext", [0.5, 10.6285, 21.3480, [[0, -0.2283], [0, 0.2283], [0.3340, 0.0355], [0.3340, -0.0355]]]],
|
||||
["M22x0.5-int", [0.5, -11.0797, 22.0960, [[0, 0.2475], [0, -0.2475], [0.3152, -0.0655], [0.3152, 0.0655]]]],
|
||||
["M24-ext", [3, 9.9775, 20.3295, [[0, -1.3115], [0, 1.3115], [1.9050, 0.2116], [1.9050, -0.2116]]]],
|
||||
["M24x3-ext", [3, 9.9775, 20.3295, [[0, -1.3115], [0, 1.3115], [1.9050, 0.2116], [1.9050, -0.2116]]]],
|
||||
["M24-int", [3, -12.3490, 24.3490, [[0, 1.4759], [0, -1.4759], [1.8480, -0.4089], [1.8480, 0.4089]]]],
|
||||
["M24x3-int", [3, -12.3490, 24.3490, [[0, 1.4759], [0, -1.4759], [1.8480, -0.4089], [1.8480, 0.4089]]]],
|
||||
["M24x2.5-ext", [2.5, 10.3020, 20.9280, [[0, -1.0958], [0, 1.0958], [1.5930, 0.1761], [1.5930, -0.1761]]]],
|
||||
["M24x2.5-int", [2.5, -12.3055, 24.3055, [[0, 1.2341], [0, -1.2341], [1.5460, -0.3415], [1.5460, 0.3415]]]],
|
||||
["M24x2-ext", [2, 10.6305, 21.5290, [[0, -0.8793], [0, 0.8793], [1.2795, 0.1406], [1.2795, -0.1406]]]],
|
||||
@@ -302,7 +348,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M26x1.5-ext", [1.5, 11.9600, 24.1320, [[0, -0.6622], [0, 0.6622], [0.9650, 0.1051], [0.9650, -0.1051]]]],
|
||||
["M26x1.5-int", [1.5, -13.1995, 26.2085, [[0, 0.7425], [0, -0.7425], [0.9365, -0.2018], [0.9365, 0.2018]]]],
|
||||
["M27-ext", [3, 11.4775, 23.3295, [[0, -1.3115], [0, 1.3115], [1.9050, 0.2116], [1.9050, -0.2116]]]],
|
||||
["M27x3-ext", [3, 11.4775, 23.3295, [[0, -1.3115], [0, 1.3115], [1.9050, 0.2116], [1.9050, -0.2116]]]],
|
||||
["M27-int", [3, -13.8490, 27.3490, [[0, 1.4759], [0, -1.4759], [1.8480, -0.4089], [1.8480, 0.4089]]]],
|
||||
["M27x3-int", [3, -13.8490, 27.3490, [[0, 1.4759], [0, -1.4759], [1.8480, -0.4089], [1.8480, 0.4089]]]],
|
||||
["M27x2-ext", [2, 12.1305, 24.5290, [[0, -0.8793], [0, 0.8793], [1.2795, 0.1406], [1.2795, -0.1406]]]],
|
||||
["M27x2-int", [2, -13.7552, 27.2565, [[0, 0.9900], [0, -0.9900], [1.2440, -0.2718], [1.2440, 0.2718]]]],
|
||||
["M27x1.5-ext", [1.5, 12.4600, 25.1320, [[0, -0.6622], [0, 0.6622], [0.9650, 0.1051], [0.9650, -0.1051]]]],
|
||||
@@ -318,7 +366,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M28x1-ext", [1, 13.2915, 26.7370, [[0, -0.4454], [0, 0.4454], [0.6485, 0.0710], [0.6485, -0.0710]]]],
|
||||
["M28x1-int", [1, -14.1419, 28.1570, [[0, 0.4950], [0, -0.4950], [0.6244, -0.1345], [0.6244, 0.1345]]]],
|
||||
["M30-ext", [3.5, 12.6530, 25.7320, [[0, -1.5271], [0, 1.5271], [2.2145, 0.2486], [2.2145, -0.2486]]]],
|
||||
["M30x3.5-ext", [3.5, 12.6530, 25.7320, [[0, -1.5271], [0, 1.5271], [2.2145, 0.2486], [2.2145, -0.2486]]]],
|
||||
["M30-int", [3.5, -15.3925, 30.3925, [[0, 1.7174], [0, -1.7174], [2.1470, -0.4778], [2.1470, 0.4778]]]],
|
||||
["M30x3.5-int", [3.5, -15.3925, 30.3925, [[0, 1.7174], [0, -1.7174], [2.1470, -0.4778], [2.1470, 0.4778]]]],
|
||||
["M30x3-ext", [3, 12.9775, 26.3295, [[0, -1.3115], [0, 1.3115], [1.9050, 0.2116], [1.9050, -0.2116]]]],
|
||||
["M30x3-int", [3, -15.3490, 30.3490, [[0, 1.4759], [0, -1.4759], [1.8480, -0.4089], [1.8480, 0.4089]]]],
|
||||
["M30x2.5-ext", [2.5, 13.3020, 26.9280, [[0, -1.0958], [0, 1.0958], [1.5930, 0.1761], [1.5930, -0.1761]]]],
|
||||
@@ -336,7 +386,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M32x1.5-ext", [1.5, 14.9600, 30.1320, [[0, -0.6622], [0, 0.6622], [0.9650, 0.1051], [0.9650, -0.1051]]]],
|
||||
["M32x1.5-int", [1.5, -16.1995, 32.2085, [[0, 0.7425], [0, -0.7425], [0.9365, -0.2018], [0.9365, 0.2018]]]],
|
||||
["M33-ext", [3.5, 14.1635, 28.7530, [[0, -1.5283], [0, 1.5283], [2.2140, 0.2500], [2.2140, -0.2500]]]],
|
||||
["M33x3.5-ext", [3.5, 14.1635, 28.7530, [[0, -1.5283], [0, 1.5283], [2.2140, 0.2500], [2.2140, -0.2500]]]],
|
||||
["M33-int", [3.5, -16.8925, 33.3925, [[0, 1.7174], [0, -1.7174], [2.1470, -0.4778], [2.1470, 0.4778]]]],
|
||||
["M33x3.5-int", [3.5, -16.8925, 33.3925, [[0, 1.7174], [0, -1.7174], [2.1470, -0.4778], [2.1470, 0.4778]]]],
|
||||
["M33x3-ext", [3, 14.4775, 29.3295, [[0, -1.3115], [0, 1.3115], [1.9050, 0.2116], [1.9050, -0.2116]]]],
|
||||
["M33x3-int", [3, -16.8490, 33.3490, [[0, 1.4759], [0, -1.4759], [1.8480, -0.4089], [1.8480, 0.4089]]]],
|
||||
["M33x2-ext", [2, 15.1305, 30.5290, [[0, -0.8793], [0, 0.8793], [1.2795, 0.1406], [1.2795, -0.1406]]]],
|
||||
@@ -350,7 +402,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M35x1.5-ext", [1.5, 16.4600, 33.1320, [[0, -0.6622], [0, 0.6622], [0.9650, 0.1051], [0.9650, -0.1051]]]],
|
||||
["M35x1.5-int", [1.5, -17.6995, 35.2080, [[0, 0.7425], [0, -0.7425], [0.9365, -0.2018], [0.9365, 0.2018]]]],
|
||||
["M36-ext", [4, 15.3270, 31.1320, [[0, -1.7436], [0, 1.7436], [2.5255, 0.2855], [2.5255, -0.2855]]]],
|
||||
["M36x4-ext", [4, 15.3270, 31.1320, [[0, -1.7436], [0, 1.7436], [2.5255, 0.2855], [2.5255, -0.2855]]]],
|
||||
["M36-int", [4, -18.4385, 36.4385, [[0, 1.9598], [0, -1.9598], [2.4535, -0.5433], [2.4535, 0.5433]]]],
|
||||
["M36x4-int", [4, -18.4385, 36.4385, [[0, 1.9598], [0, -1.9598], [2.4535, -0.5433], [2.4535, 0.5433]]]],
|
||||
["M36x3-ext", [3, 15.9775, 32.3295, [[0, -1.3115], [0, 1.3115], [1.9050, 0.2116], [1.9050, -0.2116]]]],
|
||||
["M36x3-int", [3, -18.3490, 36.3490, [[0, 1.4759], [0, -1.4759], [1.8480, -0.4089], [1.8480, 0.4089]]]],
|
||||
["M36x2-ext", [2, 16.6305, 33.5290, [[0, -0.8793], [0, 0.8793], [1.2795, 0.1406], [1.2795, -0.1406]]]],
|
||||
@@ -362,7 +416,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M38x1.5-ext", [1.5, 17.9600, 36.1320, [[0, -0.6622], [0, 0.6622], [0.9650, 0.1051], [0.9650, -0.1051]]]],
|
||||
["M38x1.5-int", [1.5, -19.1995, 38.2085, [[0, 0.7425], [0, -0.7425], [0.9365, -0.2018], [0.9365, 0.2018]]]],
|
||||
["M39-ext", [4, 16.8270, 34.1320, [[0, -1.7436], [0, 1.7436], [2.5255, 0.2855], [2.5255, -0.2855]]]],
|
||||
["M39x4-ext", [4, 16.8270, 34.1320, [[0, -1.7436], [0, 1.7436], [2.5255, 0.2855], [2.5255, -0.2855]]]],
|
||||
["M39-int", [4, -19.9385, 39.4385, [[0, 1.9598], [0, -1.9598], [2.4535, -0.5433], [2.4535, 0.5433]]]],
|
||||
["M39x4-int", [4, -19.9385, 39.4385, [[0, 1.9598], [0, -1.9598], [2.4535, -0.5433], [2.4535, 0.5433]]]],
|
||||
["M39x3-ext", [3, 17.4775, 35.3295, [[0, -1.3115], [0, 1.3115], [1.9050, 0.2116], [1.9050, -0.2116]]]],
|
||||
["M39x3-int", [3, -19.8490, 39.3490, [[0, 1.4759], [0, -1.4759], [1.8480, -0.4089], [1.8480, 0.4089]]]],
|
||||
["M39x2-ext", [2, 18.1305, 36.5290, [[0, -0.8793], [0, 0.8793], [1.2795, 0.1406], [1.2795, -0.1406]]]],
|
||||
@@ -380,7 +436,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M40x1.5-ext", [1.5, 18.9600, 38.1320, [[0, -0.6622], [0, 0.6622], [0.9650, 0.1051], [0.9650, -0.1051]]]],
|
||||
["M40x1.5-int", [1.5, -20.1995, 40.2080, [[0, 0.7425], [0, -0.7425], [0.9365, -0.2018], [0.9365, 0.2018]]]],
|
||||
["M42-ext", [4.5, 18.0030, 36.5360, [[0, -1.9590], [0, 1.9590], [2.8420, 0.3182], [2.8420, -0.3182]]]],
|
||||
["M42x4.5-ext", [4.5, 18.0030, 36.5360, [[0, -1.9590], [0, 1.9590], [2.8420, 0.3182], [2.8420, -0.3182]]]],
|
||||
["M42-int", [4.5, -21.4825, 42.4825, [[0, 2.2019], [0, -2.2019], [2.7505, -0.6139], [2.7505, 0.6139]]]],
|
||||
["M42x4.5-int", [4.5, -21.4825, 42.4825, [[0, 2.2019], [0, -2.2019], [2.7505, -0.6139], [2.7505, 0.6139]]]],
|
||||
["M42x4-ext", [4, 18.3270, 37.1320, [[0, -1.7436], [0, 1.7436], [2.5255, 0.2855], [2.5255, -0.2855]]]],
|
||||
["M42x4-int", [4, -21.4385, 42.4385, [[0, 1.9598], [0, -1.9598], [2.4535, -0.5433], [2.4535, 0.5433]]]],
|
||||
["M42x3-ext", [3, 18.9775, 38.3295, [[0, -1.3115], [0, 1.3115], [1.9050, 0.2116], [1.9050, -0.2116]]]],
|
||||
@@ -392,7 +450,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M42x1-ext", [1, 20.2915, 40.7370, [[0, -0.4454], [0, 0.4454], [0.6485, 0.0710], [0.6485, -0.0710]]]],
|
||||
["M42x1-int", [1, -21.1419, 42.1570, [[0, 0.4950], [0, -0.4950], [0.6244, -0.1345], [0.6244, 0.1345]]]],
|
||||
["M45-ext", [4.5, 19.5030, 39.5360, [[0, -1.9590], [0, 1.9590], [2.8420, 0.3182], [2.8420, -0.3182]]]],
|
||||
["M45x4.5-ext", [4.5, 19.5030, 39.5360, [[0, -1.9590], [0, 1.9590], [2.8420, 0.3182], [2.8420, -0.3182]]]],
|
||||
["M45-int", [4.5, -22.9825, 45.4825, [[0, 2.2019], [0, -2.2019], [2.7505, -0.6139], [2.7505, 0.6139]]]],
|
||||
["M45x4.5-int", [4.5, -22.9825, 45.4825, [[0, 2.2019], [0, -2.2019], [2.7505, -0.6139], [2.7505, 0.6139]]]],
|
||||
["M45x4-ext", [4, 19.8270, 40.1320, [[0, -1.7436], [0, 1.7436], [2.5255, 0.2855], [2.5255, -0.2855]]]],
|
||||
["M45x4-int", [4, -22.9385, 45.4385, [[0, 1.9598], [0, -1.9598], [2.4535, -0.5433], [2.4535, 0.5433]]]],
|
||||
["M45x3-ext", [3, 20.4775, 41.3295, [[0, -1.3115], [0, 1.3115], [1.9050, 0.2116], [1.9050, -0.2116]]]],
|
||||
@@ -404,7 +464,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M45x1-ext", [1, 21.7915, 43.7370, [[0, -0.4454], [0, 0.4454], [0.6485, 0.0710], [0.6485, -0.0710]]]],
|
||||
["M45x1-int", [1, -22.6419, 45.1570, [[0, 0.4950], [0, -0.4950], [0.6244, -0.1345], [0.6244, 0.1345]]]],
|
||||
["M48-ext", [5, 20.6755, 41.9335, [[0, -2.1749], [0, 2.1749], [3.1570, 0.3522], [3.1570, -0.3522]]]],
|
||||
["M48x5-ext", [5, 20.6755, 41.9335, [[0, -2.1749], [0, 2.1749], [3.1570, 0.3522], [3.1570, -0.3522]]]],
|
||||
["M48-int", [5, -24.5285, 48.5285, [[0, 2.4444], [0, -2.4444], [3.0575, -0.6791], [3.0575, 0.6791]]]],
|
||||
["M48x5-int", [5, -24.5285, 48.5285, [[0, 2.4444], [0, -2.4444], [3.0575, -0.6791], [3.0575, 0.6791]]]],
|
||||
["M48x4-ext", [4, 21.3210, 43.1260, [[0, -1.7456], [0, 1.7456], [2.5315, 0.2841], [2.5315, -0.2841]]]],
|
||||
["M48x4-int", [4, -24.4460, 48.4460, [[0, 1.9620], [0, -1.9620], [2.4610, -0.5412], [2.4610, 0.5412]]]],
|
||||
["M48x3-ext", [3, 21.9715, 44.3235, [[0, -1.3135], [0, 1.3135], [1.9110, 0.2102], [1.9110, -0.2102]]]],
|
||||
@@ -422,7 +484,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M50x1.5-ext", [1.5, 23.9550, 48.1270, [[0, -0.6637], [0, 0.6637], [0.9700, 0.1036], [0.9700, -0.1036]]]],
|
||||
["M50x1.5-int", [1.5, -25.2025, 50.2140, [[0, 0.7425], [0, -0.7425], [0.9395, -0.2001], [0.9395, 0.2001]]]],
|
||||
["M52-ext", [5, 22.6825, 45.9405, [[0, -2.1738], [0, 2.1738], [3.1500, 0.3551], [3.1500, -0.3551]]]],
|
||||
["M52x5-ext", [5, 22.6825, 45.9405, [[0, -2.1738], [0, 2.1738], [3.1500, 0.3551], [3.1500, -0.3551]]]],
|
||||
["M52-int", [5, -26.5185, 52.5185, [[0, 2.4415], [0, -2.4415], [3.0475, -0.6820], [3.0475, 0.6820]]]],
|
||||
["M52x5-int", [5, -26.5185, 52.5185, [[0, 2.4415], [0, -2.4415], [3.0475, -0.6820], [3.0475, 0.6820]]]],
|
||||
["M52x4-ext", [4, 23.3210, 47.1260, [[0, -1.7456], [0, 1.7456], [2.5315, 0.2841], [2.5315, -0.2841]]]],
|
||||
["M52x4-int", [4, -26.4460, 52.4460, [[0, 1.9620], [0, -1.9620], [2.4610, -0.5412], [2.4610, 0.5412]]]],
|
||||
["M52x3-ext", [3, 23.9715, 48.3235, [[0, -1.3135], [0, 1.3135], [1.9110, 0.2102], [1.9110, -0.2102]]]],
|
||||
@@ -440,7 +504,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M55x1.5-ext", [1.5, 26.4550, 53.1270, [[0, -0.6637], [0, 0.6637], [0.9700, 0.1036], [0.9700, -0.1036]]]],
|
||||
["M55x1.5-int", [1.5, -27.7025, 55.2140, [[0, 0.7425], [0, -0.7425], [0.9395, -0.2001], [0.9395, 0.2001]]]],
|
||||
["M56-ext", [5.5, 24.3500, 49.3355, [[0, -2.3911], [0, 2.3911], [3.4750, 0.3848], [3.4750, -0.3848]]]],
|
||||
["M56x5.5-ext", [5.5, 24.3500, 49.3355, [[0, -2.3911], [0, 2.3911], [3.4750, 0.3848], [3.4750, -0.3848]]]],
|
||||
["M56-int", [5.5, -28.5745, 56.5745, [[0, 2.6866], [0, -2.6866], [3.3640, -0.7444], [3.3640, 0.7444]]]],
|
||||
["M56x5.5-int", [5.5, -28.5745, 56.5745, [[0, 2.6866], [0, -2.6866], [3.3640, -0.7444], [3.3640, 0.7444]]]],
|
||||
["M56x4-ext", [4, 25.3210, 51.1260, [[0, -1.7456], [0, 1.7456], [2.5315, 0.2841], [2.5315, -0.2841]]]],
|
||||
["M56x4-int", [4, -28.4460, 56.4460, [[0, 1.9620], [0, -1.9620], [2.4610, -0.5412], [2.4610, 0.5412]]]],
|
||||
["M56x3-ext", [3, 25.9715, 52.3235, [[0, -1.3135], [0, 1.3135], [1.9110, 0.2102], [1.9110, -0.2102]]]],
|
||||
@@ -460,7 +526,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M58x1.5-ext", [1.5, 27.9550, 56.1270, [[0, -0.6637], [0, 0.6637], [0.9700, 0.1036], [0.9700, -0.1036]]]],
|
||||
["M58x1.5-int", [1.5, -29.2025, 58.2145, [[0, 0.7425], [0, -0.7425], [0.9395, -0.2001], [0.9395, 0.2001]]]],
|
||||
["M60-ext", [5.5, 26.3500, 53.3355, [[0, -2.3911], [0, 2.3911], [3.4750, 0.3848], [3.4750, -0.3848]]]],
|
||||
["M60x5.5-ext", [5.5, 26.3500, 53.3355, [[0, -2.3911], [0, 2.3911], [3.4750, 0.3848], [3.4750, -0.3848]]]],
|
||||
["M60-int", [5.5, -30.5745, 60.5745, [[0, 2.6866], [0, -2.6866], [3.3640, -0.7444], [3.3640, 0.7444]]]],
|
||||
["M60x5.5-int", [5.5, -30.5745, 60.5745, [[0, 2.6866], [0, -2.6866], [3.3640, -0.7444], [3.3640, 0.7444]]]],
|
||||
["M60x4-ext", [4, 27.3210, 55.1260, [[0, -1.7456], [0, 1.7456], [2.5315, 0.2841], [2.5315, -0.2841]]]],
|
||||
["M60x4-int", [4, -30.4460, 60.4460, [[0, 1.9620], [0, -1.9620], [2.4610, -0.5412], [2.4610, 0.5412]]]],
|
||||
["M60x3-ext", [3, 27.9715, 56.3235, [[0, -1.3135], [0, 1.3135], [1.9110, 0.2102], [1.9110, -0.2102]]]],
|
||||
@@ -482,7 +550,9 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M63x1.5-ext", [1.5, 30.4550, 61.1270, [[0, -0.6637], [0, 0.6637], [0.9700, 0.1036], [0.9700, -0.1036]]]],
|
||||
["M63x1.5-int", [1.5, -31.7025, 63.2145, [[0, 0.7425], [0, -0.7425], [0.9395, -0.2001], [0.9395, 0.2001]]]],
|
||||
["M64-ext", [6, 28.0235, 56.7360, [[0, -2.6065], [0, 2.6065], [3.7865, 0.4204], [3.7865, -0.4204]]]],
|
||||
["M64x6-ext", [6, 28.0235, 56.7360, [[0, -2.6065], [0, 2.6065], [3.7865, 0.4204], [3.7865, -0.4204]]]],
|
||||
["M64-int", [6, -32.6205, 64.6205, [[0, 2.9291], [0, -2.9291], [3.6680, -0.8114], [3.6680, 0.8114]]]],
|
||||
["M64x6-int", [6, -32.6205, 64.6205, [[0, 2.9291], [0, -2.9291], [3.6680, -0.8114], [3.6680, 0.8114]]]],
|
||||
["M64x5.5-ext", [5.5, 28.3500, 57.3355, [[0, -2.3911], [0, 2.3911], [3.4750, 0.3848], [3.4750, -0.3848]]]],
|
||||
["M64x5.5-int", [5.5, -32.5745, 64.5745, [[0, 2.6866], [0, -2.6866], [3.3640, -0.7444], [3.3640, 0.7444]]]],
|
||||
["M64x4-ext", [4, 29.3210, 59.1260, [[0, -1.7456], [0, 1.7456], [2.5315, 0.2841], [2.5315, -0.2841]]]],
|
||||
@@ -1043,6 +1113,8 @@ THREAD_TABLE = [["G1/16-ext", [0.907, 3.1631, 6.3625, [[0, -0.4252], [0, 0.4252]
|
||||
["M590x6-int", [6, -295.6700, 590.6700, [[0, 2.9434], [0, -2.9434], [3.7150, -0.7985], [3.7150, 0.7985]]]],
|
||||
["M600x6-ext", [6, 295.9850, 592.7000, [[0, -2.6201], [0, 2.6201], [3.8150, 0.4175], [3.8150, -0.4175]]]],
|
||||
["M600x6-int", [6, -300.6700, 600.6700, [[0, 2.9434], [0, -2.9434], [3.7150, -0.7985], [3.7150, 0.7985]]]],
|
||||
["PCO-1810-ext", [3.18, 12.055, 24.51, [[0, -1.13], [0, 1.13], [1.66, 0.5258], [1.66, -0.5258]]]],
|
||||
["PCO-1810-int", [3.18, -14.045, 27.69, [[0, 1.0423], [0, -1.0423], [1.38, -0.54], [1.38, 0.54]]]],
|
||||
["PCO-1881-ext", [2.7, 11.52381, 24.2, [[0, -0.987894698], [0, 0.987894698], [2.17619, 0.604173686], [2.17619, -0.195826314]]]],
|
||||
["PCO-1881-int", [2.7, -14.406, 27.66, [[0, 1.212894698], [0, -0.762894698], [1.656, -0.470897218], [1.656, 0.610159990]]]],
|
||||
["UNC-#1-ext", [0.396875, 0.6907, 1.3848, [[0, -0.1488], [0, 0.1488], [0.2148, 0.0248], [0.2148, -0.0248]]]],
|
||||
|
@@ -1,3 +1,5 @@
|
||||
# Designator,Pitch,Rrot,Dsupport,r0,z0,r1,z1,r2,z2,r3,z3
|
||||
PCO-1810-ext,3.18,12.055,24.51,0,-1.13,0,1.13,1.66,0.5258,1.66,-0.5258
|
||||
PCO-1810-int,3.18,-14.045,27.69,0,1.0423,0,-1.0423,1.38,-0.54,1.38,0.54
|
||||
PCO-1881-ext,2.7,11.52381,24.2,0,-0.987894698,0,0.987894698,2.17619,0.604173686,2.17619,-0.195826314
|
||||
PCO-1881-int,2.7,-14.406,27.66,0,1.212894698,0,-0.762894698,1.656,-0.470897218,1.656,0.610159990
|
||||
|
|
@@ -8,6 +8,9 @@ function min(x, y) {
|
||||
}
|
||||
|
||||
function calculateThreadlibSpecs() {
|
||||
# Calculates threadlib specs for UIS threads assuming class 2
|
||||
# threads (class 1 and class 3 threads are not supported)
|
||||
|
||||
Designator = $1;
|
||||
TPI = $2;
|
||||
D = $3;
|
||||
|
@@ -9,6 +9,7 @@ function min(x, y) {
|
||||
|
||||
function calculateThreadlibSpecs() {
|
||||
Designator = $3;
|
||||
DesignatorLong = $2;
|
||||
P = $4;
|
||||
H = P / 2 / tan(phi / 2);
|
||||
DPitchExt = ($8 + $9) / 2;
|
||||
@@ -30,6 +31,34 @@ function calculateThreadlibSpecs() {
|
||||
ZCrestInt = (DCrestInt - DPitchInt + H) / 2 * tan(phi / 2);
|
||||
}
|
||||
|
||||
function printExternalThreadSpecs() {
|
||||
printf P "," # pitch
|
||||
printf "%.4f,", DValleyExt / 2 # Rrot
|
||||
printf "%.4f,", DSupportExt # Dsupport
|
||||
printf 0 "," # r0
|
||||
printf "%.4f,", -ZValleyExt # z0
|
||||
printf 0 "," # r1
|
||||
printf "%.4f,", +ZValleyExt # z1
|
||||
printf "%.4f,", (DCrestExt - DValleyExt) / 2 # r2
|
||||
printf "%.4f,", +ZCrestExt # z2
|
||||
printf "%.4f,", (DCrestExt - DValleyExt) / 2 # r3
|
||||
printf "%.4f\n", -ZCrestExt; # z3
|
||||
}
|
||||
|
||||
function printInternalThreadSpecs() {
|
||||
printf P "," # pitch
|
||||
printf "%.4f,", -DValleyInt / 2 # Rrot
|
||||
printf "%.4f,", DSupportInt # Dsupport
|
||||
printf 0 "," # r0
|
||||
printf "%.4f,", +ZValleyInt # z0
|
||||
printf 0 "," # r1
|
||||
printf "%.4f,", -ZValleyInt # z1
|
||||
printf "%.4f,", -(DCrestInt - DValleyInt) / 2 # r2
|
||||
printf "%.4f,", -ZCrestInt # z2
|
||||
printf "%.4f,", -(DCrestInt - DValleyInt) / 2 # r3
|
||||
printf "%.4f\n", +ZCrestInt; # z3
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
FS = "\t";
|
||||
pi = atan2(0, -1);
|
||||
@@ -41,31 +70,20 @@ BEGIN {
|
||||
calculateThreadlibSpecs();
|
||||
|
||||
# External thread:
|
||||
printf Designator "-ext," # designator
|
||||
printf P "," # pitch
|
||||
printf "%.4f,", DValleyExt / 2 # Rrot
|
||||
printf "%.4f,", DSupportExt # Dsupport
|
||||
printf 0 "," # r0
|
||||
printf "%.4f,", -ZValleyExt # z0
|
||||
printf 0 "," # r1
|
||||
printf "%.4f,", +ZValleyExt # z1
|
||||
printf "%.4f,", (DCrestExt - DValleyExt) / 2 # r2
|
||||
printf "%.4f,", +ZCrestExt # z2
|
||||
printf "%.4f,", (DCrestExt - DValleyExt) / 2 # r3
|
||||
printf "%.4f\n", -ZCrestExt; # z3
|
||||
printf Designator "-ext," # designator such as "M4-ext"
|
||||
printExternalThreadSpecs();
|
||||
|
||||
if (DesignatorLong != Designator) {
|
||||
printf DesignatorLong "-ext," # designator such as "M4x0.7-ext"
|
||||
printExternalThreadSpecs();
|
||||
}
|
||||
|
||||
# Internal thread:
|
||||
printf Designator "-int," # designator
|
||||
printf P "," # pitch
|
||||
printf "%.4f,", -DValleyInt / 2 # Rrot
|
||||
printf "%.4f,", DSupportInt # Dsupport
|
||||
printf 0 "," # r0
|
||||
printf "%.4f,", +ZValleyInt # z0
|
||||
printf 0 "," # r1
|
||||
printf "%.4f,", -ZValleyInt # z1
|
||||
printf "%.4f,", -(DCrestInt - DValleyInt) / 2 # r2
|
||||
printf "%.4f,", -ZCrestInt # z2
|
||||
printf "%.4f,", -(DCrestInt - DValleyInt) / 2 # r3
|
||||
printf "%.4f\n", +ZCrestInt; # z3
|
||||
}
|
||||
printf Designator "-int," # designator such as "M4-int"
|
||||
printInternalThreadSpecs();
|
||||
|
||||
if (DesignatorLong != Designator) {
|
||||
printf DesignatorLong "-int," # designator such as "M4x0.7-int"
|
||||
printInternalThreadSpecs();
|
||||
}
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
The general approach is described in [Creating Thread Specs](./CreatingThreadSpecs.md). We explain the math here. The following figure is of great help to understand what is going on. Black profile: theoretical parting line. The profiles we are going to create are red (internal thread) and blue (external thread). Note that the red and blue profiles are drawn assuming identical pitch diameters for both to clarify the figure. However, in reality external and internal threads do not have the same pitch diameter (see below).
|
||||
|
||||

|
||||

|
||||
|
||||
The relevant translation in done in the function calculateThreadlibSpecs() in BSPP_thread.awk.
|
||||
|
||||
@@ -11,13 +11,11 @@ Steps:
|
||||
- Pitch (P): Taken from table BSPP_thread.csv
|
||||
- Pitch diameter: external threads aim for a somewhat smaller pitch diameter (DPitchExt), internal threads for a larger one (DPitchInt). threadlib aims at the center of the acceptable range given in BSPP_thread.csv. For external thread, we have to choose between class A and class B. We decided for class A.
|
||||
- Major diameter (for external thread, think minor diameter for internal thread) is chosen in the center of the acceptable range given in BSPP_thread.csv => DMaxExt, DMinInt
|
||||
- Support diameter (DSupportExt, DSupportInt): Must be on the right side of the parting line. Otherwise no requirements from the norm. We choose the pitch diameter +/- 2 * 5/12 * H, where H is the full heigt of the fundamental triangle and +/- depends on external / internal thread. This is the middle between intended major / minor diameter and the corner of the fundamental triangle.
|
||||
- Support diameter (DSupportExt, DSupportInt): Must be on the right side of the parting line. Otherwise no requirements from the norm. We choose the pitch diameter +/- 2 * 5/12 * H, where H is the full height of the fundamental triangle and +/- depends on external / internal thread. This is the middle between intended major / minor diameter and the corner of the fundamental triangle.
|
||||
- The valleys of the actual part will be defined by the support (see above). The valleys of the profile are chosen to overlap somewhat with the support => DValleyExt, DValleyInt (these correspond to Rrot).
|
||||
|
||||
|
||||
However, this is not yet what we need. As we do not want the rounding in the profile, we have to adjust the "crest" diameters of the straightened profile accordingly. Again, the criterion is to define create a profile that strictly remains on its own side of the parting line.
|
||||
|
||||

|
||||
However, this is not yet what we need. As we do not want the rounding in the profile, we have to adjust the "crest" diameters of the straightened profile accordingly. Again, the criterion is to create a profile that strictly remains on its own side of the parting line.
|
||||
|
||||

|
||||
|
||||
|
@@ -1,20 +1,19 @@
|
||||
# Creating Thread Specs
|
||||
|
||||
In the following, we explain how a thread spec (i.e., an entry in THREAD_TABLE) is created. First, we will explain the basics of threads and how they are specified in the norms. Then, we will ellaborate on the specifics to translate those into threadlib thread specs.
|
||||
In the following, we explain how a thread spec (i.e., an entry in THREAD_TABLE.scad) is created. First, we will explain the basics of threads and how they are specified in the norms. Then, we will elaborate on how to translate those into threadlib thread specs.
|
||||
|
||||
|
||||
## Thread Basics
|
||||
|
||||
As an example, we use British Standard Pipe parallel (BSPP) thread (see drawing below). The black curve shows the parting line between internal and external thread. In an ideal world, both threads are created according to the parting line. For BSP thread it is based on a fundamental triangle with a 55-degree angle rounded to a radius r.
|
||||
|
||||
To do this, we use British Standard Pipe parallel (BSPP) thread as an example (see drawing below). The bold curve shows the parting line between internal and external thread. In an ideal world, both threads are created according to the parting line. The parting line of BSP thread is based on a fundamental triangle with a 55-degree angle rounded to a radius r.
|
||||
|
||||

|
||||

|
||||
|
||||
BSPP thread drawing. Source: Maryland Metrics.
|
||||
|
||||
Reality is a bit more complicated: If one of the threads deviates only a little in the wrong direction, the threads collide. Therefore, the pitch radius r_pitch (radius where distance between falling and rising edges is exactly P/2) of the external thread has to be reduced a little bit (and vice versa for the internal thread). Also, major and minor radii are adjusted so that the real thread is guaranteed to remain on its own side of the theoretical parting line.
|
||||
Reality is a bit more complicated: If one of the threads deviates only a little in the wrong direction, the threads collide. Therefore, the pitch radius r_pitch (radius where distance between falling and rising edges is exactly P/2) of the external thread has to be reduced a little bit (and vice versa for the internal thread). Also, major- and minor radii are adjusted so that the real thread is guaranteed to remain on its own side of the theoretical parting line.
|
||||
|
||||
Of course, it is not ok to introduce arbitrarily large allowances: The norm (BS EN ISO 228-1: 2003 in this case) gives the necessary constraints. Quoting [Maryland Metrics thread data charts for BSP thread](http://mdmetric.com/tech/thddat7.htm):
|
||||
Of course, it is not ok to introduce arbitrarily large allowances: The norm (BS EN ISO 228-1: 2003 in this case) gives the necessary constraints. Quoting Maryland Metrics thread data charts for BSP thread (which used to be [here](http://mdmetric.com/tech/thddat7.htm)):
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
@@ -108,30 +107,39 @@ Of course, it is not ok to introduce arbitrarily large allowances: The norm (BS
|
||||
|
||||
## Deriving threadlib Specs
|
||||
|
||||
To simplify the thread profile, we want to avoid the rounding and replace it by a trapezoidal edge as shown in here (red: internal, blue external thread):
|
||||
We want to approximate the thread profile by straight-line segments as shown in the sketch in red and blue (internal and external thread, respectively).
|
||||
|
||||

|
||||
|
||||
It is clear that we have to match the pitch as accurately as possible. Therefore, threadlibs P is equal to the pitch in the norm (for G1/16: 0.907 mm).
|
||||
It is clear that we have to match the pitch exactly. Therefore, threadlib's P is equal to the pitch in the norm (for G1/16: 0.907 mm).
|
||||
|
||||
Then, we choose the pitch diameter to be in the center of the given tolerance range. For G1/16 this is (7.723 + 0.107/2) mm.
|
||||
|
||||
To explain the choice of r_major and r_minor for both external and internal threads simultaneously, we use the terms r_crest and r_valley. r_crest is the major/minor radius (external/internal) and r_valley is the minor/major radius (external/internal). The norm does not give limits for r_valley. But threadlib requires that the threadprofile covers *less* than 1 pitch of thread. Therefore, we arbitrarily choose a small but finite width of "valley floor" that leaves ample clearance to the parting line. For r_crest, we to take into account
|
||||
To explain the choice of r_major and r_minor for both external and internal threads simultaneously, we use the terms r_crest and r_valley. r_crest is the major/minor radius (external/internal) and r_valley is the minor/major radius (external/internal). The norm does not give limits for r_valley. But threadlib requires that the thread profile covers *less* than 1 pitch of thread. Therefore, we arbitrarily choose a small but finite width of "valley floor" that leaves ample clearance to the parting line. For r_crest, we to take into account
|
||||
|
||||
a) the allowed deviations given in the norm
|
||||
b) the rounding (that we want to leave away)
|
||||
1) the allowed deviations given in the norm
|
||||
2) the rounding
|
||||
|
||||
The former is simple: We aim for the center. The latter requires a little math: We want our piecewise linear profile to remain on one side of the (true) BSP profile. Therefore, our crest radius has to be equal to the radius where the straight rising edge of the BSP profile touches the circle of the rounding.
|
||||
The former is simple: We aim for the center. The latter requires a little math: We want our piecewise linear profile to remain on one side of the (true) BSP profile. Therefore, our crest radius has to be equal to the radius where the straight rising edge of the BSP profile touches the circle of the rounding (see sketch at the top of this page).
|
||||
|
||||
|
||||
## Adding Specs to threadlib
|
||||
|
||||
To get the threads into threadlib, we currently do the following:
|
||||
To get the threads into threadlib, we do the following:
|
||||
|
||||
- Add csv-file with original thread specs in design (e.g., "newthreads.csv")
|
||||
- Write an awk script (e.g., design/newthreads.awk) that translates this .csv file to tabular threadlib specs
|
||||
- Modify Makefile: Add a line like "cat design/newthreads.csv | awk -f design/newthreads.awk >> design/THREAD_TABLE.csv")
|
||||
- design/autogenerate.awk will translate the resulting THREAD_TABLE.csv into the final THREAD_TABLE.scad (same as the .csv but with added quoting and bracketing).
|
||||
- Tabulate specs as given in norm => design/newthreads.csv
|
||||
- Write design/newthreads.awk => translates design/newthreads.csv to tabular threadlib specs (see next step).
|
||||
- Add instructions to Makefile:
|
||||
`cat design/newthreads.csv | awk -f design/newthreads.awk >> design/THREAD_TABLE.csv` Now, `make` will automatically run the script.
|
||||
- design/autogenerate.awk will translate the resulting THREAD_TABLE.csv into the final THREAD_TABLE.scad (same as the .csv but with added quoting and bracketing). This script is already there, you should not need to modify it.
|
||||
|
||||
Furthermore, we should extend tests/test_table.awk to test our newly created threads. The very minimum is to add a test for the thread angles. Perform the tests by running 'make test' in the top-level directory or 'make' inside the tests subdirectory. If it prints "TESTS SUCCESSFUL" you are probably fine. Note: If you have a thread spec that is not tested at all, the tests will fail, too.
|
||||
The format of THREAD_TABLE.csv is:
|
||||
|
||||
`DESIGNATOR, P, Rrot, Dsup, dr_0, z0, dr_1, z_1, dr_2, z_2, dr_3, z_3`
|
||||
|
||||
The meaning of these values is explained in [Design of Threadlib](DesignOfThreadlib.md).
|
||||
|
||||
|
||||
## Adding Tests
|
||||
|
||||
Furthermore, we should extend tests/test_table.awk to test our newly created threads. The very minimum is to add a test for the thread angles. Perform the tests by running `make test` in the top-level directory or `make` inside the tests subdirectory. If it prints "TESTS SUCCESSFUL" you are probably fine. Note: If you have a thread spec that is not tested at all, the tests will fail, too.
|
||||
|
||||
For more information on testing, see [Unit Tests](UnitTests.md).
|
||||
|
@@ -46,7 +46,7 @@ Why do we need P, Rrot, Dsup, *and* profile? Can we not include everything in pr
|
||||
|
||||
*lilo-tapers*: To make the tapers, the profile is scaled-down at the ends. We need to know where the profile is scaled to (center of scaling). We solve this by specifying the radius of rotation for extrusion Rrot explicitly and subtract it from profile (profile holds [dr, z] instead of [r, z]). lilo-tapers are then created by scaling towards dr=0.
|
||||
|
||||
*Overlap 1*: We could include P in profile by requiring that profile extends over exactly one period (i.e., P). However, this would result in a helix where neighbouring periods would exactly touch each other. This leads to rendering artifacts => P is stored seperately and profile is *required* to cover *less* than a period.
|
||||
*Overlap 1*: We could include P in profile by requiring that profile extends over exactly one period (i.e., P). However, this would result in a helix where neighboring periods would exactly touch each other. This leads to rendering artifacts => P is stored separately and profile is *required* to cover *less* than a period.
|
||||
|
||||
*Overlap 2*: But hey! Dsup = 2 * Rrot, no? In principle yes, but in that case thread and bolt would *just* touch => rendering problems. But we could implicitly assume that Rrot is simply 1% smaller than Dsup / 2 for external threads (and 1% larger for internal threads)! Yes, we could. But we decided to make that choice explicit rather than implicit.
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
os = /usr/local/bin/openscad
|
||||
opts =
|
||||
imgs = bolt-M4.png nut-M12x0.5.png nutNbolt.png thread-G1o2-ext.png thread-G1o2-ext-10turns.png flexible.png
|
||||
imgs = bolt-M4.png nut-M12x0.5.png nutNbolt.png thread-G1o2-ext.png thread-G1o2-ext-10turns.png flexible.png tap.png
|
||||
|
||||
.PHONY: all
|
||||
all: $(imgs)
|
||||
@@ -21,7 +21,11 @@ thread-G1o2-ext.png: thread.scad
|
||||
$(os) $(opts) --D 'type="G1/2-ext"' --D 'turns=5' --D 'higbee_arc=20' --camera=-0.7,-0.6,3.4,75,0,110,57 --imgsize=2048,2048 --projection=ortho -o $@ $<
|
||||
|
||||
flexible.png: flexible.scad
|
||||
$(os) $(opts) --D 'type="G1/2-ext"' --D 'turns=5' --D 'higbee_arc=20' --camera=-0.7,-0.6,3.4,75,0,110,57 --imgsize=2048,2048 --projection=ortho -o $@ $<$
|
||||
$(os) $(opts) --D 'type="G1/2-ext"' --D 'turns=5' --D 'higbee_arc=20' --camera=-0.7,-0.6,3.4,75,0,110,57 --imgsize=2048,2048 --projection=ortho -o $@ $<
|
||||
|
||||
tap.png: tap.scad
|
||||
$(os) $(opts) --D 'type="G1/2"' --D 'turns=5' --D 'higbee_arc=20' --camera=7,15.3,3.45,87,0,333,65 --imgsize=2048,2048 --projection=ortho -o $@ $<
|
||||
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# Metric Thread
|
||||
|
||||

|
||||

|
||||
|
||||
metric_thread.csv provides the numbers given in the norm (no thinking done there, just copying). metric_thread.awk - as usual - calculates the threadlib specs.
|
||||
|
||||
|
@@ -5,9 +5,11 @@ We use unit tests as a means of quality assurance for threadlib.
|
||||
|
||||
## THREAD_TABLE.scad
|
||||
|
||||
The thread table is tested using an awk script. See [The GNU Awk User's Guide](https://www.gnu.org/software/gawk/manual/gawk.html) for (more than) an introduction to awk. Note that development of threadlib is based not on GNU awk but on MacOSs version of awk, which is mostly - but not completely - compatible.
|
||||
The thread table is tested using an awk script. See [The GNU Awk User's Guide](https://www.gnu.org/software/gawk/manual/gawk.html) for (more than) an introduction to awk. Note that development of threadlib is based not on GNU awk but on MacOS's version of awk, which is mostly - but not completely - compatible.
|
||||
|
||||
Every line of THREAD_TABLE.scad is fed to [tests/test_table.awk](../tests/test_table.awk). test_table.awk then runs appropriate tests for every line. Which tests are appropriate are determined by looking at the thread designator. For example:
|
||||
Every line of THREAD_TABLE.scad is fed to [tests/test_table.awk](../tests/test_table.awk). test_table.awk then runs appropriate tests for every line. Which tests are appropriate is determined by looking at the thread designator.
|
||||
|
||||
Example:
|
||||
|
||||
/"[^,]+-ext/ {
|
||||
# external threads have positive Rrot
|
||||
@@ -16,14 +18,14 @@ Every line of THREAD_TABLE.scad is fed to [tests/test_table.awk](../tests/test_t
|
||||
print designator " FAIL: negative radius of rotation";
|
||||
PASS = 0;
|
||||
}
|
||||
# test overlapp between thread and support
|
||||
# test overlap between thread and support
|
||||
if (Rrot > Dsupport / 2) {
|
||||
print designator " FAIL: Rsupport < Rrot";
|
||||
PASS = 0;
|
||||
}
|
||||
}
|
||||
|
||||
The pattern /"[^,]+-ext/ means: Run this code for every line that contains double quotes followed by a non-zero (+) number of non-comma characters ([^,]) followed by the string "-ext". I.e, the code is run for every external thread. The code (everything between {}) tests the following assumptions: 1. every external thread must have positive Rrot 2. there must be some overlap between thread and support (i.e. Rrot > Dsupport / 2).
|
||||
The pattern `/"[^,]+-ext/` means: Run this code for every line that contains double quotes followed by a non-zero (`+`) number of non-comma characters (`[^,]`) followed by the string "-ext". I.e, the code is run for every external thread. The code (everything between `{}`) tests the following assumptions: 1. every external thread must have positive Rrot 2. there must be some overlap between thread and support (i.e. Rrot > Dsupport / 2).
|
||||
|
||||
More specific tests verify, e.g., that the thread angles are correct. Not all threads have the same thread angles, therefore we have to distinguish, e.g., between metric threads (designator "M...") and BSPP threads (designator "G..."). Example:
|
||||
|
||||
@@ -48,10 +50,10 @@ Note that:
|
||||
|
||||
Furthermore, we track whether tests fail. This is done in 2 ways:
|
||||
|
||||
- If a test fails it prints an error to the screen
|
||||
- If a test fails the variable PASS is set to zero
|
||||
- If a test fails, it prints an error to the screen
|
||||
- If a test fails, the variable PASS is set to zero
|
||||
|
||||
At the very end (END {...}), the awk script tests the value of PASS. If all tests were successfull, it still has its initial value of 1 (set in the BEGIN {...} block). Otherwise, it is 0.
|
||||
At the very end (`END {...}`), the awk script tests the value of PASS. If all tests were successful, it still has its initial value of 1 (set in the `BEGIN {...}` block). Otherwise, it is 0.
|
||||
|
||||
Finally, we have assured that every thread is tested. A thread that is not tested at all is considered a FAIL. This is done via two match-all rules: The first initialized the variable 'tested' to 0. The last verifies that it has been set to 1 by one of the test. If it is still zero, this particular thread has not been tested at all.
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 48 KiB |
BIN
docs/imgs/tap-G1o2.png
Normal file
BIN
docs/imgs/tap-G1o2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
3
docs/tap.scad
Normal file
3
docs/tap.scad
Normal file
@@ -0,0 +1,3 @@
|
||||
use <threadlib/threadlib.scad>;
|
||||
|
||||
tap("G1/2", 5);
|
12
tests/taptest.scad
Normal file
12
tests/taptest.scad
Normal file
@@ -0,0 +1,12 @@
|
||||
use <threadlib/threadlib.scad>;
|
||||
|
||||
intersection() {
|
||||
union() {
|
||||
difference() {
|
||||
cylinder(r = 15, h = 20);
|
||||
tap("G1/2", 8);
|
||||
}
|
||||
bolt("G1/2", 8);
|
||||
}
|
||||
cube([20, 20, 20]);
|
||||
}
|
@@ -18,7 +18,7 @@ echo(thread_specs(str(type, "-ext")));
|
||||
intersection() {
|
||||
color("Green")
|
||||
translate([-1000, 0, -1000])
|
||||
cube(2000, 2000, 2000);
|
||||
cube(2000);
|
||||
union() {
|
||||
bolt(type, turns);
|
||||
nut(type, turns, Douter);
|
||||
|
@@ -137,7 +137,37 @@ BEGIN {
|
||||
NR_OF_TESTS += 2;
|
||||
}
|
||||
|
||||
/PCO.+-ext/ {
|
||||
/PCO-1810-ext/ {
|
||||
# PCO-1810 threads have +/-70 deg slopes, horizontal crest / valley
|
||||
parse();
|
||||
m1 = slope(v0, v3) / deg;
|
||||
m2 = slope(v2, v1) / deg;
|
||||
if (m1 > 70 + dphi || m1 < 70 - dphi \
|
||||
|| m2 < -70 - dphi || m2 > -70 + dphi) {
|
||||
print designator " FAIL: " m1 ", " m2 " deg";
|
||||
PASS = 0;
|
||||
}
|
||||
test_horizontal();
|
||||
tested = 1;
|
||||
NR_OF_TESTS += 2;
|
||||
}
|
||||
|
||||
/PCO-1810-int/ {
|
||||
# PCO-1810 threads have +/-70 deg slopes, horizontal crest / valley
|
||||
parse();
|
||||
m1 = slope(v3, v0) / deg;
|
||||
m2 = slope(v1, v2) / deg;
|
||||
if (m1 > -70 + dphi || m1 < -70 - dphi \
|
||||
|| m2 < 70 - dphi || m2 > 70 + dphi) {
|
||||
print designator " FAIL: " m1 ", " m2 " deg";
|
||||
PASS = 0;
|
||||
}
|
||||
test_horizontal();
|
||||
tested = 1;
|
||||
NR_OF_TESTS += 2;
|
||||
}
|
||||
|
||||
/PCO-1881-ext/ {
|
||||
# PCO-1881 threads have slopes of -80 deg (on the load side) and 70 deg
|
||||
# (on the other side) + horizontal crest / valley
|
||||
parse();
|
||||
@@ -153,7 +183,7 @@ BEGIN {
|
||||
NR_OF_TESTS += 2;
|
||||
}
|
||||
|
||||
/PCO.+-int/ {
|
||||
/PCO-1881-int/ {
|
||||
# PCO-1881 threads have slopes of 80 deg (on the load side) and -70 deg
|
||||
# (on the other side) + horizontal crest / valley
|
||||
parse();
|
||||
|
@@ -4,7 +4,7 @@ threadlib
|
||||
|
||||
Create threads easily.
|
||||
|
||||
:Author: Adrian Schlatter
|
||||
:Author: Adrian Schlatter and contributors
|
||||
:Date: 2019-11-11
|
||||
:License: 3-Clause BSD. See LICENSE.
|
||||
*/
|
||||
@@ -17,9 +17,12 @@ include <THREAD_TABLE.scad>
|
||||
function thread_specs(designator, table=THREAD_TABLE) =
|
||||
/* Returns thread specs of thread-type 'designator' as a vector of
|
||||
[pitch, Rrotation, Dsupport, section_profile] */
|
||||
|
||||
table[search([designator], table, num_returns_per_match=1,
|
||||
index_col_num=0)[0]][1];
|
||||
|
||||
// first lookup designator in table inside a let() statement:
|
||||
let (specs = table[search([designator], table, num_returns_per_match=1,
|
||||
index_col_num=0)[0]][1])
|
||||
// verify that we found something and return it:
|
||||
assert(!is_undef(specs), str("Designator: '", designator, "' not found")) specs;
|
||||
|
||||
module thread(designator, turns, higbee_arc=20, fn=120, table=THREAD_TABLE)
|
||||
{
|
||||
@@ -30,6 +33,7 @@ module thread(designator, turns, higbee_arc=20, fn=120, table=THREAD_TABLE)
|
||||
higbee_arc=higbee_arc,
|
||||
r=Rrotation,
|
||||
turns=turns,
|
||||
fn=fn,
|
||||
pitch=P);
|
||||
}
|
||||
|
||||
@@ -59,3 +63,17 @@ module nut(designator, turns, Douter, higbee_arc=20, fn=120, table=THREAD_TABLE)
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
module tap(designator, turns, higbee_arc=20, fn=120, table=THREAD_TABLE) {
|
||||
difference() {
|
||||
specs = thread_specs(str(designator, "-int"), table=table);
|
||||
P = specs[0]; Dsupport = specs[2];
|
||||
H = (turns + 1) * P;
|
||||
|
||||
translate([0, 0, -P / 2]) {
|
||||
cylinder(h=H, d=Dsupport, $fn=fn);
|
||||
};
|
||||
|
||||
thread(str(designator, "-int"), turns=turns, higbee_arc=higbee_arc, fn=fn, table=table);
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user