]> www.fi.muni.cz Git - things.git/blob - wing-tube-support.scad
d07bd1ee7bfac3892e54b0b879af0c981019e957
[things.git] / wing-tube-support.scad
1 eps = 0.01;
2 infty = 200;
3
4 wall = 1.5;
5 thin_wall = 0.6;
6
7 tube_d = 10;
8 tube_zoff = thin_wall + 3;
9
10 base_w = 60;
11 base_l = 45;
12
13 /*
14 module body() {
15         hull() {
16 //              translate([-fuse_tube_d/2-wall, -fuse_tube_l/2, 0])
17 //                      cube([fuse_tube_d + 2*wall, fuse_tube_l, fuse_tube_d + 2*wall]);
18                 translate([0, fuse_tube_l/2, fuse_tube_d/2+wall])
19                 rotate([90, 0, 0])
20                         cylinder(r = fuse_tube_d/2+wall, h = fuse_tube_l);
21                 translate([-fuse_tube_d/2-wall, -base_l/2+wall/2, 0])
22                         cube([fuse_tube_d + 2*wall, base_l-wall, thin_wall]);
23         }
24 }
25
26 module holder() {
27         difference() {
28                 body();
29                 translate([0, infty/2, fuse_tube_d/2+wall])
30                 rotate([90, 0, 0])
31                         cylinder(r = fuse_tube_d/2, h = infty + 2*eps);
32                 translate([-slot_w/2, -infty/2, fuse_tube_d/2+wall])
33                         cube([slot_w, infty, fuse_tube_d/2+wall+eps]);
34         }
35 }
36 */
37
38 module body() {
39         // base
40         // scale([1, base_l/base_w, 1])
41         // cylinder(r = base_w/2, h = thin_wall);
42         translate([-base_w/2, -base_l/2, 0]) cube([base_w, base_l, thin_wall]);
43
44         // side supports
45         for (y = [-1,1]) 
46         for (x = [-1,1])
47         scale([x, y, 1])  hull() {
48                 translate([base_w/2-thin_wall, -base_l/2, 0])
49                         cube([thin_wall, thin_wall, thin_wall]);
50                 translate([-thin_wall/2, -base_l/2, 0])
51                         cube([thin_wall, thin_wall, tube_zoff + tube_d-thin_wall]);
52         }
53
54         // diagonal supports
55         for (y = [-1,1]) 
56         for (x = [-1,1])
57         scale([x, y, 1])  hull() {
58                 translate([base_w/2-thin_wall, base_l/3, 0])
59                         cube([thin_wall, thin_wall, thin_wall]);
60                 translate([-thin_wall/2, -base_l/2, 0])
61                         cube([thin_wall, thin_wall, tube_zoff + tube_d-thin_wall]);
62         }
63
64         // under the tube supports
65         for (y = [-1,1]) 
66         scale([1, y, 1])  hull() {
67                 translate([thin_wall/2, -base_l/4, 0])
68                         cube([thin_wall, thin_wall, thin_wall]);
69                 translate([-thin_wall/2, -base_l/2, 0])
70                         cube([thin_wall, thin_wall, tube_zoff + 2*tube_d/3]);
71         }
72
73         // side bottom tube supports
74         for (y = [-1,1]) 
75         for (x = [-1,1])
76         scale([x, y, 1])  hull() {
77                 translate([tube_d/2, base_l/3, 0])
78                         cube([thin_wall, base_l/6, tube_zoff + tube_d/2]);
79         }
80
81         // upper cylinder clip
82         for (y = [-1,1])
83         scale([1, y, 1])
84         translate([0, base_l/3, tube_d/2 + tube_zoff])
85         intersection() {
86                 rotate([-90, 0, 0])
87                         cylinder(r = tube_d/2 + thin_wall, h = base_l/6);
88                 translate([-tube_d/2-thin_wall, 0, 0])
89                         cube([tube_d + 2*thin_wall, base_l/6, tube_d/3]);
90         }
91 }
92
93 difference() {
94         body();
95         // main tube
96         translate([0, -base_l/2-eps, tube_d/2+tube_zoff])
97         rotate([-90, 0, 0])
98                 cylinder(r = tube_d/2, h = base_l + 2*eps);
99 }