--- /dev/null
+eps = 0.01;
+infty = 100;
+
+wall = 1.5;
+
+inner_w = 44;
+inner_d = 32;
+
+inner_h = 9;
+
+clip_w1 = 8;
+clip_w2 = 7;
+clip_h = 16;
+
+hole_off = 12.5;
+hole_l = 14.5;
+
+left_edge_l = 22;
+left_edge_h = 7.5;
+
+right_edge_h = inner_h;
+
+screw_base_h = inner_h + wall;
+screw_base_d = 10;
+screw_hole_d = 4;
+
+difference() {
+ union() {
+ // main body
+ cube([inner_w + 2*wall, inner_d + wall, inner_h + wall]);
+ // side top clip
+ hull() {
+ translate([0, 0, inner_h-eps])
+ cube([wall, clip_w1, eps]);
+ translate([0, 0, inner_h+clip_h-eps])
+ cube([wall, clip_w2, eps]);
+ }
+ // screw base
+ hull() {
+ translate([inner_w/2 + wall - screw_base_d/2,
+ inner_d + wall - eps, 0])
+ cube([screw_base_d, eps, screw_base_h]);
+ translate([inner_w/2 + wall, inner_d + wall + screw_base_d/2, 0])
+ cylinder(r = screw_base_d/2, h = screw_base_h);
+ }
+ }
+ difference() {
+ // inner space
+ translate([wall, -eps, wall])
+ cube([inner_w, inner_d+eps, inner_h+eps]);
+ // left edge begin
+ translate([wall, clip_w1, left_edge_h + wall])
+ rotate([-90, 0, 0])
+ cylinder(r = wall/2, h = hole_off-clip_w1, $fn = 4);
+ // left edge end
+ translate([wall, hole_off+hole_l, left_edge_h + wall])
+ rotate([-90, 0, 0])
+ cylinder(r = wall/2, h = left_edge_l + clip_w1 - hole_off -hole_l, $fn = 4);
+ // right edge
+ translate([inner_w + wall, clip_w1, right_edge_h + wall])
+ rotate([-90, 0, 0])
+ cylinder(r = wall/2, h = left_edge_l, $fn = 4);
+ }
+ translate([-eps, hole_off, wall])
+ cube([wall+2*eps, hole_l, inner_h + eps]);
+ // screw hole
+ translate([inner_w/2 + wall, inner_d + wall + screw_base_d/2, -eps])
+ cylinder(r = screw_hole_d/2, h = screw_base_h + 2*eps);
+}
+