8 sponge_l = 55; // original size is 85 + 5;
19 cylinder(r = v_tube_d/2 + clip_w, h = clip_h, $fn = 128);
20 translate([0, 0, -eps])
21 cylinder(r = v_tube_d/2, h = clip_h+2*eps);
24 translate([-infty/2, 0, -eps]) cube(infty);
26 translate([-infty/2, 0, -eps]) cube(infty);
29 // for (angle = [-1.5*72:72:1.5*72]) rotate([0, 0, angle])
30 // translate([v_tube_d/2 + wall, 0, 0])
31 // cylinder(r = wall, h = clip_h);
34 module perf_wall(w, h, d, hx, hy, dx, dy, side) {
36 translate([-w/2, -h/2, -d/2])
38 for (y = [0:1:1 + h/(hy+dy)])
39 for (y1 = [-1,1]) scale([1, y1, 1])
40 for (x1 = [-1,1]) scale([x1, 1, 1]) {
41 for (x = [0:1:1 + w/(hx+dx)]) {
42 translate([x*(hx+dx), y*(hy+dy), -d/2-eps])
44 cylinder(r = hx/2, h = d + 2*eps, $fn = 4);
46 for (x = [0.5:1:1 + w/(hx+dx)]) {
47 translate([x*(hx+dx), (y+0.5)*(hy+dy), -d/2-eps])
49 cylinder(r = hx/2, h = d + 2*eps, $fn = 4);
53 for (x = [-1, 1]) scale ([x, 1, 1])
54 translate([w/2-side, -h/2, -d/2])
56 for (y = [-1, 1]) scale ([1, y, 1])
57 translate([-w/2, h/2-side, -d/2])
62 module round_side(h, w, wall) {
64 scale([1, round_aspect, 1])
65 cylinder(r = w/2 + wall , h = h, $fn = 128);
66 translate([0, 0, -eps])
67 scale([1, (w/2)*round_aspect/(w/2+wall), 1])
68 cylinder(r = w/2, h = h + 2*eps, $fn = 128);
69 translate([-infty/2, -infty, -infty/2]) cube(infty);
74 for (x = [0, sponge_h + wall]) translate([x + wall/2, 0, (sponge_l+wall)/2])
76 perf_wall(h = sponge_w + 2*wall, w = sponge_l + wall, d = wall,
77 hx = 20, hy = 10, dx = 10, dy = 10, side=3);
79 for (y = [-1, 1]) scale ([1, y, 1])
80 translate([sponge_h/2+wall, sponge_w/2+wall/2, 0])
81 round_side(h = sponge_l+wall, w = sponge_h, wall = wall);
83 for (y = [-1, 1]) scale ([1, y, 1])
84 translate([sponge_h/2+wall, sponge_w/2+wall/2, (sponge_l+wall)/2])
86 perf_wall(w = sponge_h + 2*wall, h = sponge_l + wall, d = wall,
87 hy = 20, hx = 10, dx = 10, dy = 10, side=3);
90 for (y = [-sponge_w/4, 0, sponge_w/4])
92 // translate ([0, y, sponge_l])
93 cube([sponge_h + 2*wall, 0.86, 3]);
96 module side_handlers() {
97 for (y=[-1,1]) scale([1, y, 1])
99 translate([0, sponge_w/2-wall, 0])
100 cube([wall, 2*wall, clip_h]);
101 translate([-x_off-v_tube_d/2, 0, 0])
103 translate([v_tube_d/2+clip_w-2*wall, -wall, 0])
104 cube([2*wall, 2*wall, clip_h]);
109 translate([0, -sponge_w/2-wall, 0])
110 cube([wall, 2*wall, clip_h]);
111 translate([-x_off-v_tube_d/2, -v_tube_d/2-clip_w, 0])
112 cube([wall, wall, clip_h]);
118 translate([-v_tube_d/2-x_off, 0, 0])