Welcome to MakerHome




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


Tuesday, January 14, 2014

Day 141 - Companion Dodecahedron

So the spring semester started yesterday, and I'm already fully underwater with one calculus classes, three 3D-printing classes, and a lot of trips to plan. So today we print something that we didn't have to design: cobbal's most excellent Companion Dodecahedron from Thingiverse. I so wish I had thought of this design myself!


Thingiverse link: https://www.thingiverse.com/make:62048

Settings: MakerWare .3mm/low with raft and support.

Stuff to change: The support was impossible for me to remove from the bottom face. Next time try this without raft or support?

Monday, January 13, 2014

Day 140 - Three Pi

My son loves pi. The number. He and a friend at school have actual arguments about who has memorized and/or written down the most digits of pi. The other day he designed and printed a pi in Tinkercad from scratch to give to his friend; I love the little bend he put into the leg! Tonight I printed a couple more for him from 2ROBOTGUY's Pi Thingiverse design as a surprise. :)


Tinkercad link: <<coming soon, Tinkercad is down tonight>> (black model from CGR)
Thingiverse link: http://www.thingiverse.com/thing:3818 (blue model)

Settings: MakerWare .3mm/low in about 7-8 minutes per pi.

Sunday, January 12, 2014

Day 139 - Stereographic Spheres

Henry Segerman is well-known for the intricate mathematical modeling that he designs and prints at his Shapeways shop.  So to put our Replicator 2 to the test, today we printed henryseg's Stereographic projection model from Thingiverse. It came out beautifully!


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

Settings: Printed with some looping on a Replicator 2 with MakerWare .3mm/low (the red one) but very nicely on MakerWare .15mm/high (the purple one). Raft used but no supports.

Technical notes, math flavor: This model enables you to visualize the stereographic projection of a sphere to a plane. From a point light source at the north pole of the sphere, imagine a line extending from the point, through the surface of the sphere, and then down to the plane. Such lines define a mapping of each point on the surface of the sphere to a point on the surface of the plane. In this model the curved lines on the sphere are the preimage of a straight grid on the plane. The solid curved lines in the model block the light source so you can visually see the image of the curved lines as straight lines on the plane. A beautiful idea, as it is in some sense the opposite of what we usually see in a stereographic world map projection, where latitude and longitude lines become curved lines after the projection, as you can see in this image from subblue's Little Planets:


My favorite thing about Segerman's model it is that it really makes clear where the north pole gets mapped under steregraphic projection. Can you see it?

UPDATE: This post caught the eye of evelynjlamb at the American Mathematical Society's Blog on Math Blogs, and subsequently this MakerHome blog was featured there in the post The Revolution will be 3D Printed!

MORE UPDATE: The Blog on Math Blogs post on MakerHome apparently inspired an article written in Greek at Τρισδιάστατη εκτύπωση. So cool to see our pictures alongside text written in another language.  :)

Saturday, January 11, 2014

Day 138 - ABS and PLA Recycle Signs

This semester a MakerBot Replicator 2 and MakerBot Digitizer are joining the Afinias we have in the JMU 3-SPACE classroom, so we will need a recycle/fail bin for PLA as well as ABS. These signs are a remix of MakerBlock's Recycling Symbols on Thingiverse using the new text Shape Script feature at Tinkercad. (Yes, I know this print is for work, but I designed and printed it at home, so it counts!)



STL file for ABS: http://www.geekhaus.com/makerhome/day138_recyclesignABS.stl
STL file for PLA: http://www.geekhaus.com/makerhome/day138_recyclesignPLA.stl
Tinkercad link: https://tinkercad.com/things/kFnjyIz3ROD-day-138-abs-and-pla-recycle-signs/edit
Thingiverse link: http://www.thingiverse.com/thing:224601

Settings: MakerWare .3mm/low in about 35 minutes.

Friday, January 10, 2014

Day 137 - Clover knot

More TopMod! Today we made a knot:


STL file: http://www.geekhaus.com/makerhome/day137_cloverknot.stl
Thingiverse link: http://www.thingiverse.com/thing:224032

Settings: MakerWare .15mm/high with raft and supports, in 6 hours and 23 minutes. I didn't use the custom knot supports from Day 110 because sometimes they don't work well for thin knots. The supports were not as much of a pain to remove as I thought they would be, and somehow we managed to do so without breaking the model!

