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 6Technical 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:
Snaps = 3
Side Length = 25
Thickness = 3.5
Border = 3.5
Clearance = .17
Lengthen = .3
// 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!
No comments:
Post a Comment