Download this thing or ask me how I made it at thingiverse.com
back
truncated dodecahedron

a = (1+sqrt(5))/2; //edge length = 2
w = 2/(2*sin(54)+2);

b = [a, a, a];
c = [a, a, -a];
d = [a, -a, a];
e = [a, -a, -a];
f = [-a, a, a];
g = [-a, a, -a];
h = [-a, -a, a];
i = [-a, -a, -a];
j = [0, 1, a*a];
k = [0, 1, -a*a];
l = [0, -1, a*a];
m = [0, -1, -a*a];
n = [1, a*a, 0];
o = [1, -a*a, 0];
p = [-1, a*a, 0];
q = [-1, -a*a, 0];
r = [a*a, 0, 1];
s = [a*a, 0, -1];
t = [-a*a, 0, 1];
u = [-a*a, 0, -1];

paths = [
b, j, b, n, b, r,
c, k, c, s, c, n,
d, l, d, o, d, r,
e, o, e, m, e, s,
f, j, f, t, f, p,
g, k, g, p, g, u,
h, t ,h, l, h, q,
i, q, i, m, i, u,
j, b, j ,l, j, f,
k, m, k, g, k, c,
l, j, l, h, l, d,
m, e, m, k, m, i,
n, p, n, b, n, c,
o, q, o, e, o, d,
p, n, p, g, p, f,
q, o, q, h, q, i,
r, d, r, b, r, s,
s, r, s, e, s, c,
t, f, t, h, t, u,
u, t, u, g, u, i,
];

// making sure all the edge lengths are the same
//echo(sqrt(pow(((2-w)*a+w*0)-((2-w)*a+w*1), 2) + pow(((2-w)*a+w*1)-((2-w)*a+w*a*a), 2) + pow(((2-w)*a+w*a*a)-((2-w)*a+w*0), 2)));
//
//echo(sqrt(pow(((2-w)*a+w*0)-(w*a+(2-w)*0), 2) + pow((((2-w)*a+w*1)-(w*a+(2-w)*1)), 2) + pow(((2-w)*a+w*a*a)-(w*a+(2-w)*a*a), 2)));


for(y=[0:19])
{
     A = paths[2*(3*y)];
     B = paths[2*(3*y)+1];
     C = paths[2*(3*y+1)];
     D = paths[2*(3*y+1)+1];
     E = paths[2*(3*y+2)];
     F = paths[2*(3*y+2)+1];
     t1 = [(2-w)*A[0]+w*B[0], (2-w)*A[1]+w*B[1], (2-w)*A[2]+w*B[2]];
     t2 = [w*A[0]+(2-w)*B[0], w*A[1]+(2-w)*B[1], w*A[2]+(2-w)*B[2]];
     t3 = [(2-w)*C[0]+w*D[0], (2-w)*C[1]+w*D[1], (2-w)*C[2]+w*D[2]];
     t4 = [w*C[0]+(2-w)*D[0], w*C[1]+(2-w)*D[1], w*C[2]+(2-w)*D[2]];
     t5 = [(2-w)*E[0]+w*F[0], (2-w)*E[1]+w*F[1], (2-w)*E[2]+w*F[2]];
     t6 = [w*E[0]+(2-w)*F[0], w*E[1]+(2-w)*F[1], w*E[2]+(2-w)*F[2]];
     truncation_paths = [t1, t3, t3, t5, t5, t1, t1, t2, t3, t4, t5, t6];
     for(x=[0:5])
     {
         point_1 = truncation_paths[2*x];
         point_2 = truncation_paths[2*x+1];
         hull()
         {
             translate([point_1[0], point_1[1], point_1[2]])
             {
                 sphere($fn=100, .3, true);
             }
             translate([point_2[0], point_2[1], point_2[2]])
             {
                 sphere($fn=100, .3, true);
             }
         }
     }
}