Technical notes, math flavor: This model is an example of a mathematical knot, which is basically a string in space that is tied up and then spliced together at the end to make a knotted loop. But which knot is this? It might even be the unknot! Later this semester I'll give this to a student to figure that out. A good place to start would be by making a knot diagram and computing a simple invariant like the knot determinant. With a little luck that could completely determine the knot type, but if not then there are other things that we can look at. Stay tuned for an update when we figure out which knot it is.

Technical notes, TopMod flavor: This model was made by starting with a cube and then adding handles to adjacent faces, just as we did in Day 135, but this time with a twist. Literally, that is: we set "extra twists" to "1" in the properties box before we made the handles.  Then we selected some complements of face loops and used rind modeling to create crusts, and applied Doo-Sabin remeshing to soften the hard edges, just as we did in Day 136. So nothing new here, except that we figured out that you can select some individual mesh cells before beginning the face-loop selection so that there aren't holes to fill in later as we had yesterday in Step 4. The only tricky part was getting the initial twisty handles attached correctly in the first place, with the right amount and direction of twistiness.

Thursday, January 9, 2014

Day 136 - Six Handles Fancy

Today we took yesterday's TopMod model and created crusts along certain face loops to get a more open, fancy, swirly design:


STL file: http://www.geekhaus.com/makerhome/day136_sixhandlesfancy.stl
Thingiverse link: http://www.thingiverse.com/thing:223250

Settings: We used the same custom MakerWare settings from Day 110's knot, to minimize supports and support attachment to the model. Even so the supports are very difficult to remove and we broke the model while trying to clean it up (and then gave up trying to clean it up any more, as you can see from the picture).

Technical notes: The following steps will make this model, starting from the "Six Handles" model we made on Day 135:
  1. Use selection option "Select Face Loop" to choose some interesting curves around the model. Select any edge and TopMod will trace out a curve of faces in the direction imposed by the two faces on either side of your selected edge. It helps if the model has had a bit of Doo-Sabin remeshing so that you can take advantage of the regular geometry that Doo-Sabin generates, but not too much remeshing or the faces will be too tiny.
  2. Use selection option "Select Inverse" to select the complement of the face-loops you picked out; we are going to get rid of these complement faces.
  3. Under "Rind Modeling (Thickness Mode)", apply "Create Crust" to peel back the complement faces. You may want to fiddle with the thickness until you get the desired effect.
  4. I had some holes in the center top and bottom of the model that I wanted to fill in, and finally figured out how to do this with repeated and careful applications of "Insert Edge Mode". However, it would have been much easier if I had remembered to select a couple of key extra faces before selecting the face loops in the first step!
  5. Doo-Sabin once or twice - but not too much because when you export to STL, TopMod will have to convert your mesh to triangles, and this can take a *very* long time if your mesh is too fine.
Next step: Maybe Shapeways can print this! The model is up at the new Geekhaus store and you can order one yourself if you like. I'll update here with information about how my copy turned out once they send it to me.

Wednesday, January 8, 2014

Day 135 - Six Handles

Today's model is a sculpture made with the excellent and innovative mesh-wrangling software TopMod. Since my way-back math roots are in topology, TopMod is like coming home; everything about it speaks my language. Having said that, I'm just a TopMod beginner so my first sculpture is very simple: just six handles arranged around a cubical center and smoothed out with Doo-Sabin.



Settings: Makes a gift-quality print on MakerWare .15mm/high with raft and supports in about 2 hours and 13 minutes.

Technical notes: This model was made in TopMod which you can download for free here. Basic ReadMe and list of operations is here. To make the model I started with a cube and added handles connecting three adjacent pairs of faces. Then I applied the Doo-Sabin mesh subdivision, added three smaller, twisty handles anchored to the new mesh, and applied Doo-Sabin a couple more times. 

To get started with TopMod I suggest watching the following YouTube videos:
UPDATE: You can now order a print of this model from Shapeways at the new Geekhaus store!

MORE UPDATE: kitwallace has found a way to make this same shape by parametrizing with trigonometric functions.

Tuesday, January 7, 2014

Day 134 - Low-Poly Gollum

Today's print is a low-poly version of BorisBelocon's Gollum on Thingiverse.  We printed this for Tim Chartier of Davidson College, who created the low-poly version of BorisBelocon's model by using Quadratic Edge Collapse Decimation in MeshLab.  You can read more about Tim's work at his MathMovement site.


