23 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
24 translate([body_l/2 - corner_r,
25 body_w/2 - corner_r, 0])
26 cylinder(r = corner_r + wall, h = wall);
28 // translate([-body_l/2+corner_r + hook_l, -body_w/2+corner_r, -eps])
29 // cube([body_l-2*corner_r-2*hook_l, body_w - 2*corner_r, wall +2*eps]);
30 translate([-body_l/2+corner_r, -body_w/2+corner_r, -eps])
31 cube([body_l-2*corner_r, body_w - 2*corner_r, wall +2*eps]);
34 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
35 translate([body_l/2-corner_r-hook_l-ziptie_w,
36 body_w/2+wall/2-corner_r/2, wall])
38 translate([0, -ziptie_h/2, -infty/2])
39 cube([ziptie_w, ziptie_h, infty]);
41 // more space for lens
42 for (x = [-1, 1]) scale([x, 1, 1])
43 translate([body_l/2, -body_w/2+corner_r, -eps])
44 cube([wall+eps, body_w-2*corner_r, wall+2*eps]);
47 // raised corner bottom
48 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
49 translate([body_l/2 - corner_r,
50 body_w/2 - corner_r, wall-eps])
52 cylinder(r = corner_r + wall, h = wall+eps);
53 translate([-infty, -infty/2, -infty/2]) cube(infty);
54 translate([-infty/2, -infty, -infty/2]) cube(infty);
59 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
60 translate([body_l/2 - corner_r,
61 body_w/2 - corner_r, 2*wall-eps])
63 cylinder(r = corner_r + wall, h = corner_side_h+eps);
64 translate([0, 0,-eps])
65 cylinder(r = corner_r, h = infty);
66 translate([-infty, -infty/2, -infty/2]) cube(infty);
69 translate([-infty/2, -infty, -infty/2]) cube(infty);
73 for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1])
75 translate([body_l/2 - corner_r - hook_l,
76 body_w/2 - corner_r, 0])
77 cube([hook_l, hook_w + corner_r + wall, 2*wall]);
78 translate([body_l/2 - corner_r - hook_hole_l,
79 body_w/2 + wall, -eps])
80 cube([hook_hole_l + eps, hook_hole_w, 2*wall+2*eps]);