Welcome to MakerHome




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


Tuesday, August 12, 2014

Day 351 - Impossible Menger Burr

After richgain's excellent guest posts walking us through Burr Tools on Day 348 and Day 349, we couldn't resist giving it a try. As I think we've established, I love Menger sponges and I'm kind of a jerk. So I made a burr puzzle that can never be assembled.


Thingiverse link: http://www.thingiverse.com/thing:439478

Settings: The red menger cube was printed on a Replicator 2 at .3mm layer height in 10 minutes, without raft or support, on an acrylic platform. The white cross was printed on another Replicator 2 (don't judge, they had a warehouse sale for the last remaining Rep2's and... well...) at .3mm layer height in 8 minutes, with raft and support on a glass platform with tape.

Technical notes, Burr Tools flavor: I have to give serious thanks and appreciation to the author of Burr Tools, Andreas Roever. Burr Tools has a lot of features that I haven't even attempted yet, including triangle and sphere grids and a whole lot more. And it's free. In addition it solves the puzzles you construct. And it's smart about it; for example, the menger+cross puzzle I made has a solution if you can get the cross into the cube. So it has an "assembly". But it doesn't have a "solution" because you can't actually perform the assembly. This is reported correctly by Burr Tools in the left column of the picture below. Very impressive and useful!


Thanks also go out to Derek Bosch, himself a creator of amazing and intricate puzzles, who wrote the code for the OSX port and also sent me a direct link to the most updated version of Burr Tools so I could run it on my Mac. Here's that link: http://sourceforge.net/projects/burrtools/files/latest/download .

Monday, August 11, 2014

Day 350 - Triple Bubbles

When three bubbles intersect, they do so in a very specific way. Here's what it looks like:


Using the OpenSCAD code for this design included at the bottom of this post you can make your own bubble model with any three bubbles you like. The code will automatically position the bubbles correctly and create the correct surface components that intersect in the center of the model. Or, to print exactly the model above, use the Thingiverse link.

Thingiverse link: http://www.thingiverse.com/thing:438777

Settings: This is very large model that took up most of the build plate of a MakerBot Replicator 2 and printed at .2mm layer height with raft but no supports. It took many hours but we forgot to make a note of exactly how many! So, just, a lot.

Technical notes, math flavor: This model was requested by MoMath to use as a cake centerpiece for mathematician Jean Taylor's 70th birthday party. Jean Taylor famously proved that Plateau's Laws hold for minimal surfaces in her paper The structure of singularities in soap-bubble-like and soap-film-like minimal surfaces.  According to Plateau's Laws, three bubbles will meet at 120-degree angles - just as in the center of the model shown above. However, the three surface components that meet at the 120-degree angle are not flat; they are curved. Each of the three components is a part of a larger sphere whose center lies outside of the bubbles. The three centers are shown by the points F, G, and H in the diagram below, taken from S.M. Blinder's Wolfram Demonstration Three Coalescing Soap Bubbles.


We used S.M. Blinder's Demonstration code to get the mathematical descriptions of the points F, G, and H given the radii of the three intersecting bubbles.

Technical notes, failure flavor: This model left a particularly large trail of fails; below is one that was designed with a much coarser mesh. The coarseness of the mesh left some gaps at the joins between the surfaces, which cased the model to separate. In addition we tried to print the entire top without supports, which caused the problem on the smallest sphere that led us to cancel the print. Most models can be made rather coarsely and still look fine, but this particular model needed a mesh with a very high degree of accuracy to even print correctly.


Technical notes, resolution flavor: To get a fine enough resolution for successful printing, we had to use a lot of triangles in our mesh. The hard part was getting the interior surface segments to contain enough triangles, since they came from much larger spheres. The key to doing this was using very small numbers for the fragment angle and fragment size of the spheres: 

fragA = 2; // fragment angle
fragS = 2; // fragment size

Here's what the mesh looks like in OpenSCAD:


Because of the high resolution needed to make components of this model intersect successfully, I am not putting its OpenSCAD code on the Thingiverse Customizer. I think it would hang or crash to try to run this online. If you're interested in making different bubble configurations then download OpenSCAD and run the code at the bottom of this post, changing the bubble radii as desired. 