STL file: http://www.geekhaus.com/makerhome/day134_lowpolygollum.stl
Thingiverse link: http://www.thingiverse.com/make:61222

Settings: MakerWare .15mm/high in exactly two hours, to get a high-res but low-poly model :)

Monday, January 6, 2014

Day 133 - Broken Hearts

Today the holiday visits are over and we are back to designing. Something simple to start, and to get ahead for the next holiday: customizable easy-to-print broken hearts that you can string together. More importantly, this model is also a tutorial for printing designs based on mathematical parametric functions in OpenSCAD.


STL file: http://www.geekhaus.com/makerhome/day133_brokenhearts.stl
Thingiverse Customizer link: http://www.thingiverse.com/thing:220720

Settings: MakerWare .3mm/low in almost no time at all. The top indentation of each heart has a gap so that you can chain the hearts together.

Technical notes: This model was made in OpenSCAD using the following parametric equations that define a heart shape (equations obtained from Wolfram's HeartCurve page):
x = 16 sin^3 t
y = 13 cos t - 5 cos 2t - 2 cos 3t - cos 4t
The OpenSCAD code that makes the model is as follows. In the Customizer version we had to cut and paste the 2dgraph.scad code at the end of the file instead of using the "include" shown below, which calls the file 2dgraph.scad from the folder EXTENSIONS in my OpenSCAD working folder.

// mathgrrl broken heart - OpenSCAD parametric graph example

/////////////////////////////////////////////////////////////
// EXTENSIONS ///////////////////////////////////////////////

// curriculum.makerbot.com/daily_tutorial/openscad/openscad_05.html
// include <EXTENSIONS/2dgraph.scad>

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

// Set the diameter of the heart, in mm
heart_diameter = 20;

// Set the thickness of the line, in mm
line_thickness = 1;

// Set the height of the model, in mm
line_height = 3;

// Choose low numbers for jagged, high for smooth
number_of_steps = 48;

scalefactor = heart_diameter*1.15/20;

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

// broken heart parametric curve
// equation from http://mathworld.wolfram.com/HeartCurve.html
function x(t) = scalefactor*16*pow(sin(t),3);
function y(t) = scalefactor*(13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t));

// make the graph and extrude it
linear_extrude(height=line_height)
2dgraph( [0, 350], // stop before 360 to make broken
line_thickness, // set line thickness
steps=number_of_steps, // choose low/high poly look
parametric=true); // use parametric grapher

Sunday, January 5, 2014

Day 132 - Stretchy Bands

To finish out the Thanxmas presents, today we printed some of walter's Customizable Stretchy Bands model from Thingiverse.


STL file: http://www.geekhaus.com/makerhome/day132_stretchybands.stl (but customize your own!)
Thingiverse link: http://www.thingiverse.com/make:61047

Settings: MakerWare .3mm/low on a Replicator 2, very fast to print.

Technical notes: The file above is for a 50mm interior diameter, which is about right for a typical 7-year-old girl. To make the stripes, we colored the filament with sharpie before it went into the extruder. There was some weirdness for the thin .4mm thickness, with a few parts of the model printing in two shells instead of one, but .3mm thickness was causing gaps in the model.  Experiment in the Customizer to find the settings that work for you, but here are the ones that worked the best for us (makes the first two bracelets in the picture):
insideDiameter = 50
thickness = .4
resolution = 60
radialCount = 15
outsideDiameter = 64
height = 6

Saturday, January 4, 2014

Day 131 - More Bowls

The past week of cleaning and family visits has meant a lot of reprints and Thingiverse designs, and today is no exception: we printed a bunch of bowls from the same model used in Day 64 and Day 65, petergross3's Condiment Bowl from Thingiverse.



Settings: Printed small versions at 60% size on .3mm/low with linear fill (see below). The one on the bottom is a little shorter; we cut off the top in Tinkercad to make a wider bowl. Not recommended, as that caused it to lose its nice top lip.

Technical notes: To get linear fill we made a custom profile in MakerWare based on "PLA Low" and changed "sparseInfillPattern" to "linear". I'm hoping that in future updates of MakerWare there will be an easy dropdown menu to change the fill pattern.

Friday, January 3, 2014

Day 130 - Trilobite articulatum

