module rcube(size=[10, 15, 20], bbottom=3, btop=3) { module side(w, d, bevel) { tiny = 0.001; if (bevel == 0) { translate([0, 0, 0]) cube(tiny); translate([w-tiny, 0, 0]) cube(tiny); translate([0, d-tiny, 0]) cube(tiny); translate([w-tiny, d-tiny, 0]) cube(tiny); } else { translate([0+bevel, 0+bevel, 0]) sphere(bevel); translate([w-bevel, 0+bevel, 0]) sphere(bevel); translate([0+bevel, d-bevel, 0]) sphere(bevel); translate([w-bevel, d-bevel, 0]) sphere(bevel); } } hull() { translate([0, 0, bbottom]) side(size[0], size[1], bbottom); translate([0, 0, size[2]-btop]) side(size[0], size[1], btop); } }