Technical notes, OpenSCAD flavor: This was one of the most difficult things that I've made in OpenSCAD. When MoMath asked me if I could design this triple-bubble model, my first reaction was that I had absolutely no idea how to do that, so probably not. But a bit of poking around on the web led me to the excellent triple-bubble Wolfram Demonstration, and they had already done all of the math! I tried to export the Wolfram object using Mathematica, but it was not the right kind of graphics object to allow an STL export. This meant that it had to be reconstructed from the ground up in OpenSCAD. Alas, this in turn meant that I really needed to understand all the mathematics in the code, and also translate the code from Mathematica syntax to OpenSCAD syntax. All this together with the need for high-resolution accuracy meant that this project took many days to put together and get working correctly. 

The OpenSCAD code starts with any three radii for the bubbles and then positions the spheres correctly, computes the center coordinates of the larger spheres that determine the intersecting surface components, and then uses unions, differences, and intersections to output the correct sections of the three bubbles and thee surface components. Because it would be difficult to see the inside intersections if the bubbles were printed as full spheres, the final step is to cut off the top and bottom of the model. This also makes the model very easy to print. 

// mathgrrl triple bubble

////////////////////////////////////////////////////////////////
// bubble radii 

a = 60;
b = 56;
c = 44;

////////////////////////////////////////////////////////////////
// resolution parameters

th = .9; // thickness
fragA = 2; // fragment angle
fragS = 2; // fragment size

////////////////////////////////////////////////////////////////
// scale and render

intersection(){
build_bubbles();
cube([250,200,70],center=true);
}

////////////////////////////////////////////////////////////////
// translation coordinates
// based on code from Wolfram Mathematica Demonstrations Project
// http://demonstrations.wolfram.com/ThreeCoalescingSoapBubbles/

ab = sqrt(a*a+b*b-a*b);
ac = sqrt(a*a+c*c-a*c);
bc = sqrt(b*b+c*c-b*c);

f = 1/(1/b-1/a);
g = 1/(1/c-1/a);
h = 1/(1/c-1/b);

// translation coords for sphere b
xb = ab;

// translation coords for sphere c
xc = (pow(ab,2)+pow(ac,2)-pow(bc,2))/(2*ab);
yc = (-1/(2*ab))*
     sqrt( -pow(ab,4)
-(pow(ac,2)-pow(bc,2))*(pow(ac,2)-pow(bc,2))
+2*pow(ab,2)*(pow(ac,2)+pow(bc,2)));

// translation coords for interface sphere f
bf = sqrt(pow(b,2)+pow(f,2)-b*f);
xf = ab+bf;
yf = 0;

// translation coords for interface sphere g
cg = sqrt(pow(c,2)+pow(g,2)-c*g);
xg = (ac*xc+cg*xc)/ac;
yg = (ac*yc+cg*yc)/ac;

// translation coords for interface sphere h
ch = sqrt(pow(c,2)+pow(h,2)-c*h);
xh = (-ch*xb+bc*xc+ch*xc)/bc;
yh = (bc*yc+ch*yc)/bc;

////////////////////////////////////////////////////////////////
// module for sphere parts and dividers

module build_bubbles(){
//first bubble shell fragment
difference(){
sphere_a(open=1,fudge=0); // start with first bubble shell
intersection(){ // take away the part of the shell
sphere_a(open=1,fudge=0); // that intersects the
union(){ // second and third bubbles
sphere_b(open=0,fudge=-th);
sphere_c(open=0,fudge=-th);
}
}
}
//second bubble shell fragment
difference(){
sphere_b(open=1,fudge=0); // start with second bubble shell
intersection(){ // take away the part of the shell
sphere_b(open=1,fudge=0); // that intersects the
union(){ // first and third bubbles
sphere_a(open=0,fudge=-th);
sphere_c(open=0,fudge=-th);
}
}
}
//third bubble shell fragment
difference(){
sphere_c(open=1,fudge=0); // start with third bubble shell
intersection(){ // take away the part of the shell
sphere_c(open=1,fudge=0); // that intersects the
union(){ // first and second bubbles
sphere_a(open=0,fudge=-th);
sphere_b(open=0,fudge=-th);
}
}
}
//interface between first and second
intersection(){
sphere_ab(open=1,fudge=0); // take only the arc of the circle
difference(){
sphere_a(open=0,fudge=0.1); // that intersects the first bubble
sphere_ac(open=0,fudge=-th); // but not the other interface
}
}
//interface between first and third
intersection(){
sphere_ac(open=1,fudge=0); // take only the arc of the circle
difference(){
sphere_a(open=0,fudge=0.02); // that intersects the first bubble
sphere_ab(open=0,fudge=-0.02); // but not the other interface
}
}
//interface between second and third
intersection(){
sphere_bc(open=1,fudge=0); // take only the arc of the circle
difference(){
sphere_b(open=0,fudge=0.02); // that intersects the second bubble
difference(){ // but not the other side of
sphere(100);
sphere_ac(open=0,fudge=0.02); // the other interface
}
}
}
}

