Skip to content

Creating Dice

die.png

Idea is that equal material is removed from each side of a rounded cube.

$fn = 96;
die_size = 16;
corner_radius = 2;
dot_radius = 2.0;
dot_depth = 3.5;
dot_offset = 4.2;
core = die_size - 2 * corner_radius;
module die() {
minkowski() {
cube(core, center=true);
sphere(corner_radius);
}
}
module dot_at(x, y, n) {
depth = dot_depth/n;
z = die_size/2 + dot_radius - depth;
translate([x, y, z])
sphere(dot_radius);
}
module face_dots(num) {
if (num == 1) {
dot_at(0, 0, 1);
}
if (num == 2) {
dot_at(-dot_offset, -dot_offset, 2);
dot_at(dot_offset, dot_offset, 2);
}
if (num == 3) {
dot_at(-dot_offset, -dot_offset, 3);
dot_at(0, 0, 3);
dot_at(dot_offset, dot_offset, 3);
}
if(num == 4) {
dot_at(-dot_offset, -dot_offset,4);
dot_at(-dot_offset, dot_offset,4);
dot_at(dot_offset, dot_offset,4);
dot_at(dot_offset, -dot_offset,4);
}
if (num == 5) {
dot_at(0,0, 5);
dot_at(-dot_offset, -dot_offset,5);
dot_at(-dot_offset, dot_offset,5);
dot_at(dot_offset, dot_offset,5);
dot_at(dot_offset, -dot_offset,5);
}
if (num == 6) {
dot_at(-dot_offset, -dot_offset,6);
dot_at( dot_offset, -dot_offset,6);
dot_at(-dot_offset, 0,6);
dot_at( dot_offset, 0,6);
dot_at(-dot_offset, dot_offset,6);
dot_at( dot_offset, dot_offset,6);
}
}
module all_faces() {
face_dots(1);
rotate([180,0,0]) face_dots(6);
rotate([-90,0,0]) face_dots(2);
rotate([90,0,0]) face_dots(5);
rotate([0,90,0]) face_dots(3);
rotate([0,-90,0]) face_dots(4);
}
difference() {
die();
all_faces();
}