Neale Pickett
·
2026-04-05
blowpipe.scad
1include <BOSL2/std.scad>
2include <BOSL2/threading.scad>
3
4$fn = 180;
5$slop = 0.2;
6
7module top() {
8 id = 12;
9 diff() tube(h=45, od=5/8*INCH, id=id, anchor=BOTTOM) {
10 // Cross through the inside
11 for (spin = [0, 90]) {
12 attach(BOTTOM, BOTTOM, spin=spin, inside=true) tag("") cuboid([1.6, 13, 45]);
13 }
14
15 // Fat base
16 attach(BOTTOM, BOTTOM, inside=true) tag("") tube(h=15, od=25, id=id+2, $fn=12);
17
18 // Screw threads, and nubbin in the middle for attaching the diaphragm
19 attach(BOTTOM, BOTTOM, inside=true) {
20 threaded_rod(d=20, height=9, pitch=2, internal=true) {
21 // This is the height of the nubbin and the depth of the diaphragm chamber
22 attach(TOP, BOTTOM) tube(h=4, od=20, id=2);
23 }
24 }
25
26 // Cutout for securing the tubing
27 tag("remove") up(7) tube(h=15, id=5/8*INCH-1, wall=2, chamfer=1);
28 }
29}
30
31module bottom() {
32 diff() cyl(h=45, d=5/8*INCH, anchor=BOTTOM) {
33 hole_d = 4.2;
34 tag("remove") cyl(h=50, d=hole_d);
35 for (spin = [0 : 360/6: 360]) {
36 tag("remove") zrot(spin) right(5) cyl(h=50, d=hole_d);
37 }
38
39 // Screw threads
40 attach(BOTTOM, BOTTOM, inside=true) {
41 tag("") threaded_rod(d=20, height=10, pitch=2) {
42 // Fat base
43 attach(TOP, BOTTOM) cyl(h=5, d=25, $fn=12);
44 }
45 }
46 }
47}
48
49top();
50//up(10) zflip() bottom();
51right(30) bottom();