////////////////////////////////////////////////////////////////
// modules for the spheres
// use open=1 for shell and open=0 for full sphere

module sphere_a(open,fudge){
translate([0,0,0])
difference(){
sphere(a+th/2+fudge,$fa=fragA,$fs=fragS);
sphere(open*(a-th/2+fudge),$fa=fragA,$fs=fragS);
}
}

module sphere_b(open,fudge){
translate([xb,0,0]) 
difference(){
sphere(b+th/2,$fa=fragA,$fs=fragS);
sphere(open*(b-th/2+fudge),$fa=fragA,$fs=fragS);
}
}

module sphere_c(open,fudge){
translate([xc,yc,0]) 
difference(){
sphere(c+th/2+fudge,$fa=fragA,$fs=fragS);
sphere(open*(c+-th/2+fudge),$fa=fragA,$fs=fragS);
}
}

////////////////////////////////////////////////////////////////
// modules for the interface spheres
// use open=1 for shell and open=0 for full sphere

module sphere_ab(open,fudge){
translate([xf,yf,0]) 
difference(){
sphere(f+th/2+fudge,$fa=fragA/2,$fs=fragS/2);
sphere(open*(f-th/2+fudge),$fa=fragA/2,$fs=fragS/2);
}
}

module sphere_ac(open,fudge){
translate([xg,yg,0])
difference(){
sphere(g+th/2+fudge,$fa=fragA/2,$fs=fragS/2);
sphere(open*(g-th/2+fudge),$fa=fragA/2,$fs=fragS/2);
}
}

module sphere_bc(open,fudge){
translate([xh,yh,0])
difference(){
sphere(h+th/2+fudge,$fa=fragA/2,$fs=fragS/2);
sphere(open*(h-th/2+fudge),$fa=fragA/2,$fs=fragS/2);
}
}

Sunday, August 10, 2014

Day 349 - Sunday guest: Rich Gain and Printable Puzzles, part 2

This is the second in a pair of guest posts by Richard Gain (richgain on Thingiverse), designer and printer of 3D burr puzzles. For richgain's first post see Day 348.

In Part 1, we used Burr Tools to design the two different puzzle pieces and the target shape used in the "Looks Easy" puzzle. Now we will use the same program to generate printable parts.

Go to the Export menu option and select STL. A new window will open in front of the main Burr Tools window. The large pane on the right can be used in exactly the same way to rotate and zoom until you have a good view of the selected piece.


Leave the file naming section for now and have a play with the export size settings. All units are in millimetres.

Unit size - controls the size of each individual cubelet and 10 mm, or 1 cm, is a very good starting option. I have managed to go down to 4 mm and still print successful puzzles on a home printer.

Bevel - is the width of the angled edge, which gets applied everywhere. This is important for sliding puzzles because it helps to prevent the pieces from snagging on each other as they move. I usually select a value which is 10% of the Unit size. Try increasing the bevel to 1.

Offset - is the critical setting for getting a good fit in any puzzle. This is the amount which is shaved off every surface to allow the pieces to move. A good starting value is 0.1 mm (10 times more than the default setting!) but you should probably adjust this value after your first test print. Every printer is slightly different and the type of filament can affect the dimension accuracy as well.


When you have printed some test pieces, you will be able to slide one piece into the gap in another piece and hold it up. If the pieces fall apart under their own weight then the Offset is too large. Try lowering it a small amount, say 0.08 mm. If the puzzle is too tight it will be hard to pull apart again and this will only get worse as more pieces are added. In this case the offset needs to be increased to 0.12 mm or more. We are looking for a nice friction fit that slides easily with a little force.

Wall thickness and Tube size are not recommended for home printing but they are very useful for getting puzzles printed by commercial services like Shapeways because they can dramatically reduce the cost of the puzzle without changing the way it functions. If you want to see the effect, try setting Wall thickness to 0.2 and Tube size to 0.5. Now Shift-click on any face to make a hole in that face. Ctrl-click to close the hole up again. If you want to make a hole right through a cube, Shift-click twice - once for the front face and again for the back face.


