Welcome to MakerHome

Current mission: If you're new to 3D printing, where do you start? This summer we'll go from baby steps to punk-rock disobedience with the MakerBot Replicator Mini!

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.

Tuesday, July 29, 2014

Day 337 - Calvin 3D scan!

We recently got a scan of Calvin's head at the 3D Photo Booth in the MakerBot Retail Store on Mulberry Street in NYC. About 18 months ago we got a scan at the same location (see this JMU MakerLab post), and the technology at the 3D Photo Booth has changed significantly for the better. This scan is a full 360 degrees around, and even the curly mop of hair looks great:


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

Settings: Printed on a MakerBot Replicator 2 at .3mm/low with raft and supports.

Monday, July 28, 2014

Day 336 - Pile of Pikachu

Here's why you work so hard (see yesterday's post) to get a reliable print at 50% size: Because you need a lot of them! Young C has been spending a lot of time playing Pokemon at the Brooklyn Strategist (one of the best places on earth!) and will be bringing these to the next tournament:


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

Settings: Printed four at a time on an Afinia H-Series with .3mm layer height.

Sunday, July 27, 2014

Day 335 - Low-Poly Pikachu

Today's print is FLOWALISTIK's nicely stylized Low-Poly Pikachu model from Thingiverse. The design of this model is great, and just like the ones we printed on Day 282, FLOWALISTIC made very nice choices for the few polygons in the model. We wanted a very small model so we printed it at half size. It's adorable. Pika pi!


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

Settings: This model was printed with our loaner Afinia H-Series printer at 50% scale, in beautiful ABS yellow!

Technical notes, remeshing flavor: Because everything I do is a total hack, it took me the better part of an afternoon to strengthen this tail. Here is a before-and-after shot with the original FLOWALISTIK model on the left and my strong-tail hack on the right:


I tried to take the easy way out and add a block or wedge to the tail using Tinkercad, but I couldn't seem to do that without it looking weird, so I decided to go the infinitely more complicated MeshLab/TopMod route. In MeshLab it turned out that all the normals were inside-out (not that that had anything to do with the tail problem):


So I flipped them with "Invert Faces Orientation" under the "Normals, Curvature, and Orientation" menu:


Then I exported the model as an OBJ so that I could load it into TopMod. Using the "Connect Edges Mode" I selected face-edge pairs to connect in a symmetric way around the tail. In the picture below, the three triangles you see at the join of the tail are what I added to the model:


That sounded really easy when I just typed that but it took me a long time to figure out how to make that work in TopMod, and along the way I tried a lot of other things that failed miserably. In fact, even this was a sort of failure, because adding those three triangles caused some nasty non-manifold problems. I exported from TopMod and imported back into MeshLab so I could run "Remove Faces from Non-Manifold Edges" and a bunch of other stuff from the "Cleaning and Repairing" menu (see Day 148, for example). Even after that, something was still crazy and the model wouldn't slice right, so I went to my last resort strategy and imported the model to Tinkercad, in the hopes that re-exporting the model would magically fix the problem. AND IT DID, thank goodness.

Those of you with actual skills out there, please don't laugh at my stumbling through the dark. Sometimes I think the whole point of this blog is to show that you can muddle through most things even if you have no idea what you're doing, as long as you keep plugging along. Follow me, I have no idea what I'm doing! On the other hand, if you know what you are doing then feel free to leave a comment so I can be smarter about this next time...

Saturday, July 26, 2014

Day 334: Snap!

We printed ZortraX's Zortrax Buckle from Thingiverse for the sole purpose of hearing that satisfying *snap* that these types of buckles make. Can the snap be 3D-printed? Yes it can! This buckle works perfectly and makes a lovely snap. The buckle then unsnaps very nicely and seems to be holding up very well under repeated use. This is a great design!


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

Settings: We printed this on a Replicator 2 with .15mm layer height, since that most closely matched the instructions for the model. To get .15mm layer height we printed on .1mm/High setting and then bumped up the layer height to .15mm.

Friday, July 25, 2014

Day 333 - Friday Fail: Eighteen pieces edition

