mirror of
https://github.com/adrianschlatter/threadlib.git
synced 2025-08-04 18:07:51 +02:00
threadlib emancipation
+++++++++++++++++++++++ threadlib is now its own project => remove Waterrocket Fins from this repo.
This commit is contained in:
85
README.rst
85
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
|
threadlib is a library of standard threads for OpenSCAD.
|
||||||
water rocket. To create the rocket, you need:
|
|
||||||
|
|
||||||
- bottle with PCO-1881 threading (e.g. a 1.5-l Coke bottle)
|
In contrast to other thread libraries, it does not make you look up diameters
|
||||||
- this part
|
and pitches and maybe even thread-profiles in tables and norms: It has these
|
||||||
- Gardena tap connector G 1"
|
tables built in.
|
||||||
- launcher
|
|
||||||
|
|
||||||
(+ 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.
|
|
||||||
|
108
gardena.scad
108
gardena.scad
@@ -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();
|
|
||||||
};
|
|
||||||
};
|
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
@@ -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();
|
|
@@ -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!
|
|
||||||
|
|
Reference in New Issue
Block a user