Creating Dice

Code for a Semi Fair Dice
Section titled “Code for a Semi Fair Dice”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();}