Today we printed ATDT8675309's Cube Puzzle on Thingiverse, which consists of eighteen rods that assemble into a nice regular structure. Except that we failed at the assembly part! Maybe we're all thumbs, had too much coffee, aren't as clever as we thought we were, etc...


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

Settings: Printed on a MakerBot Replicator Mini at Standard settings with raft, and layer height bumped up to .3mm.

UPDATE: ATDT8675309 has put up a video walkthrough of the solution to this puzzle. Thank you, that was very helpful! My difficulty was with keeping the pieces together on the first few steps; if you can get past that then the pieces fit together in a very regular way with of course the one different piece being able to slide in at the end. Here's a hint for keeping everything aligned at the beginning: put two of the pieces underneath the sides to keep the cross-pieces at the correct height until the puzzle starts being rigid. The puzzle fits together just right with perfect clearance, and stays together nicely after being assembled. Here's the assembled model:

Thursday, July 24, 2014

Day 332 - Six piece box

A few days ago we printed richgain's Printable Interlocking Puzzle #1, and today our print is his Printable Interlocking Puzzle #2. For me this was actually a pretty difficult puzzle to put together. However the pieces fit together very well with good clearances; nothing needs to be forced. The model looks nice even when all the pieces are printed in the same color, because with translucent filament the pieces have different looks and finishes from different viewpoints. This is a very clean model, and nice enough to give as a gift.


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

Settings: We printed these on a Replicator 2 with .2mm layer height, as recommended in the instructions for the model.

Wednesday, July 23, 2014

Day 331 - POP Customizable Function Bracelet

Trading sine and cosine turns yesterday's POW bracelet into this POP:


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

Settings: MakerBot Replicator 2 on .3mm/low.

Technical notes, math flavor: Yesterday's POW bracelet was based on this function:


If we put the "2" weight on the cosine instead of the sine then we get the function for today's bracelet:


If you look at the POW and the POP bracelets together you can kind of see how each one is sort of "inside-out" from the other. Of course the function we wrapped around the circle to make the POP bracelet needed a modified shift, amplitude, and frequency:


Finally, here it is wrapped around the circle as a parametric function:

Tuesday, July 22, 2014

Day 330 - POW Customizable Function Bracelet

Today we kick the math up a notch and use a combination of two trigonometric functions to define a bracelet curve. POW!


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

Settings: MakerBot Replicator 2 with .3mm/low resolution and raft.

Technical notes, math flavor: The main thing that characterized each of our previous bracelet designs was a change of frequency. The TRI bracelet (Day 320) used a trigonometric function with a very low frequency of 3:

1+sin(3t). 

The SUN bracelet (Day 328) allowed a variable frequency:

1+sin(frequency*t). 

The RIB bracelet (Day 329) used a very high frequency of 72:

1+sin(72*t).

This time we're going to not only change the frequency, but also fundamentally change the function by incorporating a cosine as well:

1+sin(2*frequency*t)*cos(frequency*t). 

Notice that the frequencies for the sine and cosine functions are different; this is what gives our bracelet its interesting shape.

Technical notes, OpenSCAD flavor: Below is the full code for the POW bracelet. We've separated the code for the wave function and the wrapping of the wave function, and used the more complicated trigonometric function described above.

// mathgrrl function bracelet - POW design

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

$fn = 24*1;
step = .25*1; // smaller means finer

// Thickness, in mm 
th = .4;

/////////////////////////////////////////////////////////
// size parameters

// Diameter of the bracelet, in mm 
diameter = 60; 
radius = diameter/2;

// Height of the bracelet, in mm 
height = 10;

/////////////////////////////////////////////////////////
// style parameters

// Amplitude of the wave, in mm
amplitude = 6;

// Frequency of the wave 
frequency = 12;

/////////////////////////////////////////////////////////
// define the wave function

function f(t) = 1+sin(2*frequency*t)*cos(frequency*t);

/////////////////////////////////////////////////////////
// define the wrapped wave function

function g(t) =  
   [ (radius+amplitude*f(t))*cos(t),
     (radius+amplitude*f(t))*sin(t),
     0
   ];

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

// the bracelet
linear_extrude(height=height,slices=height/.4)
function_trace(rad=th, step=step, end=360);