Today is Thanxmas for our family! For the festivities we have a celebratory Trilobite articulatum from AuntDaisy on Thingiverse in our faux fireplace.



Settings: MakerWare .3mm/low in about 4 hours.

Technical notes: We used the "tight" files from AuntDaisy, which worked perfectly on the Replicator 2 with a translucent filament. We recommend printing without raft or support for the body and tail, but with raft and support for the head. (Our initial support-less print of the head had trailing strings on the snaps that had to be cut off, after which the head snaps were too loose to stay on the model.)

Thursday, January 2, 2014

Day 129 - Estonian Kroon Coin Trap

Today's print is a Customized Coin Trap to hold an Estonian Kroon in the blue, black and white colors of the Estonian flag, for my father, who was born in Estonia.


STL file: http://www.geekhaus.com/day129_estoniankroontrap.stl
Thingiverse link: http://www.thingiverse.com/make:60610

Settings: MakerWare .3mm/low in about 15 minutes, with two filament swaps and a pause for the coin to go in.

Stuff to change next time: I now wish that I had changed filament a little sooner so that the black stripe would go all the way across the white at the bottom of the circle (and also later to go across the top before the blue). I had been trying to maximize the white and blue parts but keep filament changes away from the center, weaker part of the model.

Wednesday, January 1, 2014

Day 128 - Pile of Snaps

Today we printed a lot of colorful Poly-Snaps to give to Henry Segerman:


Settings: MakerWare .3mm/low on a Replicator 2.

Technical notes: These were printed in two configurations, some with the default "compact" parameters on the Poly-Snaps customizer (see also Days 113 and 115-117) and some with the "light" parameters from Day 118, except with clearance increased to .14.

Tuesday, December 31, 2013

Day 127 - MakeyMakey Holder

Today this print-a-day project was featured on the MakerBot blog in the MakerBot Stories post Mathgrrl Makes a 3D print a Day, by Blake Eskin!

A year of 3D-printing-flavored making for me, and a new year of MakeyMakey-flavored making for my sister. Today we printed her jensa's MakeyMakey Gamepad case from Thingiverse/YouMagine, to go with her Thanxmas present:


Thingiverse link: http://www.thingiverse.com/make:60374
Download from YouMagine: https://www.youmagine.com/designs/makeymakey-gamepad

Settings: MakerWare .2mm/standard with supports to keep up the overhanging corners. We initially tried this on our usual .3mm/low setting but got a lot of loose diagonal threads on the flat base. Making the print finer solved the problem.

Monday, December 30, 2013

Day 126 - Dalek

I really hope my family isn't reading this blog, or they are finding out what all their Thanxmas presents are. To continue yesterday's theme, today we are printing guydebored's great Dalek model from Thingiverse.


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

Settings: We printed the body on .3mm/low without raft or supports, and the weapons on .15mm/high with both raft and supports (in the horizontal position). It was a little fiddly to remove the supports but was worth it in the end. We had to trim the ends of the weapons a bit to fit into the holes on the Dalek. It looks really great since you imagine it all printed in one piece with the impossible overhangs that the weapons would cause. Wonderfully done model, thank you guydebored!

Sunday, December 29, 2013

Day 125 - Tardi

My family is celebrating the holidays late with Thanxmas after the new year, and more presents are in order. Today, one large Tardis and two small, from Gossamer's wonderful Parametric Tardis model on Thingiverse:


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

Settings: As usual, MakerWare .3mm/low with the small version printing in 37 minutes and the large one taking much longer. The Replicator 2 makes an interesting whistling noise during the print, as the fan blows into the hole carved into the Tardis model. Prints wonderfully without support or raft; this is a really well-done design.

Saturday, December 28, 2013

Day 124 - Low-Poly Bear

What do you print for a person with minimalist tastes? I'm hoping a low-poly bear, like christophecaren's beautiful Bear model on Thingiverse.


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

Settings: MakerWare .3mm/low, with raft and supports. I printed the model upside-down to minimize those supports and then had some minimal cleanup to do on the head and back after removing those supports.

Friday, December 27, 2013

Day 123 - "Ticket to Ride" card holder

A couple of days ago on Day 120, we printed some train trays for the excellent game Ticket to Ride. That was all well and good until the cards seemed all out of order and falling out of their giant tall stacks. So we printed a card holder for train cards, ticket cards, and used train cards. The logo for the game was put in the bottom with Tinkercad and Inkscape using the method outlined in Steps 4-6 on Day 109, with a picture from the internet as the starting point.


