## Welcome to MakerHome

We've completed our yearlong print-a-day project!
All new material is now at Hacktastic: www.mathgrrl.com

## Tuesday, December 17, 2013

### Day 113 - Poly-Snaps Truncated Tetrahedron

Over the next six days we'll be posting polyhedra that we assembled using our new Poly-Snaps on Thingiverse. Our previous polyhedral models were made from Snap Tiles which had either two or three snaps on each side. This new type of modular polyhedra-builder has the same number of snaps on each side and is customizable in Thingiverse Customizer. Today's print is a Truncated Tetrahedron composed of four triangles and four hexagons:

Settings: MakerWare .3mm/low in two batches (to get the two colors).

Technical notes: We used the following settings in the Thingiverse Customizer, which makes a sturdy, compact model that can be difficult to put together but stays together well even when tossed around.
Sides = 3 and 6
Snaps = 3
Side Length = 25
Thickness = 3.5
Border = 3.5
Clearance = .17
Lengthen = .3
Technical notes, OpenSCAD flavor: This is one of my first OpenSCAD designs so it is kind of a hack, but here is the code I wrote to make the Poly-Snap tiles:

// mathgrrl polysnap tiles

////////////////////////////////////////////////////////////////
// PARAMETERS //////////////////////////////////////////////////

/* [Shape] */

// Choose the number of sides for the tile
sides = 5; // [3,4,5,6,7,8,9,10,11,12]

// Choose the number of snaps on each side
snaps = 3; // [2,3,4,5,6,7,8]

/* [Size] */

// Set the length of each side, in mm
side_length = 25;

// Set the thickness of the tile, in mm
thickness = 3.5;

// Set the border thickness, in mm
border = 3.5;

// Add extra space between snaps, in mm
clearance = .17;

// Add extra length to the snaps, in mm
lengthen = .3;

//inside radius depends on the border thickness

//width of each snap depends on number of snaps

////////////////////////////////////////////////////////////////
// RENDERS /////////////////////////////////////////////////////

union(){
//make the polygon base
poly_maker();

//make the snaps
snap_maker();
}

////////////////////////////////////////////////////////////////
// MODULES /////////////////////////////////////////////////////

//build the polygon shape of the tile
//shape is made up of n=sides wedges that are rotated around
module poly_maker(){

//subtract the smaller polygon from the larger polygon
difference(){

//extrude to thicken the polygon
linear_extrude(height=thickness,center=true){

//rotate the wedge n=sides times at angle of 360/n each time
for(i=[0:sides]){

//rotation is around the z-axis [0,0,1]
rotate(i*360/sides,[0,0,1])

//make triangular wedge with angle based on number of sides
polygon(

//the three vertices of the triangle
points = [[0-.1,0-.1], //tweaks fix CGAL errors

//the order to connect the three vertices above
paths = [[0,1,2]]
);
}
}
//extrude to thicken the center polygon that will be the hole
linear_extrude(height=thickness+2,center=true){

//rotate the wedge n=sides times at angle of 360/n each time
for(i=[0:sides]){

//rotation is around the z-axis [0,0,1]
rotate(i*360/sides,[0,0,1])

//make triangular wedge with angle based on number of sides
polygon(

//the three vertices of the triangle
points = [[0-.2,0-.2], //tweaks fix CGAL errors
[inside,0-.01],
[inside*cos(360/sides)-.01,inside*sin(360/sides)+.01]],

//the order to connect the three vertices above
paths = [[0,1,2]]
);
}
}
}
}

//build the snaps around the tile
//try the commands alone with i=1 and i=2 to see how this works
//remember to read from the bottom to the top to make sense of this
module snap_maker(){

//rotate the side of snaps n=sides times at angle of 360/n each time
for(i=[0:sides]){

//rotation is around the z-axis [0,0,1]
rotate(i*360/sides,[0,0,1])

//build snaps for first side at the origin and move into positions
for(i=[0:snaps-1]){

//read the rest of the commands from bottom to top
//translate the snap to the first side

//rotate the snap to correct angle for first side
rotate(180/sides)

//for i^th snap translate 2*i snapwidths over from origin
translate([0,2*i*snapwidth,0])

//rounded box for snap made from a box and cylinder
union(){

//cube part of snap shape at the origin
cube([thickness/2+lengthen,snapwidth-clearance,thickness]);

//post at back of snap to avoid loose teeth
//shifted a bit right to avoid overhangs when sides=3
translate([-.5,.5,0])
cube([thickness/2,snapwidth-clearance-.5,thickness]);

//round part of snap shape at the origin
//move cylinder to the end of the box
translate([thickness/2+lengthen,
snapwidth-clearance,
thickness/2])
//rotate cylinder to match box orientation
rotate(90,[0,1,0])
rotate(90,[1,0,0])

//cylinder of the correct size to match box
cylinder(
r=thickness/2,
h=snapwidth-clearance,
\$fn=16  //number of sides
);
}
}
}

Update: These Poly-Snap triangle tiles were used by owens on Thingiverse to make a beautiful model of a toroidal polyhedron. So cool!