Digital Wanderings

here, there, everywhere

A crash course to become a 3D Printing guru

You’ve been asked to use 3D printing to make something extraordinary. And you have near zero idea of how it works. Good. The following might be handy.
It starts with a basic intro so that you can hook on to a few concepts, continues with recipes to make immediate use of these readily-available-in-almost-any-slicer-features, and lights up the fireworks by hinting on techniques to get more freedom in making the machine do whatever you want (+ tools to enable you doing that)

The “Basic” 3d printing workflow

This is how you use the machine as a dumb photocopier. What’s interesting here is to get a fairly good idea of how a “slicer”, “thinks”, and how it produces “gcode”.
Understanding this is a ladder to advanced uses of the machine.
First, a rough overview of the workflow :
  1. You model a volume with a CAD program (Sketchup, Rhino, Solidworks, OpenSCAD (i don’t expect you to know this one) …). How you do it is off-topic here.
  2. You save it as an STL file: Your favorite CAD program will do it with its secret sauce, and dump for you that STL, eg: a triangular mesh. Some will do it perfectly, others will not. In fine, you need to obtain a mesh (which is a surface) that perfectly (yes, perfectly) wraps a volume (it must be watertight). Each CAD programs has its quirks in doing that. Google is your friend.
  3. You slice the STL file, with a slicer program (obviously…). The output of that program will be a gcode file that lists, in the right sequence, all the movements (and other stuff) your blindly obeying 3D Printer will execute.
  4. That gcode file must be given to the machine, in some way. Sometimes you store it on a SD card, and sometimes you stream it over an USB cable (your favorite slicer has this ability, and there are other tools that can do that too).
  5. the machine reads the gcode line by line, and executes the operations (heat the nozzle, move, extrude, etc). The list of all possible gcode instructions is available here. Just remember that “G1” means “move to” and is followed by the coordinates it needs to move to.


Let’s zoom on step 3, “slicing”:

The slicer analyzes the stl file, layer by layer. Hence “slicing”.
For each layer, it is going to find the intersection between the layer and the stl 3d model. Let’s call that a contour.
In the plane where the contour lives, there’s a notion of inside and outside the contour.
Nothing extravagant, but it’s a very important notion in the slicing algorithms, as the whole strategy of transforming a slice into machine movements is based on this key info.

Of course, depending on the volume the STL represents, you can endup with many contours on each level …

And if your STL model is imperfect (not watertight or triangles not connected properly), the slicer will have a very hard time finding the contours. It will try anyway, and will make the gcode anyway, but you’ll endup making irrational things. You’re encouraged to tinker, but with STL files the effect is really hard control. Make clean STL files. Redraw your whole CAD model properly if your program doesn’t export clean stuff.

Inside and outside. As you may remember the printing process is rather slow, and the material expensive, and the user picky on the quality of the results…
So the slicer compromises with all of those. It builds what the contour represents by writing gcode instructions that will make the printer :
  • deposit material on the outer perimeter of the contour (the visible part of the object) in an as perfect as feasible manner (sparing you the details, ask if you need the info)
  • deposit material on inner perimeter of the contour. It does that quick and dirty, because you wont see it (it’s hidden by the outer permiter)
  • deposit infill material inside of the inner perimeter. It’s called an infill because it only wants to fill a percentage of the area it covers. Infills are there for something: they help in holding the piece together while it is being built, act as a scaffold for future layers, and give to your piece extra strength.
  • the slicer also takes care of the first and the last layers: those are a little bit special as they are meant to close the volume. The slicer does it by making a 100% infill on those… kind of.
  • and sometimes you need a scaffold because nothing in your model supports bits of the material you’re depositing for your perimeters. It’s called “support structure”, and the slicer will generate that for you.
There are some extra details to become an expert, however, for our purpose, these should already be a very good starting point.
Just keep in mind that the slicer allows you to vary each parameters for each of these, and that you can even request it to  to skip any or all of these features, or even, for example, if it starts with the perimeter before doing the infill, etc.

Regarding infills (as we will see that in a minute), those are generated by copy pasting a pattern, or by calculating that pattern based on some maths.

Slicing cookbook

That’s where it comes in handy. You can make use of these, as features for the extraordinary  product you’re making.
Recipe #1 – make a bowl / vase
You give the slicer a volume without any info of the thickness of the shell of your bowl. The bowl is drawn closed, but it will be produced open … ha.
To do so, you’ve got to tweak the default slicing settings, to come up with
  • no infill
  • no top layer
  • choose how many perimeters you want (just the outer one, or also with inner perimeters)

You don’t get great control over the shell thickness of your bowl, it has to be multiple of the diameter of the nozzle.