/////////////////////////////////////////////////////////
// module for tracing out a function

module function_trace(rad, step, end) {
 for (t=[0: step: end+step]) {
  hull() {
   translate(g(t)) circle(rad);
   translate(g(t+step)) circle(rad);
       }
   }
};

Monday, July 21, 2014

Day 329 - RIB Customizable Function Bracelet

This time we've fixed the frequency at 72, the amplitude at 2mm, and left the diameter, height, and slant variable to make a RIB bracelet. This bracelet is not stretchy but it is very fluid and bends/flattens easily, making it more comfortable to wear than the TRI (Day 322) or the SUN (Day 328).


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

Settings: MakerBot Replicator Mini using Standard settings and raft, with layer height bumped up to .3mm.

Technical notes, slant flavor: In this design you choose an integer slant from -3 to 3 that represents the number of ridges that the twist extrude moves through. Doing this is easy by setting the twist extrude degrees to the value slant*360/frequency. Since the frequency (number of ridges) for this design is fixed at 72, each ridge takes up 5 degrees. Therefore a slant of 3 translates to a twist extrude to the left 3*5=15 degrees, and a slant of -3 makes a twist to the right 15 degrees. 

Sunday, July 20, 2014

Day 328 - SUN Customizable Function Bracelet

Continuing the bracelet series from Day 320 and Day 322, today we printed a new customizable sun-shaped variation. The bracelet is a little bit stretchy but not as much as emmett's classic Stretchlet design.


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

Settings: Printed on a Replicator 2 and a Replicator Mini at .3mm layer height, with raft. Note that no fancy settings are needed because the design is already just an outline of a bracelet.

Technical notes, design upgrade flavor: In a comment to Day 322, kitwallace mentioned a much nicer redesign using ruled surfaces which he described on his blog The Wallace Line. I've got a couple more completed bracelet designs to post and then I'm going to switch to kitwallace's method. Very cool!

Technical notes, math flavor: This bracelet differs from the TRI design on Day 320 in that the trigonometric function has a variable frequency instead of a fixed frequency of 3. Specifically, we are wrapping the function

radius+amplitude*(1+sin(frequency*t)))

around the circle to make these bracelets. The twistiness of the transluscent blue and opaque white bracelets in the picture come from a twist during the OpenSCAD extrude process, not from the mathematical function. However when we upgrade to code based on kitwallace's suggestion above, we will be able to encode the twist - as well as many other transformations - mathematically.

Saturday, July 19, 2014

Day 327 - Saturday guest: AuntDaisy and the Electra

Today's post is contributed by Austin Day, aka AuntDaisy on Thingiverse, from Aunt Daisy Scientific Ltd., UK. AuntDaisy is the designer of the Trilobite articulatum model that we printed on Day 130 as well as the beautiful 3D-printable modular origami Electra model that we printed on Day 323. Thank you Austin/AuntDaisy for guest posting today!

Why 3D print an origami model?
Like most families, we love to decorate our Christmas tree and have spent many happy hours making origami stars, angels and woven Danish Hearts. My favourite star has to be David Mitchell’s beautiful Electra - it’s an incredibly symmetrical model, and, unlike some modular origami models, is surprisingly robust. But, when you have children, you soon find that things get squashed or shot at with Nerf bullets :-)  While straightening out Electra for the umpteenth time, I thought – why not 3D print this?

Modular Origami
Most people think of origami models as being folded from a single sheet of paper (for example, Robert J Lang’s creations), but modular origami joins lots of small, folded modules together to make a larger model that is often mathematical in style. Kunihiko Kasahara’s Origami Omnibus and David Mitchell’s Mathematical Origami are good introductions to Maths & origami. If you want to be more adventurous, then I recommend David Mitchell’s Paper Crystals, now in its second edition - “Electra” has appeared in both.

