$fs = 1; $fa = $fs; use <WebWeaver/scad/Piping.scad>; /* module pipe(outer=true) { rotate([-90, 0, 0]) cornerPipe(10, 30, 10, 180, 5, 1.6, center=true, outer=outer); } pipe(); difference() { for (tx=[-12, 12]) translate([tx, 0, -15]) cylinder(d=5, h=15); pipe(false); } */ r = 5; w = 30; h = 10; _str = 1.6; ml = 20; // mouth-piece d0 = 10; translate([-d0 -h, 0, 0]) rotate([90, 90, 0]) cornerPipe(h, w, d0, 90, r, _str, center=true); _wh = 10; l0 = 50; translate([-l0 -d0 -h -d0/2, 0, -d0]) rotate([0, 90, 0]) helixPipe(w, h, l0, 50, 270, _wh/2, _str); rotate([90, 0, 0]) cornerPipe(h, w, d0, 180, r, _str, center=true); translate([d0 + h, 0, 0]) rotate([-90, 0, 0]) cornerPipe(h, w, d0, 180, r, _str, center=true); translate([d0+h + d0+h, 0, 0]) rotate([90, -90, 0]) cornerPipe(h, w, d0, 90, r, _str, center=true); wh = 15; translate([d0+h + d0+h, 0, d0]) { rotate([90, 0, 90]) adapterPipe(w, h, r, _str, wh, wh, wh/2, _str, ml); translate([ml, 0, 0]) rotate([0, 90, 0]) straightPipe(wh, wh, 10, wh/2, _str); } translate([d0*2, 0, -d0 -h -d0/2]) rotate([0, 0, 90]) straightPipe(23, h, 10, r, 1); translate([d0*6.5, 0, -d0 -h -d0/2]) rotate([0, 0, 90]) straightPipe(5, 5, 28, 5/2, 1); for (tx=[-67, -60+25]) translate([tx, 0, -d0 -h -d0/2]) cylinder(d=10, h=1);