18 bottom_hole_l = body_l - 2*corner_r - 2*hook_l;
19 bottom_hole_w = body_w - 4*wall;
21 side_hole_l1 = body_l - 4*corner_r;
22 side_hole_l2 = body_l - corner_r;
23 side_hole_bot = 2*wall;
33 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
34 translate([body_l/2 - corner_r,
35 body_w/2 - corner_r, 0])
36 cylinder(r = corner_r + wall, h = corner_side_h + wall);
38 // hole for the camera body
40 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
41 translate([body_l/2 - corner_r,
42 body_w/2 - corner_r, wall])
43 cylinder(r = corner_r, h = body_h);
46 translate([-bottom_hole_l/2, -bottom_hole_w/2, -eps])
47 cube([bottom_hole_l, bottom_hole_w, body_h]);
50 translate([-side_hole_l1/2, -body_w/2-wall-eps, side_hole_bot+wall])
51 cube([side_hole_l1, body_w+2*wall+2*eps, wall]);
52 translate([-side_hole_l2/2, -body_w/2-wall-eps, corner_side_h+wall])
53 cube([side_hole_l2, body_w+2*wall+2*eps, wall]);
56 for (x = [-1, 1]) scale([x, 1, 1]) {
57 translate([body_l/2-lens_hole_l, 0, lens_zoff + wall])
59 cylinder(r = lens_d/2, h = lens_hole_l + wall + eps);
60 translate([body_l/2-lens_hole_l, -lens_d/2, lens_zoff + wall])
61 cube([lens_hole_l + wall + eps, lens_d, lens_d/2]);
66 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
68 translate([body_l/2 - corner_r - hook_l,
70 cube([hook_l, hook_w + wall, hook_h]);
71 translate([body_l/2 - corner_r - hook_hole_l,
72 body_w/2 + wall, -eps])
73 cube([hook_hole_l + eps, hook_hole_w, hook_h+2*eps]);
80 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
81 translate([body_l/2 - corner_r,
82 body_w/2 - corner_r, 0])
83 cylinder(r = corner_r + wall, h = wall);
85 // translate([-body_l/2+corner_r + hook_l, -body_w/2+corner_r, -eps])
86 // cube([body_l-2*corner_r-2*hook_l, body_w - 2*corner_r, wall +2*eps]);
87 translate([-body_l/2+corner_r, -body_w/2+corner_r, -eps])
88 cube([body_l-2*corner_r, body_w - 2*corner_r, wall +2*eps]);
90 // more space for lens
91 for (x = [-1, 1]) scale([x, 1, 1])
92 translate([body_l/2, -body_w/2+corner_r, -eps])
93 cube([wall+eps, body_w-2*corner_r, wall+2*eps]);
96 // raised corner bottom
97 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
98 translate([body_l/2 - corner_r,
99 body_w/2 - corner_r, wall-eps])
101 cylinder(r = corner_r + wall, h = wall+eps);
102 translate([-infty, -infty/2, -infty/2]) cube(infty);
103 translate([-infty/2, -infty, -infty/2]) cube(infty);
107 // raised corner side
108 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
109 translate([body_l/2 - corner_r,
110 body_w/2 - corner_r, 2*wall-eps])
112 cylinder(r = corner_r + wall, h = corner_side_h+eps);
113 translate([0, 0,-eps])
114 cylinder(r = corner_r, h = infty);
115 translate([-infty, -infty/2, -infty/2]) cube(infty);
118 translate([-infty/2, -infty, -infty/2]) cube(infty);