Electra - what is an Icosidodecahedron?
Electra is a skeletal polyhedral model based on the 60 edges of an icosidodecahedron – a mixture of a dodecahedron (with 12 pentagonal faces) and an icosahedron (20 triangular faces). When assembled, rings of modules dance around each other – five membered rings (pentagons) alternate with three (triangles), but never meet - except at discrete corners (and, even then, under supervision). There are also rings of ten modules forming great circles (like the equator) that run around the whole polyhedron. As you turn Electra in your hands, mirror, 2-fold, 3-fold, 5-fold and even partial 10-fold symmetry magically appears – it’s not surprising that some quasicrystals, with their forbidden 5-fold symmetry, have atoms positioned around an icosidodecahedron.


How was the 3D model designed?
I started with the X-shaped paper modules and soon found that the top point was a right angle, the tops of the tabs & pockets were at 45 degrees to the base, and the angle between the arms of the X was roughly 60 degrees. Also, ten of the modules made a ring, so the angle between the tilted ends of the pockets (for the tabs) must be 36 degrees (=360/10).


The next step was to draw it on paper and calculate the angles & lengths properly. This is where my (spherical) geometry came unstuck!  Why wasn’t the X angle exactly 60 degrees?  It looked to be 60 degrees, three of the modules met to make a triangle - it must be 60 degrees… It wasn’t - that little tilt between the modules made the maths “messy”.

I started trying to calculate the angle on paper, then moved to OpenSCAD, but soon gave up – it was great for designing in, but couldn’t tell me when the modules touched. Brute force and Solidworks was the approach that worked – tweaking the X angle until a ring of 5 modules and another ring of 3 modules fitted together properly. And the “60” degree angle was really 63.434957…   [Or arccos(1/sqrt(5)) = arctan(2), which is 180 degrees minus the angle between the faces of a dodecahedron. Silly me for not knowing!]

The final step was to put little catches on the tabs so they locked in to a pocket on the opposite side of the module. These proved to be tricky to print, very fragile, and left horrible lumps and bumps on the outside of the module. So I experimented with smooth tabs – they worked much better. A bit more tweaking of the overall module thickness, the tab thickness (40% of this) and the pocket width (1/3) and we’re ready to print and assemble a whole model.


Assembly & colour schemes
There are lots of ways of colouring Electra – David Mitchell recommends chaotic / random colouring or 5 contrasting colours. If you go for 5 colours, then the 6 modules of a particular colour form the corners of an octahedron – a beautiful, hidden symmetry that might have tickled Dürer or Escher, it certainly surprised me.

For the assembly, there’s a simple rule – make a ring of 5 modules, then add modules to make rings of three around them, then 5-rings around the 3’s and so on... For the 5 colour version, you also have to make sure that the colour on the corner of a 5-ring matches that on the opposite corner of a 3-ring.


Once the first model was made, I experimented with changing the outside of the modules – over on Thingiverse there’s a spherical version, amongst others. Or we can be more colorful, changing the filament colour after, say, 25%, 50% & 75% of printing; for example, here are some three-color modules:


And the resulting 3-color Stripey Electra!


Conclusions
To sum up – origami and 3D printing do mix. Both can produce beautiful mathematical models - but Murphy’s law rules and it sometimes takes perseverance and practice. Oh, and a tame mathematician is always useful.  :)

Thanks to David Mitchell, Electra now comes in two flavours – the 30 module vanilla shown here; and twice as much fun “Electra 60” - based around a rhombicosidodecahedron with triangles, squares and pentagons. This is where paper beats plastic – paper will happily cope with changes in the module angles…  but I can’t!

Acknowledgments
A big thank-you to Laura Taalman for her fascinating blog and inspirational models – and for inviting me to be a guest blogger. Also to David Mitchell for his beautiful models and origami books.

References
David Mitchell’s “Electra” http://freespace.virgin.net/dave.mitchell/galleriesmodulardesigns.htm
David Mitchell, "Paper Crystals”, 2nd edition, http://www.amazon.co.uk/dp/0953477495 or www.amazon.com/dp/0953477495
David Mitchell, “Mathematical Origami: Geometrical Shapes by Paper Folding”, www.amazon.com/dp/189961818X
Kunihiko Kasahara’s “Origami Omnibus”, www.amazon.com/dp/4817090014
My 3D printed version of Electra, http://www.thingiverse.com/thing:127857
The British Origami society, http://www.britishorigami.info/
Origami USA, https://origamiusa.org/