STL file: http://www.geekhaus.com/makerhome/day123_tickettoridecards.stl
Tinkercad link: https://tinkercad.com/things/0CO8dupbHOI-day-123-ticket-to-ride-card-holder
Thingiverse link: http://www.thingiverse.com/thing:214204

Settings: MakerWare .3mm/low on a Replicator 2 using the MakerBot "warm gray" filament that I seem to use for everything these days.

Stuff to change later: I forgot to put little bridges to attach the insides of the letters o, R, and d. Next time!

Thursday, December 26, 2013

Day 122 - Menger Coaster Set, Part 2

Continuing from yesterday, here are the other four interesting slices of a Level 3 Menger Sponge:



STL files: http://www.geekhaus.com/makerhome/day122_mengercoaster5.stl (and 6 and 7 and 8)
Tinkercad link: https://tinkercad.com/things/auZS4Sd7vIe-day-122-menger-coaster-set-part-2
Thingiverse link: http://www.thingiverse.com/thing:213053

Settings: Like yesterday, we used Makerware .3mm/low,for a print time of about 30 minutes per coaster, with color swap just after 20 minutes or so.

Technical notes: See yesterday's post for hints about when to make the filament color swap. As you can see from the picture, the Replicator 2 is giving me some "stringy" behavior on the long traverses of black. I wonder if I could fix this with a temperature change or some other change? If anyone has any ideas please let me know.

UPDATE:  On Day 127 we figured out how to fix the "stringy" problem - change to .2mm/standard layer height. I imagine that change would also work for this model.

Wednesday, December 25, 2013

Day 121 - Menger Coaster Set, Part 1

Following up on Day 23's Menger-sponge-slice coaster, today we print four different slices of a Level 3 Menger Sponge.  There are four more interesting slices that we'll print tomorrow. These were constructed in Tinkercad after importing a Menger sponge that was created in Mathematica (although we could also have imported one built in Minecraft; see Day 108).


STL files: http://www.geekhaus.com/makerhome/day121_mengercoaster1.stl (and 2 and 3 and 4)
Tinkercad link: https://tinkercad.com/things/hTazkPXEpX8-day-121-menger-coaster-set-part-1
Thingiverse link: http://www.thingiverse.com/thing:213053

Settings: Makerware .3mm/low in about 30 minutes per coaster. The filament color swap takes place just after the 20 minute mark.

Technical notes: With the settings above, the first four layers will be black, but the last of those four will have outlines around the soon-to-be-white areas. Be sure not to stop too early; wait until you are sure the white part is being drawn before swapping the filament. Getting a little black under the white won't hurt, but getting any unwanted white over the black will be unacceptable.

Tuesday, December 24, 2013

Day 120 - "Ticket to Ride" trains tray

C's grandma gave us the game "Ticket to Ride" today, and it is great fun! The turns go by really quickly, making for a quick game that is fast-paced enough to hold everyone's attention even when it isn't their turn. However, each player has 45 trains to keep track of, which can get a bit messy. One of last year's Featured items on Thingiverse was a Ticket to Ride Locomotive Tray by princeofwands, which was updated and improved this year in HunterGreen's Ticket to Ride Rack design. However, both of those designs use a lot of plastic and take a long time to print. Today we designed a version in Tinkercad that uses far less material and prints in about half of the time, based loosely on the concept of our previous H-Tree Dish.


STL file: http://www.geekhaus.com/makerhome/day120_tickettoridetray.stl
Tinkercad link: https://tinkercad.com/things/cBtic9P91D4-day-120-ticket-to-ride-tray
Thingiverse link: http://www.thingiverse.com/thing:213031

Settings: MakerWare .3mm/low in just under an hour, without a raft. I added large "Helper Disks" (see under the MakerWare File menu, in the Examples category) to the corners to keep the model from peeling up, and cut off the disks after printing. Even with that I had to shift the model to the left of my build plate, since things always print funny for me in the bottom right corner for some reason, no matter how much re-leveling I do.  Maybe it is time to consider a glass build plate...

Technical notes: Now that I'm learning to use OpenSCAD I am starting to feel that things like this are a real pain to make in Tinkercad, especially if a lot of tweaking and re-aligning is involved. It's a lot like the difference between using LaTeX or Microsoft Word; as a LaTeX junkie I am definitely feeling the current pulling me a little bit more towards OpenSCAD every day.

