]> www.fi.muni.cz Git - things.git/blob - firefly-q6-case.scad
firefly q6 case
[things.git] / firefly-q6-case.scad
1 infty = 200;
2 eps = 0.01;
3
4 wall = 1.5;
5
6 body_l = 70 + 0.5;
7 body_w = 33 + 0.5;
8 body_h = 28 + 0.5;
9 corner_r = 8;
10 corner_side_h = 5;
11
12 hook_w = 3.5;
13 hook_l = 6;
14 hook_hole_l = 2;
15 hook_hole_w = 1.5;
16
17 // base plate
18 difference() {
19         hull() {
20                 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
21                         translate([body_l/2 - corner_r,
22                                 body_w/2 - corner_r, 0])
23                         cylinder(r = corner_r + wall, h = wall);
24         }
25         // translate([-body_l/2+corner_r + hook_l, -body_w/2+corner_r, -eps])
26         //      cube([body_l-2*corner_r-2*hook_l, body_w - 2*corner_r, wall +2*eps]);
27         translate([-body_l/2+corner_r, -body_w/2+corner_r, -eps])
28                 cube([body_l-2*corner_r, body_w - 2*corner_r, wall +2*eps]);
29 }
30
31 // raised corner bottom
32 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
33         translate([body_l/2 - corner_r,
34                 body_w/2 - corner_r, wall-eps])
35         difference() {
36                 cylinder(r = corner_r + wall, h = wall+eps);
37                 translate([-infty, -infty/2, -infty/2]) cube(infty);
38                 translate([-infty/2, -infty, -infty/2]) cube(infty);
39         }
40
41
42 // raised corner side
43 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
44         translate([body_l/2 - corner_r,
45                 body_w/2 - corner_r, 2*wall-eps])
46         difference() {
47                 cylinder(r = corner_r + wall, h = corner_side_h+eps);
48                 translate([0, 0,-eps])
49                         cylinder(r = corner_r, h = infty);
50                 translate([-infty, -infty/2, -infty/2]) cube(infty);
51                 translate([-infty/2, -infty, -infty/2]) cube(infty);
52         }
53
54 // rubber band hooks
55 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
56         difference() {
57                 translate([body_l/2 - corner_r - hook_l,
58                         body_w/2 - corner_r, 0])
59                         cube([hook_l, hook_w + corner_r + wall, 2*wall]);
60                 translate([body_l/2 - corner_r - hook_hole_l,
61                         body_w/2 + wall, -eps])
62                         cube([hook_hole_l + eps, hook_hole_w, 2*wall+2*eps]);
63         }