When you are happy with your settings it is time to save the pieces. Make sure the "Binary STL" checkbox is selected.

It is worth pointing out that file handling and naming is very much a manual process in Burr Tools, so it is important to be quite methodical in naming the pieces you create. The program won't help you much in this area.

Ignore the File name and Path fields for now and click on the narrow button with 3 dots just to the right. Taking this opportunity to set up the folder organisation and filename template for all the pieces will help you to manage a large number of similar files. Navigate to a suitable place on the disk and create a new folder for this puzzle.


I like to enter a Filename that tells me the name of the puzzle, which piece it is, and the dimension settings I used. That way if I need to come back and make changes later I don't have to try and remember what my export settings were. (You also have to add the .stl suffix manually.)

So, shape 1 would be named: LooksEasy_S1_10_1_01.stl


Click OK to accept the folder path and file name. Now we are ready to quickly export all the pieces.

Click the blue S1 square to select it and then click "Export STL".

Go back to the "File name" text box and change "_S1_" to "_S2_".

Click the green S2 square to select it and then click "Export STL" again.

When you have finished exporting, click the Abort button.

All that remains is to load up your favourite 3D printing software (I use Simplify3D) and set up a plate with four pieces of each shape.


Eight pieces printed in black PLA.


Only one solution.


Happy puzzling!

Saturday, August 9, 2014

Day 348 - Saturday guest: Rich Gain and Printable Puzzles, part 1

Today's post is contributed by Richard Gain (richgain on Thingiverse), designer of the nicely-constructed puzzles from Day 324 and Day 332 as well as the beautiful and terrible Szilassi polyhedron from Day 325. He has designed a stunning array of challenging burr puzzles that he makes using the program Burr Tools; check out his Shapeways shop and Thingiverse collection. Over the next two posts he's going to walk us through how to use Burr Tools to design printable puzzles!

I have been 3D printing puzzles since 2008, first with the help of Shapeways and, since 2011, on home-made types of RepRap 3D printer.

I quickly discovered that puzzles could be categorised in a new way depending on whether the shapes had overhanging parts which need the support option to be turned on in the slicing software.

I decided to call these "printable" and "non-printable," harking back to the old wood-workers' classification of burr puzzles as either "notchable" or "non-notchable" depending on whether they could be made only with a saw. (Almost any puzzle can be printed on a home 3D printer by turning on automatic support but this usually leaves messy surfaces when it is removed, which can stop the puzzle from working well.)

There is a fantastic collection of freely available puzzle designs at Puzzle Will Be Played with many new ones being added every week. This site can provide many wonderful new puzzle ideas for 3D printing, but please respect the designer's copyright and keep these for personal use only. Commercial reproduction can usually be arranged by negotiation with the designers.

Choosing a printable puzzle is simply a matter of looking at a new design and working out whether there are any overhanging sections or not. Sometimes a piece can be rotated into a new position which has no overhangs but many pieces are complex and awkward shapes which would need support material however you positioned them. My own Lock Ness Cube is an example of such a puzzle.

VASP by Terry Smart is a brand new design of a classic burr puzzle. It would have been trickier to make out of wood because it is "non-notchable" (look at the internal corners of pieces D, I and J) however it is "printable" because there are no pieces with overhanging parts.


Let's start with something a little easier though. Looks Easy by Bram Cohen is also brand new and looks like an interesting puzzle challenge which should be easy to print, if not to solve!


By far the easiest way to make new 3D printable puzzle designs is to use a free program called Burr Tools. Download it now from http://burrtools.sourceforge.net/ - the Download section is at the bottom of the page. The latest version is 0.6.3 but it is always worth checking for new updates.

Once you have installed it to your preferred location, start the program up and you should see a screen like this:


Select File - New - Brick - OK. (Brick is the default type)

On the Entities tab, click New shape. A blue S1 will appear.

Now we can set the size of the pieces in blocks. This is a 4x4x4 cube puzzle so let's set X, Y and Z to 4 by dragging the wheels horizontally.

Now click in the small 4x4 grid to paint the shape of the first layer of piece A. You can zoom and rotate the 3D view in the large window.


To paint on the second layer you would need to drag the slider on the left up a notch. We won't need that for this puzzle.

Go back to the top and click New shape again. A green S2 will appear.

Draw the shape of piece E in the 4x4 grid.

Now would be a good time to save your work.


