$fn = $preview ? 16 : 72; wall_thickness = 3; //box = [21,21,21]; box = [195,75,36]; corner_radius = 2; cutoff = 0.5; overlap = 4; taper = 0.1; module outer_box(box) { minkowski(){ cube([box.x+wall_thickness,box.y+wall_thickness,box.z+wall_thickness], center=true); sphere(d=wall_thickness); } } module box(size, wall=3, taper=0) { translate([0,0,-size.z/2]) hull(){ linear_extrude(height=0.1, scale=0) offset(r=wall/2) square(size=[(size.x+wall-taper),(size.y+wall-taper)],center=true); translate([0,0,size.z]) rotate([0,180,0]) linear_extrude(height=0.1, scale=0) offset(r=wall/2) square(size=[size.x+wall+taper,size.y+wall+taper],center=true); } } module bottom_box(box) { difference(){ //box(size=[box.x,box.y,box.z+2*wall_thickness] ,wall=wall_thickness); outer_box(box); translate([0,0,box.z*cutoff+wall_thickness]) cube([box.x+60,box.y+60,box.z],center=true); //cube(box,center=true); translate([0,0,box.z*cutoff+overlap-wall_thickness+0.01]) #box([box.x,box.y,overlap],wall=wall_thickness/2,taper=0.5); translate([box.x/2+wall_thickness,0,0]) rotate([90,0,90]) side_text(); translate([-box.x/2-wall_thickness,0,0]) rotate([90,0,-90]) side_text(); } } module custom_text() { linear_extrude(height=0.4,center=true) text("Wetstone", valign="center", halign="center"); } module side_text(){ linear_extrude(height=0.4,center=true) scale(1.2) text("Wetstone", valign="center", halign="center"); } module top_box(box) { inner_wall_t = wall_thickness - 0.5; difference(){ union(){ difference(){ outer_box(box); //box(size=[box.x,box.y,box.z+2*wall_thickness] ,wall=wall_thickness); translate([0,0,-box.z*(1-cutoff)+wall_thickness]) cube([box.x+60,box.y+60,box.z],center=true); } translate([0,0,overlap-wall_thickness+0.1]) box([box.x,box.y,overlap],wall=wall_thickness/2,taper=0.5); } translate([0,0,box.z/2+wall_thickness]) linear_extrude(height=0.4,center=true) scale(3) text("Wetstone", valign="center", halign="center"); cube(box,center=true); translate([box.x/2+wall_thickness,0,0]) rotate([90,0,90]) side_text(); translate([-box.x/2-wall_thickness,0,0]) rotate([90,0,-90]) side_text(); } } module top_box_flip() { rotate([0,180,0]) top_box(); } * rotate([0,90,0]){ bottom_box(); translate([0,0,20]) top_box(); }