Monday, December 23, 2013

Day 119 - DSi Stylus Holder

C recently finished saving up for his Nintendo DSi (see Day 18 and Day 19 from way back in September), and apparently it is necessary to have multiple styluses (styli?) so that you can change colors and lose them and things. Today we printed a small holder for them, designed in Tinkercad with their wonderful new "Extrusion" Shape Generator.



Settings: MakerWare custom profile to get a base and 2-layer sides but no top, in just a couple of minutes. Details on the profile are below.

Technical notes, Tinkercad flavor: The new "Extrusion" Shape Generator allows you to change the outline of a cylinder with a four-anchor Bezier curve. This is the first time it has been possible in Tinkercad to stretch a shape around by anchors and their tangent lines! Perhaps in the future we can get more handles and/or the ability to do this right on the workplane, add or remove handles, etc etc. This is a great step in the right direction for Tinkercad. Tinkercad also added a Ring Shape Generator and three types of Text, as they explain in this blog post.

Technical notes, MakerWare custom profile flavor: To get a solid base and just two layers around the outside of the shape, we started with the "Low PLA" profile in MakerWare 2.4.1.35 and changed the following lines in the profile:
"doRaft": false,
"infillDensity": 0,
 "roofThickness_disabled": 0,
 "roofLayerCount": 0,
 "floorThickness": 1.1,

Sunday, December 22, 2013

Day 118 - Poly-Snaps Icosahedron

I always find the icosahedron the most difficult polyhedron to assemble with modular tiles. It is so close to spherical that the angles make assembly difficult; putting something together on one side tends to dislodge something on the other side. If you've ever assembled modular origami polyhedra then you know what I mean. It's possible with the compact Poly-Snaps we've been using over the past few posts, but the result it not that pretty. After much trial and error we finally found a lighter, larger style of Poly-Snaps that easily makes an icosahedron without hurting your hands or requiring pliers to put together, yet stays together well until you want it to come apart. The key to the stability is the fact that the tiles have five snaps on each side instead of three. For a dynamic classroom setting I think these lighter tiles would work very well.


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

Settings: MakerWare .3mm/low.

Technical notes: These lighter, larger tiles were made with the Poly-Snap Customizer settings below.
Sides = 3
Snaps = 5
Side Length = 50
Thickness = 2
Border = 4
Clearance = .12
Lengthen = 1.5

Saturday, December 21, 2013

Day 117 - Poly-Snaps Icosiodecahedron

Our fifth Poly-Snap example is the Icosidodecahedron, a semi-regular polyhedron with twenty triangles and twelve pentagons. It's sort of like a mini-Buckyball with triangles in place of the hexagons. Today's new model looks nicer and fits together better than our old snap-tile model from Day 89, and in addition you don't have to worry at all about which types of pentagon or triangle tiles you have along the way, since the Poly-Snaps all have the same snap configuration.


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 default sturdy tile setting in the Customizer again, as below. If you have sensitive hands or want to easily take apart and put together the model over and over again, then I recommend either a lower Thickness or a higher Clearance. Test things out with a couple of tiles and see what you like best.
Sides = 3 and 5
Snaps = 3
Side Length = 25
Thickness = 3.5
Border = 3.5
Clearance = .17
Lengthen = .3 

Friday, December 20, 2013

Day 116 - Poly-Snaps Snub Cube

A "snub polyhedron" is a model obtained by adding triangles between the faces of another polyhedron. For example the Snub Cube below is like a cube whose six square faces have been exploded outward, with 32 triangles filling in the gaps:


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

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

Technical notes: Again we used the standard "compact" customizer settings. A pair of needle-nose pliers was needed to get the model together the first time, as the tiles don't have much clearance with these settings. (Actually for some of these we probably used Clearance = .15, since for some reason tiles with fewer sides seem to require less clearance.)
Sides = 3 and 4
Snaps = 3
Side Length = 25
Thickness = 3.5
Border = 3.5
Clearance = .17
Lengthen = .3

Thursday, December 19, 2013

Day 115 - Poly-Snaps Truncated Octahedron