Friday, July 18, 2014

Day 326 - Friday Fail: Gyro edition

Guess what, I started a Gyro project.


As usual I'm starting with a big pile of fails. My goal is to make a reliable gyro model in Tinkercad to use in introductory 3D-printing workshops. I'd much rather use OpenSCAD so I could parametrize the tolerances, but I want something that a beginner could pick apart and modify/remix by adding fun shapes in Tinkercad. (Shout-out to Josh Ajima@designmaketeach on Twitter, for this great idea!) Looking for the Goldilocks rings - not fused together, not falling apart; just right. Stay tuned...

Thursday, July 17, 2014

Day 325 - Szilassi polyhedron

Today we printed a rather upsetting shape called the Szilassi polyhedron, a model by richgain on Thingiverse. (Day two of our two-day richgain series!) The Szilassi polyhedron has seven hexagonal faces, but the hexagons are not regular, and even worse, aren't even convex. However, these faces have a special property: every pair of faces shares an edge. Here is the crazy thing:


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

Settings: MakerWare .3mm/low on a Replicator 2, with raft but no support.

Technical notes, faces flavor: Being used to nice, symmetrical, regular polyhedra, I find it difficult to wrap my mind around this nasty awful thing. Luckily, there is a nice picture of the seven faces at minortriad.com. Pro tip: Don't try to color the faces in with a sharpie because it will look like crap. Sharpie bleeds through the layers of the PLA to the other faces. I did know that this would happen and yet I tried to Sharpie up my model anyway. Sigh. If you want to paint the model that would probably be fine, but only if you haven't already ruined your model with Sharpies and only if you're good at painting, which I'm not.


Technical notes, math flavor: Each one of the seven non-regular non-convex hexagonal faces of the Szilassi polyhedron meets every other face at some edge. This means that if you want to color each face so that no two faces of the same color ever meet, then you must use at least seven colors; all seven of the hexagonal faces need to be different colors, since all of the faces meet every other face at some edge. Topologically the Szilassi polyhedron is equivalent to a torus (donut-like) shape. This means that there is some subdivision of the surface of a torus into regions so that seven colors are needed in order to color the regions properly, that is, without two regions of the same color ever touching. In fact, according to the Seven Color Theorem, seven is the largest number of colors that would ever be needed to properly color a subdivided torus, so the nasty Szilassi polyhedron is an example of a worst-case-scenario for torus-coloring!

Wednesday, July 16, 2014

Day 324 - Three piece box

Today we printed richgain's Interlocking Puzzle #1 from Thingiverse. Actually we printed it three times, in three different colors, so that we could make three multi-colored versions. The puzzle is easy, so a good simple gift for anyone. The three together make a nice set since the colors are on different pieces in each cube.


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

Settings: MakerBot Replicator Mini on Standard settings, .2mm layer height. This is the recommended layer height in the Instructions for the model. For designs where tolerance is important it is really key to use the resolution that the designer used! The fit was perfect; thank you richgain!

Puzzle hint: Try putting the two larger pieces together first, to see where the smaller piece has to go.

Tuesday, July 15, 2014

Day 323 - Printing huge with a Mini: Modular origami Electra

Today we continue our series of posts investigating how we can get the most out of a MakerBot Replicator Mini. As its name implies, it's not a large printer and isn't made for printing large things. Which of course makes me want to print giant things with it. I guess I'm sort of a jerk. Probably if I had a giant 3D printer I'd insist on using it to print really tiny things.

So how you print something large with a small printer? One way is to print it in pieces, so today we printed AuntDaisy's stunning modular origami-inspired Electra model from Thingiverse. Here it is next to a tiny, tiny Penny Trap:


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

Settings: Printed on a MakerBot Replicator Mini with standard settings and .3mm layer height. It worked perfectly. I mean no support, popped off the raft, and most importantly the pieces fit together with a capital P, and that rhymes with P and stands for Perfectly. For the tolerance to work that well in a model right off the download is really amazing. The pieces click together and don't come apart unless you pull them apart on purpose. The assembled model is sturdy enough to toss in the air. This kind of perfection doesn't happen by accident, it happens because someone took the time to design it, fail, and re-design it until it works. That someone is AuntDaisy and I'm very happy to say that he has agreed to do a guest post about his perfect Electra design, which will appear later this week.

