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:
Thingiverse link: http://www.thingiverse.com/thing:208591
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; /* [Adjust Fit] */ // Add extra space between snaps, in mm clearance = .17; // Add extra length to the snaps, in mm lengthen = .3; //radius depends on side length radius = side_length/(2*sin(180/sides)); //inside radius depends on the border thickness inside = radius-border/(cos(180/sides)); //width of each snap depends on number of snaps snapwidth = radius*sin(180/sides)/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 [radius,0-.01], [radius*cos(360/sides)-.01,radius*sin(360/sides)+.01]], //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 translate([radius,0,-thickness/2]) //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!
——————
As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)
Leave a Reply