Also, you’ve got to check a little what’s going to happen: if your bowl has a complex form, you might endup with zones where pieces of the perimeters are not supported by anything. So, these bits will sag. Sometimes it’s nice, sometimes it’s not.
Recipe #2 : make use of the infill pattern
The infill patterns can be useful apart from their default structural and building tactics roles.
Take the time to explore the possibilities, it should trigger “eureka” moments.
Also remember that top and bottom layers are just infills at 100% filling (no gaps), and that you can choose a infill pattern to produce them, and that will leave a very remarkable pattern on your object.
So, how can you do that ?
You have two commonly available slicers. Cura and Slic3r (the 3 is an e, the coder is a heavy duty coder so weird things like that showup).
We’ll need both. So Install both….
Cura makes every effort to make slicing easy and robust. And most of the time it works. You will loose some of the advanced features (fancy infills) and it will fail on a few things (walls thinner than the 2x the nozzle diameter) but overall. These are annoyances, but the counterpart is that it does manage to fix awry STL files, to some extent, and you will get things done automagically more often than not. Don’t aim for the moon though.
On the other hand, you have Slic3r. It is packed with almost everything that has been though of in the open source world, and has tons of hardcore backers that keep it alive. However, it’s so rich in features that it can become overwhelming very quickly.
For this recipe we need advanced infilling patterns, so we will have to use Slic3r. You can find an overview here:
And, yes, you must read it.
Done ? Here are examples on how to make use of the infill to make your extraordinary stuff.
A louvre like block (no top / bottom)
A permeable block (permeability being controlled by the infill percentage …)
A complex 3d pattern using the octahedral infill option
Wait, there’s more examples. Some are going crazy with all these tweaks :
Making hair
Hairs are actually the toughest thing to model and to make. CAD software makers spends tons of money on finding algos that can do it (google SIGGRAPH to see how crazy this is), and machines have a hard time doing them.
See? By just being creative and a little bit of knowledge you can get that machine do amazing stuff.
I’m sure you will. Meanwhile, let’s push all this a little step further. The whole point is to make your envision what becomes possible. Finding how to do it is a longer process, and you can call for help (but you need to know what you want to do first right ?)

The “No CAD” approach

At some point in you wanderings you could be tempted to skip the CAD step, and skip the slicing step, to just generate directly the machine operations.
There’s two ways of doing that.
Either you make something that is inspired by how slicers do things. Meaning you find a way to generate layers and stack them. Either, well, we’ll see that in a minute. Let’s see how we can get rid of the slicer and DIY that.
We don’t expect you to have knowledge in programming, so we’ve built a little tool that solves that simplifies things. It’s not rocket science, but it does the trick. That’s how you can use it:
  • You give a set of images (or even a video … I’ve tried it with videos of bird flocks, it works)
  • And the tool will take each image, apply a contour filter (like photoshop)
  • And will writes gcode instructions that makes the printer follow those contours
  • If you wish we can do contours of contours too. There you go, you can do inner and outer perimeters.
It’s as simple as that. And that’s how this Gyroid form has been made, without even having to touch a CAD program.
//Start of digression
Speaking of which, the gyroid is an amazing beast, and here’s an interesting read about nature and that kind of structure – maybe off topic, maybe not. Anyway, that’s the link:
And you can pretend to be a high level mathematician by taking a quick look at n-periodic minimal surfaces, there and there.
//End of digression
Of course, generating the images one by one is a bit of heavy task to do by hand. Aouch. What you’re gonna do (song), what you’re gonna do …
Well you could with our little tool (and it would take me 15 min to implement it, just ask) mix two images (or more) in some creative way
The following is an example, but we can actually do anything. All that we’re doing is use the images gradients are controlling patterns to generate the contours (apologies for the headache, try to visualize that, it actually is a super powerful approach)
  • Image A represents a contour, that will be applied to each level
  • Image B is a gradient like drawing that represents at which threshold level we’re doing the contouring on image A
Et voilà.  You’ve made a super elaborate 3d shape in a matter seconds. You just have to find a rationale that makes sense now.
Actually, for those reading this and are participating to the workshop: Then give me a call so i can plan for things a little before we have to start printing …
That was an example, and there’s much more we can do with that. Be creative. Think of a volume of patterns multiplying a volume of other patterns, for example.
Think of the image acting as a control on how much material you’re depositing, etc.
Again. All the results will be amazing. The hard part is to focus and find something that makes sense 🙂 Get a logic first, then, seek on how to implement it …

No, no, and no. I hate slices, i want something else.

Ok. You say the world is not flat, and you want to make the printer print 3d curves. instead of boring flat layers.

That can give quite impressive results, but be warned that it will be a hairball to implement reliably (you need to master a lot of different topics, including materials, and predicting things).
It’s a very long subject. So let’s put it like this:
“We like challenges, so, if you have a brilliant idea, bring it over and i’ll be happy to help out.”

A few examples to illustrate what we can do with that

That was easy. Better ? Take a look at that.
Or the works of this team

Of course, you need some time so the process becomes perfect. But we’re not into that. We’re at concept stage. Give it a try.

You’ll need to do some research too. A good starting point is Grasshopper. Share your findings, i’m interested.
Enjoy !

ramkam • March 15, 2017

Previous Post

Leave a Reply

Your email address will not be published / Required fields are marked *