threadlib emancipation

+++++++++++++++++++++++

threadlib is now its own project => remove Waterrocket Fins from this
repo.
This commit is contained in:
Adrian Schlatter 2019-04-07 21:44:50 +02:00
parent 24147eb7d0
commit 9ee4be088a
11 changed files with 76 additions and 256 deletions

View File

@ -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 <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!
Use at your own risk.

View File

@ -1,108 +0,0 @@
/*
Gardena Tap Connectors
++++++++++++++++++++++
Units in this file: Millimeter.
*/
use <threads.scad>
// 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();
};
};

View File

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 131 KiB

View File

@ -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 <thread_profile.scad> // 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();

View File

@ -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 <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!