Technical notes, design flavor:
AuntDaisy's design is made up of 30 identical pieces that snap together. It's based on David Mitchell's "Electra" model, with 3D-printed pieces taking the place of the folded paper modules. Here is what the pieces look like on the surface of the moon my desk:


The model prints 6-up in pretty much exactly the area of the Mini's build plate. You print five copies of this and click the pieces together:


Stay tuned for AuntDaisy's post about how she designed this fantastic model!

Monday, July 14, 2014

Day 322 - Updated "TRI" bracelet, now with wavy-control

It occurs to me that some people like things more wavy than others. So today we're updating the Customizable TRI Function Bracelet design so that amplitude becomes a modifiable parameter. For example now you can make this wavier TRI model:


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

Settings: Printed on a MakerBot Mini with .3mm vanilla (see Day 320) in MakerWare/Desktop.

Technical notes, OpenSCAD flavor: The only change we made to the code from Day 320 was to make the "4" a modifiable parameter called amplitude. Here is the relevant code:

// Amplitude of the wave, in mm (suggest between 4 and 8, with higher numbers being more flash but less practical; higher amplitude can allow smaller diameters)
amplitude = 8; 

/////////////////////////////////////////////////////////
// define the wrapped wave function

function g(t) =  
   [ (radius+amplitude*(1+sin(3*t)))*cos(t),
     (radius+amplitude*(1+sin(3*t)))*sin(t),
     0
   ];

Sunday, July 13, 2014

Day 321 - Cylinder maze

Today's design is wizard23's A-Mazing Box on Thingiverse. It needs some breaking in but it is fun to use and looks great:


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

Settings: We printed this one on .2mm/Standard because it seemed like accuracy and fit could be very important. Things are tight but I think over time the action will become smoother.

Saturday, July 12, 2014

Day 320 - TRI Customizable Function Bracelet

Today we have the first of many posts in a customizable bracelet series, with a bracelet design called TRI. It has a nice wavy shape that is based on a trigonometric function:


The wavy shape makes this bracelet sit very nicely on your wrist. If you get it sized just right then it will fit over one of your hands but not the other, due to the way your thumb joint fits through the twist. In this picture the white TRI bracelets are .4mm thick, the pink one is a very sturdy .8mm thick, and the army green one is a wispy .2mm thick (I expect it to break soon):


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

Sizing hints: I've got big hands for a lady so mine is sized at 65mm diameter and is the "Large" demo model at the link above; that's probably the average man size for this bracelet. I'd wager that average woman size is 60mm, which is "Medium" at the link above, and that average child's size is 55mm, which is "Small". But you can size it however you like in the Customizer link, and make whatever works for you!

Settings: Printed on a MakerBot Replicator Mini with what from now on I will call ".3 vanilla", by which I mean Standard settings with raft but no supports, and all options at default except for bumping layer thickness up to .3mm.

Technical notes, printing flavor: The TRI bracelet is what made the sizable pile of fails on Day 312. My original motivation was to make bracelet designs that are already the desired thickness, as opposed to solid filled-in discs whose shell thickness had to be set within your printer's software. I had some trouble figuring out how to print bracelets like emmett's classic Stretchlet bracelet when they were in this type of hockey-puck format:


Although I now know how to deal with this, I wanted to make some bracelets that people could print right away on whatever machine they were on, and even if they were beginners. Another reason I wanted to move away from the printing-shells-of-hockey-pucks method is that when I remove infill, floor, and roof to print such a bracelet, my machine prints a raft all across the inside even though there is nothing to be printed there. This leads to a lot of wasted plastic, not to mention wasted time. It took a while for me to figure out how to reliably construct a bracelet shell, and in the end of course it came down to some math!

Technical notes, math flavor: The key idea is to know exactly what curve you want to trace out, and then to trace it out with a particular desired thickness. If you don't trace out the curve at exactly the scale you need then the thickness will be corrupted when you scale afterwards. The path that makes the rounded triangle cross-section of this bracelet is defined by a parametric curve whose components are based on the trigonometric function 1+sin(3t):


