Download this thing or ask me how I made it at thingiverse.com
back
snub trihexagonal torus

s = sqrt(3);

vertices = [
[0, 0],
[-2, 0],
[-3, -s],
[-2, -2*s],
[0, -2*s],
[1, -s],
[2, 0],
[1, s],
[-1, s],
[-3, s],
[-4, 0],
[-5, -s],
[-4, -2*s],
[-3, -3*s],
[-1, -3*s],
[1, -3*s],
[2, -2*s],
[3, -s],
[4, 0],
[5, s],
[4, 2*s],
[2, 2*s],
[0, 2*s],
[1, 3*s],
[3, 3*s],
[5, 3*s],
[6, 2*s],
[7, s],
[6, 0],
[5, -s]];

rotated_scaled_vertices = [
for(n=[0:29])
     let(
     v = vertices[n],
     h = 1/sqrt(84),
     k = 1/sqrt(28),
     phi = -10.89339465,
     x = (cos(phi)*v[0]-sin(phi)*v[1])*h,
     y = (sin(phi)*v[0]+cos(phi)*v[1])*k
     )
[x, y]
];

paths = [
0, 1, 1, 2, 2, 3, 3, 4, 4, 5,
5, 0, 6, 7, 7, 21, 21, 20, 20, 19,
18, 18, 18, 6, 10, 11, 11, 12, 12, 13,
13, 14, 14, 15, 15, 16, 16, 17, 17, 29,
10, 2, 2, 12, 12, 3, 3, 14, 14, 4,
4, 16, 16, 5, 5, 17, 17, 18, 17, 6,
6, 5, 6, 0, 4, 15, 3, 13, 2, 11
];

for(l=[0:3])
{
     for(m=[0:2])
     {
         for(n=[0:34])
         {
             list_1 = [
                 for(t=[0:10])
                     let(
                     A = rotated_scaled_vertices[paths[2*n]],
                     B = rotated_scaled_vertices[paths[2*n+1]],
                     x = A[0] + .1*t*(B[0]-A[0]),
                     y = A[1] + .1*t*(B[1]-A[1])
                     )
             [x, y]
             ];
             for(p=[0:9])
             {
                 C = list_1[p];
                 D = list_1[p+1];
                 hull()
                 {
                     translate([(10 + 6*cos(C[1]*120+120*m))*cos(C[0]*90+90*l),
                                 (10 + 6*cos(C[1]*120+120*m))*sin(C[0]*90+90*l),
                                 6*sin(C[1]*120+120*m)])
                     {
                         sphere($fn=20, .7, true);
                     }
                     translate([(10 + 6*cos(D[1]*120+120*m))*cos(D[0]*90+90*l),
                                 (10 + 6*cos(D[1]*120+120*m))*sin(D[0]*90+90*l),
                                 6*sin(D[1]*120+120*m)])
                     {
                         sphere($fn=20, .7, true);
                     }
                 }
             }
         }
     }
}