--- /dev/null
+infty = 100;
+eps = 0.01;
+
+wall = 1.5;
+
+zip_w = 4.5;
+zip_h = 3;
+end_wall = 4;
+
+body_w = zip_w + 2*wall;
+body_l = 20;
+
+screw_hole = 3.7;
+
+module body() {
+ translate([-body_l/2, -body_w/2, 0])
+ cube([body_l, body_w, wall]);
+
+ // front and rear
+ for (i = [1, -1]) scale([i, 1, 1])
+ translate([body_l/2-end_wall, -body_w/2, 0])
+ cube([end_wall, body_w, 2*wall + zip_h]);
+}
+
+difference() {
+ body();
+ // screw hole
+ translate([0, 0, -eps])
+ cylinder(r = screw_hole/2, h = wall + 2*eps);
+ // front and rear holes
+ for (i = [1, -1]) scale([i, 1, 1])
+ translate([body_l/2-wall-end_wall, -zip_w/2, -eps])
+ cube([end_wall+wall+eps, zip_w, wall + zip_h + eps]);
+}