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]); }