include base_wall = 0.6; inside_z = base_wall + 5; base_w = 18; base_h1 = 7.5; base_h2 = 14; inside_yoff = 2.3; inside_w = 12.4-0.2; inside_h = 3.9-0.2; inside_w1 = inside_w - 2; inside_h1 = 2; /* base_w = 23.5; base_h1 = 10; base_h2 = 11; inside_yoff = 1; inside_w = 21; inside_h = 1.8; inside_w1 = inside_w - 2; inside_h1 = 2; */ // base union() { intersection() { let(r = (base_w^2)/(8*(base_h2-base_h1)) + (base_h2-base_h1)/2) Ty(-r+base_h2) cylinder(r = r, h = base_wall, $fn = 256); Tx(-base_w/2) cube([base_w, infty, base_wall]); } Tx(-base_w/2) cube([base_w, base_h1, base_wall]); } // inside Tx(-inside_w/2) Ty(inside_yoff) cube([inside_w, inside_h, inside_z]); // innside higher part if (inside_w1 > 0) { Tx(-inside_w1/2) Ty(inside_yoff+inside_h-eps) cube([inside_w1, inside_h1+eps, inside_z]); }