diff --git a/threadlib/LICENSE b/LICENSE similarity index 100% rename from threadlib/LICENSE rename to LICENSE diff --git a/README.rst b/README.rst index c16ad85..db45af3 100644 --- a/README.rst +++ b/README.rst @@ -1,14 +1,81 @@ -PET-Bottle Waterrocket Fins +threadlib +++++++++++++++++++++++++++ -This is a CAD-model of fins intended to be screwed onto a PET bottle to create a -water rocket. To create the rocket, you need: +threadlib is a library of standard threads for OpenSCAD. -- bottle with PCO-1881 threading (e.g. a 1.5-l Coke bottle) -- this part -- Gardena tap connector G 1" -- launcher +In contrast to other thread libraries, it does not make you look up diameters +and pitches and maybe even thread-profiles in tables and norms: It has these +tables built in. -(+ water + pressurized air). +Creating a thread is as simple as + +.. code-block:: OpenSCAD + + thread("G1/2-ext", turns=10, higbee_arc=20); + +to create a British Standard Pipe parallel external thread. Furthermore, +threadlib allows for production tolerances by choosing thread dimensions well +inside the ranges allowed by the norms. + + +Usage +=========================== + +To create a bolt (without head) with 10 turns of G1-inch thread: + +.. code-block:: OpenSCAD + + bolt("G1", turns=10); + +A nut: + +.. code-block:: OpenSCAD + + nut("G1", turns=10, Douter=40); + +Note that for a nut you also have to specify an outer diameter. The inner +diameter is implicitly given by the thread designator ("G1" in this case). + +If you only need the threads alone: + +.. code-block:: OpenSCAD + + thread("G2 1/2-ext", turns=5); + +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); + +Here, we have used the function thread_specs(...) to look up the threads +specifications - including the recommended diameter of the support structure. + + +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 + + 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! -Use at your own risk. diff --git a/threadlib/THREAD_TABLE.scad b/THREAD_TABLE.scad similarity index 100% rename from threadlib/THREAD_TABLE.scad rename to THREAD_TABLE.scad diff --git a/threadlib/autogenerate.awk b/autogenerate.awk similarity index 100% rename from threadlib/autogenerate.awk rename to autogenerate.awk diff --git a/gardena.scad b/gardena.scad deleted file mode 100644 index 40cb0ed..0000000 --- a/gardena.scad +++ /dev/null @@ -1,108 +0,0 @@ -/* -Gardena Tap Connectors -++++++++++++++++++++++ - -Units in this file: Millimeter. - -*/ - -use - -// Generic - -module gasket (r0=8, r1=12.5, d=3) { - /* - Flat ring gasket - ++++++++++++++++ - - r0: Hole diameter - r1: Outer diameter - d: Thickness - */ - - color("DarkSlateGray") - difference() { - cylinder(h=d, r=r1); - translate([0, 0, -d]) - cylinder(h=3*d, r=r0); - } -}; - -module nozzle (radii=[16.8, 7, 10, 4.5, 8.5], zs=[-12, -14, -18, -18, -24, -22, -38], - dthread=26.441, pthread=25.4/14) -{ - /* - Gardena nozzle - +++++++++++++ - - radii: List of 5 radii - zs: List of 7 z - dthread: Thread diameter - pthread: Thread pitch - */ - - translate([0, 0, -zs[0]]) - difference() { - color("Gray") - union() { - translate([0, 0, zs[1]]) - cylinder(h=-zs[1], r=radii[0]); - translate([0, 0, zs[3]]) - cylinder(h=zs[1]-zs[3], r=radii[2]); - translate([0, 0, zs[5]]) - cylinder(h=zs[3]-zs[5], r1=radii[4], r2=radii[2]); - translate([0, 0, zs[6]]) - cylinder(h=zs[5]-zs[6], r=radii[4]); - }; - - color("Gray") - translate([0, 0, zs[0]]) - metric_thread(dthread, pthread, - -2*zs[0], angle=27.5, internal=true); - - color("Navy") - union() { - translate([0, 0, zs[2]]) - cylinder(h=-zs[2], r=radii[1]); - - translate([0, 0, zs[2]]) - cylinder(h=zs[2]-zs[3]+0.001, r=radii[1]); - - translate([0, 0, zs[4]]) - cylinder(h=zs[2]-zs[4]+0.002, r1=radii[3], r2=radii[1]); - - translate([0, 0, zs[6]-0.002]) - cylinder(h=-zs[6], r=radii[3]); - }; - }; -}; - - -// Special - -module gasket_gardena_G3o4() { - gasket(); -}; - -module gasket_gardena_G1() { - gasket(r0=20/2, r1=31.5/2, d=3); -}; - -module nozzle_gardena_G3o4 () { - nozzle(); -}; - -module nozzle_gardena_G1 () { - nozzle(radii=[19.6, 7, 10, 4.5, 8.5], zs=[-12, -14, -18, -18, -24, -22, -38], - dthread=33.249, pthread=25.4/11); -}; - -intersection() { - translate([-50, 0, -50]) - color("Green") - cube(100, 100, 100); - union() { - gasket_gardena_G1(); - nozzle_gardena_G1(); - }; -}; diff --git a/threadlib/img/BSPthread.jpg b/img/BSPthread.jpg similarity index 100% rename from threadlib/img/BSPthread.jpg rename to img/BSPthread.jpg diff --git a/pco-1881.scad b/pco-1881.scad deleted file mode 100644 index 94ab4c1..0000000 --- a/pco-1881.scad +++ /dev/null @@ -1,58 +0,0 @@ -/* -PCO-1881 Bottle Neck - -Based on http://imajeenyus.com/mechanical/20120508_bottle_top_threads/28mm-ISBT-PCO-1881-Finish-3784253-17.pdf - -*/ - -use // https://github.com/MisterHW/IoP-satellite - -module pco1881 () { - // The PCO-1881 bottle neck (approximately) as described in the spec - union() { - difference() { - union() { - cylinder(h=20, r=24.20/2); - cylinder(h=1.7, r=25.07/2); - translate([0, 0, 9]) - cylinder(h=11.2-0.6-9, r1=24.2/2, r2=28.0/2); - translate([0, 0, 11.2-0.6]) - cylinder(h=0.6, r=28.0/2); - translate([0, 0, 11.2]) - cylinder(h=20-11.2, r=25.71/2); - translate([0, 0, 14.88]) - cylinder(h=1, r1=33.0/2-3.732, r2=33.0/2); - translate([0, 0, 14.88+1]) - cylinder(h=17-14.88-1, r=33.00/2); - translate([0, 0, 17]) - cylinder(h=3, r=26.19/2); - }; - - translate([0, 0, 13.94]) - rotate_extrude() - translate([12.25+1.08, 0, 0]) - circle(1.08, $fn=50); - color("Navy") - translate([0, 0, -0.004]) - cylinder(h=20.008, r1=21.74/2, r2=10.870); - }; - translate([0, 0, (1.70 + 1.92) / 2]) - straight_thread( - section_profile = bottle_pco1881_neck_thread_profile(), - higbee_arc = 10, - r = bottle_pco1881_neck_thread_dia() / 2, - turns = 650 / 360, - pitch = bottle_pco1881_neck_thread_pitch(), - fn = 60 - ); - }; -}; - -*intersection() { - color("Green") - translate([-50, 0, -50]) - cube(100, 100, 100); - pco1881(); -} - -*pco1881(); \ No newline at end of file diff --git a/threadlib/test.scad b/test.scad similarity index 100% rename from threadlib/test.scad rename to test.scad diff --git a/threadlib/threadlib.scad b/threadlib.scad similarity index 100% rename from threadlib/threadlib.scad rename to threadlib.scad diff --git a/threadlib/README.rst b/threadlib/README.rst deleted file mode 100644 index e68c5ae..0000000 --- a/threadlib/README.rst +++ /dev/null @@ -1,81 +0,0 @@ -threadlib -+++++++++++++++++++++++++++ - -threadlib is a library of standard threads for OpenSCAD. - -In contrast to other thread libraries, it 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 - - thread("G1/2-ext", turns=10, higbee_arc=20); - -to create a British Standard Pipe parallel external thread. Furthermore, -threadlib allows for production tolerances by choosing thread dimensions well -inside the ranges allowed by the norms. - - -Usage -=========================== - -To create a bolt (without head) with 10 turns of G1-inch thread: - -.. code-block:: OpenSCAD - - bolt("G1", turns=10); - -A nut: - -.. code-block:: OpenSCAD - - nut("G1", turns=10, Douter=40); - -Note that for a nut you also have to specify an outer diameter. The inner -diameter is implicitly given by the thread designator ("G1" in this case). - -If you only need the threads alone: - -.. code-block:: OpenSCAD - - thread("G2 1/2-ext", turns=5); - -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); - -Here, we have used the function thread_specs(...) to look up the threads -specifications - including the recommended diameter of the support structure. - - -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 - - 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! - diff --git a/threadlib/threads.xlsx b/threads.xlsx similarity index 100% rename from threadlib/threads.xlsx rename to threads.xlsx