We only need to create the different shapes - copies can be added later - but there is one more shape we need; the target shape of the finished puzzle, in this case a 4x4x4 cube.

Click New shape again to get red S3.

We could simply paint every cell on all four layers but there is a quicker way. Just above the 4x4 grid there is a row of icons. Click the 5th icon to change to Rectangular Selection mode, and also the last icon to toggle "Draw in all Z layers." Now carefully click and drag in the 4x4 grid from top left to bottom right and you should have a large red cube.


Do experiment with these toggle switches when you are ready to learn more about the program. It is also worth checking out the Transform and Tools tabs which hide some very useful functions, like automatically making the internal cubes variable (may or may not be present) when there are internal holes in the puzzle. 'Looks Easy' has 0 internal holes so we don't need that now.

For the final step in this section, let's finish entering the puzzle design. Go to the top and change from Entities to Puzzle.

Click New. Click the red S3 shape, then click the Set Result button.

Click the blue S1 shape, then click +1 four times.

Click the green S2 shape, then click +1 four times.


Now select the Solver tab and click Start to get Burr Tools to show you the solution for this puzzle. Ticking the Disassemble check-box will show you how to solve the puzzle step-by-step by dragging the Move slider.

Note that if the solution involves rotating any of the pieces then Burr Tools will be able to show the final positions but not the disassembly steps.

In part 2 we'll look at how to turn this puzzle into a 3D printable design...

Friday, August 8, 2014

Day 347 - Friday Fail: Self-Intersecting Faces Edition

It seems that the MakerBot Desktop software has an upper bound on the number of "self-intersecting faces" that can be in a model. When I had just a couple of squares hinged together, I didn't have any problems. But with six square faces all with hinges and snaps, there were over 500 of these bad faces (according to MeshLab), caused by triangles that end up somehow sharing parts in the OpenSCAD code. Desktop can't open a file with that much badness, and for a long time I went through a crash/restart/crash/turn-it-off-and-on-again/restart/crash/uninstall/reinstall/forever cycle until I finally figured out that I should maybe go repair the mesh of my file. When I got the number of self-intersecting faces down under 50 by adding additional "fudges" to my OpenSCAD code, MakerBot Desktop could finally open it.

Here's what the remaining 41 self-intersecting faces look like in MeshLab, after selecting Cleaning and Repairing and applying Select Self Intersecting Faces. I could get rid of these also but at this point thing were working so I left well enough alone.


With fudge set to a teeny 0.1, we can sneak in fudges all over the OpenSCAD code with no effect on the printed size of the model, like this:

translate([0-fudge,2*i*snapwidth,0-fudge]) 
cube([height/2+gap+fudge,snapwidth-space+fudge,height+fudge]);

The trick is to make sure that none of your fudges intersect exactly with any of your other fudges. To avoid having two triangles that share the same face you need to keep track of how you've nudged everything - or change the value of fudge - so that you don't fudge-nudge other things into the same place.

Thursday, August 7, 2014

Day 346 - Personalizable Crazy Cube

One really cool thing about a fold-out cube is that you can print things on the faces without using supports and then fold up the cube to get an object with interesting protrusions all over. To print a closed cube with crazy sides would be really unreliable, but to print a flat one is easy. Here's one crazily decorated hinge/snap cube net:


And here is it folded up:


The Customizable Hinge/Snap Cube Net was made in OpenSCAD and then imported into Tinkercad, where we added all the crazy shapes. Here's a public Tinkercad design you can modify to make your own Crazy Cube:


Tinkercad link: https://www.tinkercad.com/things/gu7kcfQV5C3-personalizable-crazy-cube
Thingiverse link: http://www.thingiverse.com/thing:436982

Settings: Printed on a Replicator 2 with .3mm/standard settings, raft but no supports.

Wednesday, August 6, 2014

Day 345 - Customizable hinge/snap Cube net

This week we're attempting to combine three of our previous designs into one:
So far we've managed to get snaps and hinges into the one right-angled model and get everything to fit. Today's code can make corners with two hinges and a snap, or two snaps and one hinge! In other words, we can now make nets for cubes: 


Thingiverse link: http://www.thingiverse.com/thing:436839

Settings: Printed on a MakerBot Replicator 2 at .3mm layer height with standard settings, raft, and no supports. Use the Thingiverse Customizer to set the sizes and clearances however you like.

Tuesday, August 5, 2014

