]> www.fi.muni.cz Git - things.git/blob - tube-firewall.scad
switch holder.scad
[things.git] / tube-firewall.scad
1 eps = 0.01;
2 infty = 100;
3
4
5 base_d = 26;
6 screw_d1 = 19;
7 screw_d2 = 16;
8 screw_hole = 3.5;
9 base_wall = 2.0;
10
11 motor_angle = 4;
12
13 tube_d = 8+0.3;
14 tube_h = 20;
15 tube_wall = 1.5;
16 cable_slot_w = 5;
17 cable_slot_h = 3;
18
19 module body() {
20         // base
21         cylinder(r = base_d/2, h = base_wall);
22         // tube
23         intersection() {
24                 rotate([0, motor_angle, 0])
25                         cylinder(r = tube_d/2 + tube_wall, h = tube_h);
26                 translate([-infty/2, -infty/2, 0])
27                         cube(infty);
28         }
29         // tube supports
30         for (angle = [45, 135, 225, 315])
31         rotate([0, 0, angle]) hull() {
32                 translate([-eps/2, -tube_d/2, -eps/2])
33                         cube([eps, tube_d, eps]);
34                 translate([base_d/2, -eps/2, -eps/2])
35                         cube(eps);
36                 translate([tube_d/2, -eps/2, 0.9*tube_h])
37                         cube(eps);
38         }
39 }
40
41 module screw_hole() {
42         translate([0, 0, -eps])
43                 cylinder(r = screw_hole/2, h = base_wall + 2*eps, $fn = 6);
44         translate([0, 0, base_wall/2])
45                 cylinder(r1 = screw_hole/2,
46                         r2 = screw_hole/2 + base_wall/2,
47                         h = base_wall/2+eps, $fn = 6);
48 }
49
50 difference() {
51         body();
52         // screw holes
53         for (x = [-1, 1]) translate([x*screw_d1/2, 0, 0])
54                 screw_hole();
55         for (y = [-1, 1]) translate([0, y*screw_d2/2, 0])
56                 screw_hole();
57         // tube hole
58         rotate([0, motor_angle, 0])
59         translate([0, 0, -infty/2])
60                 cylinder(r = tube_d/2, h = infty);
61         // cable slot
62         rotate([0, 0, -45])
63         translate([-cable_slot_w/2, base_d/2-cable_slot_h, -eps])
64                 cube([cable_slot_w, 2*cable_slot_h, infty]);
65 }
66
67