Tuesday, April 22, 2014

Day 239 - Six-piece ball puzzle

Today we printed althepal's Six-piece soccer ball puzzle from Thingiverse. I have a lot of puzzles like these in my office at work, and people often take them apart and then don't have enough time to figure out how put them back together again. The puzzles can be a pain for me to reassemble and don't really display well as pieces. Fortunately, with 3D-printed puzzles you can just print an extra copy for people to play with, and leave a display copy intact! This is a classic puzzle that is especially cool because it is made up of six identical pieces:


Thingiverse link: http://www.thingiverse.com/make:75005

Settings: Printed on a Replicator 2 on .3mm/low settings at 50% of original scale.

Technical notes, OpenSCAD flavor: althepal's code is simple and elegant, and I've rearranged it and added comments below so you can see how it works. After the resolution and scaling parameters are set, the object itself is made by removing notches from a long cuboid shape and then intersecting with a sphere to make a rounded exterior. To see how this works, try compiling this in OpenSCAD and adding a "#" character in front of each cube and sphere command, one at a time. This will cause the corresponding cube or sphere to be highlighted in red so that you can see how it fits into the object.

// code from althepal with comments added by mathgrrl
// http://www.thingiverse.com/thing:219502/#files

// resolution
$fn = 100;

// radius of enclosing sphere
r1 = 30;

// side length of cuboid for pieces
s1 = r1 * 13.3 / 20;

// the puzzle piece (print six times)
intersection(){
// start with a long cuboid with notches cut out
difference(){
// start with a long cuboid
translate([0,-100, 0])
cube([s1,200, s1], center=false);
// remove notch with rotated cuboid shape
translate([s1, s1 * cos(45) + 0.5, s1])
rotate([45,45,0])
cube([200, s1, s1], center=true);
// remove another notch with rotated cuboid shape
translate([s1, -s1 * cos(45) - 0.5, s1])
rotate([45,45,0])
cube([200, s1, s1], center=true);
}
// intersect with sphere to cut off and make rounded
translate([r1 * cos(45),0, r1 * cos(45)])
sphere(r = r1);
}

Stuff to change next time: Although the 50% scale model printed perfectly, it is very difficult to assemble.  Although it is very cute when tiny, I would recommend printing this model at original size.