Day 344 - Personalizable Hinged Initials

Here's one use for yesterday's hinge - some stand-up hinged initials for young C:


Of course, if your initials aren't CGR then this model doesn't help you very much. So here's a design you can customize yourself in Tinkercad:


Tinkercad link: https://www.tinkercad.com/things/7CItNykrXZQ-personalizable-hinged-initials
Thingiverse link: http://www.thingiverse.com/thing:436888

Technical notes, Tinkercad/educator flavor: If you are supervising students who are personalizing this design in Tinkercad, I highly recommend having your students use the Ruler tool. To do this, select the Ruler from the "Helpers" section of the right-hand menu column in Tinkercad, and put the Ruler down anywhere on the Workplane (preferably somewhere out-of-the-way, maybe in a far corner). When the Ruler is on the Workplane, any object you select will have dimensions that you can modify by typing into the number fields. To personalize this object, first Ungroup it and remove the CGR initials. Put down letters from the right-hand Tinkercad column and resize them to fit in the boxes. Then use Adjust/Align and the arrow keys to get everything lined up just right.

Monday, August 4, 2014

Day 343 - Customizable Cone Hinge

Today we made a cone hinge module that can be used inside other projects:


Thingiverse link: http://www.thingiverse.com/thing:436737

Settings: Optimized for a MakerBot Replicator 2 with default .3mm/low settings, with raft but (and this is key) no supports. For different printers, to change scale, or for tighter/looser hinges, try changing the clearances in the Customizer at the Thingiverse link.

Technical notes, OpenSCAD flavor: This is a conical hinge, so never needs support material. The picture below shows a cross-section about halfway through.


The space between the protruding cones and the cone-shaped holes is controlled by a parameter called clearance, and the space between the hinge and the adjacent bars is controlled by the parameter called gap. A non-customizable parameter called fudge allows us to push things imperceptibly one way or another so as to avoid having identical duplicate triangles in our output mesh. Here is the full OpenSCAD code for this object:

// mathgrrl cone hinge

//////////////////////////////////////////////////////
// parameters

// Length of the complete hinge
length = 20;

// Height (diameter) of the hinge
height = 3;

// Clearance between cones and holes
clearance = .7;

// Clearance between hinge and sides
gap = .6;

// Parameters that the user does not get to specify
$fn=24*1;
border = 2*1;
fudge = .01*1; // to preserve mesh integrity
corner = 0*1; // space between hinge and corner
hinge_radius = height/2;
cone_height = 1.5*hinge_radius;

//////////////////////////////////////////////////////
// renders

rotate(90,[0,1,0])
translate([-hinge_radius,0,0])
hinge();

translate([0,hinge_radius+gap,0]) bar();
translate([0,-2*border-hinge_radius-gap,0]) bar();

//////////////////////////////////////////////////////
// module for hinge

module hinge(){
rad = hinge_radius;
clr = clearance;
len = (length-2*corner)/3;
con = cone_height;
// left outside hinge = (cylinder+box)-cone
difference(){
union(){
translate([0,0,corner]) cylinder(h=len-clr,r=rad);
translate([-rad,0,corner]) cube([2*rad,rad+gap,len-clr]);
}
translate([0,0,corner+len-con-clr+fudge]) cylinder(h=con,r1=0,r2=rad);
}
// inside hinge = cylinder+box+cone+cone
union(){
translate([0,0,corner+len]) cylinder(h=len,r=rad);
translate([-rad,-rad-gap,corner+len]) cube([2*rad,rad+gap,len]);
translate([0,0,corner+len-con]) cylinder(h=con,r1=0,r2=rad);
translate([0,0,corner+2*len]) cylinder(h=con,r1=rad,r2=0);
}
// right outside hinge = (cylinder+box)-cone
difference(){
union(){
translate([0,0,corner+2*len+clr]) cylinder(h=len-clr,r=rad);
translate([-rad,0,corner+2*len+clr]) cube([2*rad,rad+gap,len-clr]);
}
translate([0,0,corner+2*len+clr-fudge]) cylinder(h=con,r1=rad,r2=0);
}
}

//////////////////////////////////////////////////////
// module for bar shape

module bar(){
cube([length,2*border,height]);
}

Sunday, August 3, 2014

Day 342 - Hinge

In preparation for a new hinge-related project, today we redesigned our conical hinge maker.