The sine function moves up and down in a wave that is controlled by the numbers in the expression. The multiplier 3 determines the frequency of the graph, that is, the number of times the graph makes a full up-and-down cycle as we move from 0 to 2*pi. Normally the sine function would have heights varying from -1 to 1, but the "1+" in the function above shifts things up so that the graph instead has heights between 0 and 2.

We can modify this function further to get a transformation that will match style and size parameters like wrist size (here 60mm diameter) and wiggly-ness (here "4"):


The constant multiple of 4 determines the graph's amplitude, which is the vertical distance from its center to the top of its peaks; the graph of 4(1+sin(3t)) would have heights varying from 0 to 8. Finally, the 60 determines a shift upwards 60 units, which is why the graph above has heights varying from 60 to 68.

To wrap this curve around a circle we create a parametric curve whose first coordinate is the function above times the cosine function, and whose second coordinate is the function above times the sine function. Think of it as a weighted version of the parametric curve (cos t, sin t) that traces out the unit circle, with our function 60+4(1+sin(3t)) providing the "weight" on the two coordinates, pushing the shape in and out.


Technical notes, OpenSCAD flavor: The code for the TRI bracelet uses the module function_trace to trace out the parametric curve we discussed above. Specifically, function_trace creates a series of tiny circles along the parametric curve and then connects adjacent circles. The diameter of the circles is determined by the thickness parameter. The resulting 2-dimensional shape is then extruded with linear_extrude while twisting 30 degrees. In the Customizer you can enter your own custom values for thickness, diameter, and height to size and style the TRI bracelet.

// mathgrrl function bracelet - TRI MODEL

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

$fn = 24*1;
step = .25*1; // smaller means finer

// Thickness, in mm (recommend between .2 and .8)
th = .4;

/////////////////////////////////////////////////////////
// size parameters

// Diameter of the bracelet, in mm (should exceed the wide diameter of your wrist so that you can get the bracelet over your hand)
diameter = 60; 

radius = diameter/2;

// Height of the bracelet, in mm (along your wrist)
height = 20;

/////////////////////////////////////////////////////////
// define the wrapped wave function

function g(t) =  
   [ (radius+4*(1+sin(3*t)))*cos(t),
     (radius+4*(1+sin(3*t)))*sin(t),
     0
   ];

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

// the bracelet
linear_extrude(height=height,twist=30,slices=height/.4)
function_trace(rad=th, step=step, end=360);

/////////////////////////////////////////////////////////
// module for tracing out a function

module function_trace(rad, step, end) {
 for (t=[0: step: end+step]) {
  hull() {
   translate(g(t)) circle(rad);
   translate(g(t+step)) circle(rad);
       }
   }
};

UPDATE/CORRECTION: In the WolframAlpha images above, I should have used a translation of 30, not 60, because RADIUS IS NOT DIAMETER SAY IT WITH ME NOW.

Friday, July 11, 2014

Day 319 - Science Friday!

This afternoon I had the pleasure of being a guest on NPR's Science Friday with Ira Flatow, live in the NYC studio. Even cooler, the other guest was Bre Pettis, CEO of MakerBot!

For the show, the Science Friday group made a SCiFRI logo with MakerBot's new Printshop Typemaker app, and Bre printed in the studio during the segment. One of the things the Printshop app does is let you type anything you want, stylize its dimensions and look, and then export to a 3D-printable file. The app does a particularly good job of solving the problem that words have spaces between their letters, as well as the problem that letters have holes, by making the letters flare out from a hidden base platform. We needed a nameplate sign for our apartment so we used Printshop Typemaker to make one:


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

Settings: MakerBot Mini on standard settings with layer height increased to .3mm.

Here are some of the models live in the studio, with Ira looking up to see how much time is left in the segment:


And here's me and Bre outside the studio on the way out (had to get the "On-Air" sign in there!):



Thursday, July 10, 2014

Day 318 - Pythagorean blocks

