$fs = 0.1; eps = 0.01; size = 12; dice(); use module dice() { l = size; h = 1.5 * size; r = 0.1 * size; difference() { translate([l, l, h] / 2) roundedBox([l, l, h], r, false); union() { // 1 translate([0.5 * l, 0.5 * l, h - 1.5 * r + eps]) cylinder(1.5 * r, r, r); // 2 translate([0.3 * l, 0.3 * l, -eps]) cylinder(1.5 * r, r, r); translate([0.7 * l, 0.7 * l, -eps]) cylinder(1.5 * r, r, r); // 3 translate([0.3 * l, l - 1.5 * r + eps, 0.3 * h]) rotate([-90, 0, 0]) cylinder(1.5 * r, r, r); translate([0.5 * l, l - 1.5 * r + eps, 0.5 * h]) rotate([-90, 0, 0]) cylinder(1.5 * r, r, r); translate([0.7 * l, l - 1.5 * r + eps, 0.7 * h]) rotate([-90, 0, 0]) cylinder(1.5 * r, r, r); // 4 translate([-eps, 0.3 * l, 0.3 * h]) rotate([0, 90, 0]) cylinder(1.5 * r, r, r); translate([-eps, 0.3 * l, 0.7 * h]) rotate([0, 90, 0]) cylinder(1.5 * r, r, r); translate([-eps, 0.7 * l, 0.3 * h]) rotate([0, 90, 0]) cylinder(1.5 * r, r, r); translate([-eps, 0.7 * l, 0.7 * h]) rotate([0, 90, 0]) cylinder(1.5 * r, r, r); // 5 translate([l - 1.5 * r + eps, 0.3 * l, 0.3 * h]) rotate([0, 90, 0]) cylinder(1.5 * r, r, r); translate([l - 1.5 * r + eps, 0.3 * l, 0.7 * h]) rotate([0, 90, 0]) cylinder(1.5 * r, r, r); translate([l - 1.5 * r + eps, 0.5 * l, 0.5 * h]) rotate([0, 90, 0]) cylinder(1.5 * r, r, r); translate([l - 1.5 * r + eps, 0.7 * l, 0.3 * h]) rotate([0, 90, 0]) cylinder(1.5 * r, r, r); translate([l - 1.5 * r + eps, 0.7 * l, 0.7 * h]) rotate([0, 90, 0]) cylinder(1.5 * r, r, r); // 6 translate([0.3 * l, -eps, 0.3 * h]) rotate([-90, 0, 0]) cylinder(1.5 * r, r, r); translate([0.3 * l, -eps, 0.5 * h]) rotate([-90, 0, 0]) cylinder(1.5 * r, r, r); translate([0.3 * l, -eps, 0.7 * h]) rotate([-90, 0, 0]) cylinder(1.5 * r, r, r); translate([0.7 * l, -eps, 0.3 * h]) rotate([-90, 0, 0]) cylinder(1.5 * r, r, r); translate([0.7 * l, -eps, 0.5 * h]) rotate([-90, 0, 0]) cylinder(1.5 * r, r, r); translate([0.7 * l, -eps, 0.7 * h]) rotate([-90, 0, 0]) cylinder(1.5 * r, r, r); } } }