Today we "truncate" yesterday's octahedron. Truncating basically means that we slice off the corners of the object. The result here is semi-regular, meaning that each face is one of two regular polygons and that the same configuration of polygons surrounds each vertex. This Truncated Octahedron is composed of six squares (each the result of slicing off one of the six vertices of the octahedron) and eight hexagons (each the result of the original eight triangular faces of the octahedron getting sliced off at each corner). Compare to the model of this polyhedron we made in Day 88 with the old snap-tiles; notice here that on each side we have the same number of snaps, whereas in the older model we had various 2- and 3-snap configurations on the edges of the square and hexagon faces.


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

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

Technical notes: After yesterday's fiddly tiles we return to the compact, sturdy tiles from the day before, with the Customizer settings below.
Sides = 4 and 6
Snaps = 3
Side Length = 25
Thickness = 3.5
Border = 3.5
Clearance = .17
Lengthen = .3

Wednesday, December 18, 2013

Day 114 - Poly-Snaps Octahedron

Our second Poly-Snaps model is an Octahderon, with eight triangular faces. Compare with the Hinged Octahedron from Day 82, which is beautiful and prints in one piece, but has variable snap-numbers on its open edges and uses up a lot more material. Today's model makes use of the customizability of the Poly-Snaps, changing to very thin faces with large borders.


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

Settings: MakerWare .3mm/low in almost no time at all.

Technical notes: Our goal here was to make something very light and easy to print quickly in large quantities, to make classroom use easier. However this particular choice of settings was not good for larger models with more sides. Some tinkering and possibly a redesign is still necessary to find a way to print very thin Poly-Snaps that actually stay snapped together.  But for the record, here were the Customizer settings we used for this model:
Sides = 3
Snaps = 3
Side Length = 25
Thickness = 1
Border = 5
Clearance = 0
Lengthen = 1.0

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:


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!

Monday, December 16, 2013

Day 112 - Tetris T's

I like the rounded and nicely-spaced design of 3DAndy's Pentominos on Thingiverse, but wanted to print some tetrominos instead, for math/puzzles (for example, polyomino packing problems) and for future Tetris-related art projects.  Since 3DAndy was nice enough to post his OpenSCAD code, it was easy to modify his pentomino-T into a tetromino-T.


STL file: http://www.geekhaus.com/makerhome/day112_tetrisT.stl
Thingiverse link: http://www.thingiverse.com/thing:212995

Settings: MakerWare .3mm/low, with 8 T's printing in 45 minutes and weighing only 16 grams. Tetris pieces is a great "stash-busting project" for those of you with lots of little scraps of filament that are too small for any normal print job.

Technical notes: Download the OpenSCAD code here or cut and paste from the below.

// mathgrrl tetrominos - example with Tetris "T"
// based directly on 3DAndy's pentominos

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

//resolution
$fn=32;

//dimensions
length = 10;
radius = 1;
space = 0.2;

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

//render an instance of the Tetris "T"
tetromino_T();

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

//define the blocks and connectors that make the Tetris "T"
module tetromino_T() {
union() {
// the blocks
translate([0,0,0]) 
myCube();
translate([length,0,0]) 
myCube();
translate([2*length,0,0]) 
myCube();
translate([length,length,0]) 
myCube();
// the connectors
translate([(0.5)*length,0,0]) 
myConnect();
translate([(1.5)*length,0,0]) 
myConnect();
translate([length,(0.5)*length,0]) 
myConnect();
}
}

//module for making the blocks
//eight spheres translated to the corners of the desired cube
//then convex hull of those spheres makes a rounded cube
module myCube() {
dist = length/2-radius-space;
hull() {
translate([dist,dist,dist]) 
sphere(r=radius);
translate([-dist,dist,dist]) 
sphere(r=radius);
translate([dist,-dist,dist])
sphere(r=radius);
translate([-dist,-dist,dist]) 
sphere(r=radius);
translate([dist,dist,-dist])
sphere(r=radius);
translate([-dist,dist,-dist]) 
sphere(r=radius);
translate([dist,-dist,-dist]) 
sphere(r=radius);
translate([-dist,-dist,-dist]) 
sphere(r=radius);
}
}

//smaller cubes used to connect adjacent blocks
//space between blocks is small enough that no support is needed to bridge the gap
//even though these hang in the air between the blocks they connect
module myConnect() {
translate([space+radius-length/2,space+radius-length/2,space+radius-length/2]) 
cube([length-2*space-2*radius,length-2*space-2*radius,length-2*space-2*radius]);
}