Technical notes, clearance flavor: We made this hinge in OpenSCAD and tomorrow we'll have a customizable version up on Thingiverse, with modifiable tolerance parameters. Clearance dimensions matter a lot! Here's a picture of the six practice and failed designs that led up to the seventh working design:

Saturday, August 2, 2014

Day 341 - Ganesha statue

Today we printed another scanned object from the Art Institute of Chicago, a Ganesha statue on MyMinFactory made by coskucan. According to the model description and trusty Wikipedia, Ganesha is known as a remover of obstacles and a god of beginnings, both of which particularly appeal to me these days. And the model prints beautifully:


MyMiniFactory link: http://www.myminifactory.com/object/ganesha-at-art-institute-chicago-1834

Settings: Printed at 300% scale with .2mm layer height on a Replicator 2 in about 3.5 hours.

Friday, August 1, 2014

Day 340 - Buddha statue

Today we printed tomburtonwood's very descriptively-titled Buddha Seated in Meditation (Dhyanamudra), Chola period, c. 12th century, Art Institute of Chicago. Power-designer Tom Burtonwood (@tburtonwood on Twitter) is the Artist-in-Residence at the Art Institute of Chicago and he has been doing some really interesting work with scans, modular animal parts, 3D-printed books, and giant multicolor 3D prints. He also has an excellent Beginners guide to 3D printing site. Here's his Buddha scan:


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

Settings: Printed on a MakerBot Replicator 2 on .3mm layer height in just over 20 minutes.

Thursday, July 31, 2014

Day 339 - Minecraft Ringtail spider

Today we printed toddsplod67's Minecraft spider from Thingiverse, for two reasons. First, Minecraft. Second, this 3D model is part of a tutorial for the 3D-modelling software Ringtail. There are so, so, so many modeling programs that we want to learn and it was nice to see a walkthrough tutorial for this one.


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

Settings: MakerBot Desktop .3mm/low on a Mini.

Technical notes, future flavor: Once this print-a-day-for-a-year blog is done (end of August!) we're going to transition into a series of posts about getting started with various 3D-modeling programs... which means that we'll have to learn how to get started with more 3D-modeling programs...

Wednesday, July 30, 2014

Day 338 - Tinkercad Math Gyros

Today we gave a 3D-printing workshop at MoMath Summer Camp. Everyone got to make and print their own math gyro in Tinkercad. Here's what the students made:


Tinkercad link: https://www.tinkercad.com/things/1RUJSJvRboQ-math-gyro-maker
Thingiverse link: http://www.thingiverse.com/thing:431348

Settings: Printed on a MakerBot Replicator 2 and a MakerBot Replicator Mini at .3mm layer height.

Technical notes, Tinkercad flavor: We got the idea for this project from Josh Ajima (@DesignMakeTeach on Twitter), master of 3D-printing education. His Personalize a Gimbal project starts with an existing gimbal design from Thingiverse and allows students to customize and personalize it in Tinkercad. He also designed an excellent MOM Gimbal which everyone should print for their geeky moms. (I'm looking at you, C. Where is my MOM Gimbal?) Riffing on this idea we designed a new gimbal/gyro in Tinkercad and then chose some shapes from the Community Shape Generators that have modifyable parts (number of petals/sides, etc). Students learn how to move, align, and group objects and then use that knowledge to put together a customized gyro from pre-made pieces:


Specifically, the student should choose one small inside hole and use the sliders in the Shape Script to change the number of sides/petals or the amount of twist in the shape. Then Align the small hole with the small blue gyro center and Group them together. For the outside, the student should choose a large shape and customize it to their liking, then Align and Group the large shape with the large hole. Finally, select the customized outer ring together with the orange, yellow, green, and customized blue gyro rings, and Align and Group together to make the final gyro. Here's what the designs looked like after four groups of students made three gyros a piece (some groups made more than one design):


Technical notes, educator flavor: What makes this project work is that the resulting prints are very likely to print successfully. Beginning designers do not typically make reliable prints at first, which can be frustrating if you are under time constraints or giving a one-time workshop instead of a multi-session class. If a student accidentally resizes the gyro pieces then the object won't spin and/or print correctly, so if you want to make absolutely sure the prints will work then you should check the gyro ring measurements on each design. It's easy to replace the insides with a copy of the working gyro rings while still preserving the customizations that the student made. Halfway through printing we did a filament color swap. Having two colors is particularly effective on spinning gyros. If you have sturdy thumbs then you can also break the gyros apart and mix-and-match them back together again.