mirror of
https://github.com/adrianschlatter/threadlib.git
synced 2025-01-16 12:49:40 +01:00
Adrian Schlatter
827723d1b1
Eliminate threads.xlsx
Replaces threads.xlsx by one .csv file and one awk script per thread type. The script calculates threadlib specs from the data in the .csv file. Finally and as before, autogenerate.awk generates the OpenSCAD code (i.e. THREAD_TABLE.scad). A new Makefile automates this process: make does what is needed. It also provides a target 'test' to run the (existing) tests. To add a new thread type: - provide newthread.csv - provide newthread.awk - modify Makefile to generate your new threads - add appropriate tests Additionally: - fixed bug in Rrot when DRmax is too large. - reduced number of significant figures to a resolution of 0.1 um (while not extremely generous for the very finest threads, it should be enough by far for any 3D-prints). - increased test limit for thread angle deviations (necessary due to reduced number of significant figures) - added test counter: 'make test' now prints number of tests run + number of threads tested. - For unknown reasons (MacOS awk?) final match-all rule in test_table.awk does not match with double-quotes. Work-around: Match without double-quotes.
.. image:: docs/imgs/logo.png :alt: bolt-in-nut logo threadlib is a library of standard threads for `OpenSCAD <https://www.openscad.org>`__. It is based on Helges excellent `threadprofile.scad <https://github.com/MisterHW/IoP-satellite/tree/master/OpenSCAD%20bottle%20threads>`__ to create nice threads with lead-in / lead-out tapers. Check out his `article on generating nice threads <https://hackaday.io/page/5252-generating-nice-threads-in-openscad>`__ on Hackaday. In contrast to other thread libraries such as `openscad-threads <http://dkprojects.net/openscad-threads/>`__, `yet another thread library <https://www.thingiverse.com/thing:2277141>`__, `threads for screws and nuts V1 <https://www.thingiverse.com/thing:3131126>`__, and `threading.scad <https://www.thingiverse.com/thing:1659079>`__, threadlib does not make you look up diameters and pitches and maybe even thread-profiles in tables and norms: It has these tables built in. Creating a thread is as simple as .. code-block:: OpenSCAD use <threadlib/threadlib.scad> thread("G1/2-ext", turns=10); .. image:: docs/imgs/thread-G1o2-ext-10turns.png :alt: bolt-in-nut logo to create a British Standard Pipe parallel external thread. Why you may want to use threadlib ================================== - really easy to use - creates nice threads - configurable higbee arc - creates working threads (clearances are left for production tolerances) - flexible: - choose the $fn you need to fit the rest of your design - let threadlib tell you the thread specs so you can do with them what *you* want - extensible: Add your own threads - tried and tested in the real world: Um no, not yet. But with your help, it will soon be. Installation =========================== Prerequisits: - `scad-utils <https://github.com/openscad/scad-utils>`__ - `list-comprehension <https://github.com/openscad/list-comprehension-demos>`__ - `threadprofile.scad <https://github.com/MisterHW/IoP-satellite/blob/master/OpenSCAD%20bottle%20threads/thread_profile.scad>`__ Save all of these into your OpenSCAD `library folder <https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries>`__ threadlib: Clone threadlib into the folder 'threadlib' inside your OpenSCAD library folder Usage =========================== To create a bolt (without head) with 5 turns of M4 thread: .. code-block:: OpenSCAD bolt("M4", turns=5, higbee_arc=30); .. image:: docs/imgs/bolt-M4.png :alt: Bolt with M4 thread See these nice lead-in / lead-out tapers? Try a nut (this time using the default argument for higbee_arc): .. code-block:: OpenSCAD nut("M12x0.5", turns=10, Douter=16); .. image:: docs/imgs/nut-M12x0.5.png :alt: M12x0.5 nut 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). If you only need the threads alone: .. code-block:: OpenSCAD thread("G1/2-ext", turns=5); .. 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): .. code-block:: OpenSCAD specs = thread_specs("G2 1/2-ext"); P = specs[0]; Rrot = specs[1]; Dsupport = specs[2]; section_profile = specs[3]; H = (5 + 1) * P; translate([0, 0, -P / 2]) cylinder(h=H, d=Dsupport, $fn=120); .. image:: docs/imgs/flexible.png :alt: G1/2 bolt Here, we have used the function thread_specs(...) to look up the threads specifications - including the recommended diameter of the support structure. 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) Extensibility =========================== Don't find some of the threads you need for your project? Don't worry: You can add your own: .. code-block:: OpenSCAD use <threadlib/threadlib.scad> MY_THREAD_TABLE = [ ["special", [pitch, Rrot, Dsupport, [[r0, z0], [r1, z1], ..., [rn, zn]]]] ]; thread("special", turns=15, table=MY_THREAD_TABLE); 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! Change Log =========================== - 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>`__ - 0.1: Initial release supporting `BSP parallel thread <https://www.amesweb.info/Screws/British-Standard-Pipe-Parallel-Thread-BSPP.aspx>`__
Languages
OpenSCAD
94.3%
Awk
5.3%
Makefile
0.4%