Today we printed xoan's Pythagoras' 3-4-5! model from Thingiverse, which was one of the many entries to the Makerbot Academy Math Manipulatives Challenge, which called on modelers to design hands-on mathematical tools for K-12 classrooms. I love the simplicity of this model, and that it illustrates the Pythagorean Theorem so elegantly.


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

Settings: MakerBot Replicator Mini on .3 layer height with raft but no support.

Technical notes, math flavor: Of course the entire point of this model is that you can also arrange it like this:


The point is that the triangle in the middle is a right triangle, and therefore the sum of the squares of the lengths of its legs is equal to the square of the length of its hypotenuse. In this case the triangle is what's known as a "3-4-5 triangle", because its legs are lengths 3 and 4 and its hypotenuse is length 5. The square on the left has side length 4 and area 4^2 = 16, while the square on the bottom has side length 3 and area 3^2 = 9. The sum of those areas is 9+16 = 25, which is equal to the area of the larger square, which is 5^2 = 25. That's how this model illustrates what the Pythagorean Theorem says about the 3-4-5 triangle, namely that 3^2 + 4^2 = 5^2.

We chose this model because it is a combination of basic mathematics and 3D printing, and Today (July 10) I had the honor of speaking about both of those things on the closing day of the Opening the Gate 2014 Summer Institute for Mathematics Faculty Professional Development, hosted by New Jersey City University and Hudson County Community College. For the first part of the morning we talked about STEM retention in calculus, through precalculus and algebra remediation; for the second part of the morning we demoed the MakerBot Mini and talked about using 3D printing as a tool for STEM recruitment. Here are some of the conference fellows enjoying the 3D prints:


Wednesday, July 9, 2014

Day 317 - Vaas Vase

Zydac's stunning Delta Vase model on Thingiverse, which was based on architect Van Shundel Huis' Delta Vass piece. It's a really cool shape, with three angled planes making a "Y" at the base and a triangle at the top:


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

Settings: Printed on a MakerBot Replicator Mini with .3mm layer height but otherwise default settings. It took a long time, maybe over three hours? However I could print it full size and it is big enough to be a small windowsill planter.

Technical notes, Rhino/Grasshopper flavor: I came across this model while looking for some demo Grasshopper files to use in Rhino, to use in the unlikely event that I have enough free time this summer to learn how to use either of those things. Zydac was kind enough to include the Rhino 3D file and Grasshopper script with their model. Thank you Zydac, I will learn from this sometime in the future, I hope!

UPDATE: kitwallace has now designed a Customizable Delta Vase model with just a few lines of OpenSCAD code. Since it's in the Customizer we can "View Source" to see what he did. The side module takes a hull of four small spheres to make one of the faces of the vase, and the delta_vase module rotates and copies that face to make the vase. The The ground module just snips off the bottom so the model lies flat on the platform.

/* parametric Delta vase inspired by 
   http://www.thingiverse.com/thing:150482
   from the original design by Mart van Schijndel

   generalised to n sides

   Each side is constructed by hulling spheres positioned 
   at the corners of the plane of the face.  Three of the
   points are straightforward to position but the fourth
   needs to be placed so that the bottom edge is parallel
   to the top edge,
*/

// length of top edge
top=40;
// length of bottom edge
bottom=20;
// height of vase
height=50;
// wall thickness
thickness=1;
// number of sides
nsides=3;

module side(angle,top,bottom,height,thickness) {
   hull() {
        translate([top,0,height]) sphere(thickness);  
        rotate([0,0,angle])
            translate([top,0,height]) sphere(thickness);
        translate([0,0,0]) sphere(thickness);
        rotate([0,0,angle+(180-angle)/2])
            translate([bottom,0,0]) sphere(thickness);
    }
}

module delta_vase(nsides,top,bottom,height,thickness) {
    assign(angle=360/nsides)
    for (i = [0:nsides-1])
      rotate([0,0,i*angle])
         side(angle,top,bottom,height,thickness);
}

module ground(size=50) {
   translate([0,0,-size]) cube(2*size,center=true);
}

$fn=15;

difference()  {
  delta_vase(nsides,top,bottom,height,thickness);
  ground();
}