I’ve been using Grasshopper to design for 3D printing for about six months now, and figured I’d share some of what I’ve learned. I’m not asking a question here, just documenting what I wish I had found when I started out months ago.
I’m 3D printing ceramics, which are different from plastics in that extrusion width is more or less fixed.
For plastics, you can make thinner and thicker lines by extruding at different flow rates. Higher rates squish against the already-hardened previous layers and produce a wide line, and low flow rates cause the plastic to stretch and produce a thinner line. If the nominal extrusion width is 0.4mm, you can get anywhere from 0.2mm to 0.6mm with high reliability (depending on specific plastic and printer).
Ceramics don’t work that way. Because the previous layer is still soft, high flow rates squish into and deform the print. And clay doesn’t stretch; low flow rates result in tearing and holes.
What does this mean for Grasshopper? Well, organic shapes tend to have variable cross-sections. Surface offset, etc, use offsets relative to the normal of a surface at a given point, so when the slicer comes along, a wall that is 2mm thick at each surface normal might vary between 2mm and 4mm depending on the angle from vertical.
Take a simple vase shape, modeled as a loft of a bunch of polygons with some variation in radius to make it interesting:
…baking that into Rhino, take a look at the variation in wall thickness depending on phase of the wave:
For plastics, that might work fine, and the slicer will adjust flow rate to produce the different width walls. For ceramics, it’s catastrophic.Either the thick part will crush the previous layer (and likely cause a collapse, because it’s at the steepest overhang angle), or the thinner parts will have gaps and stutters as material is stretched (also likely causing a print failure when the next layer hits the gap and goes all twonkyfuddles.
So, rather than feeding the slicer geometry that doesn’t lend itself to cross-sectioning in clean multiples of our extrusion width… it’s cleaner to do build each slice in Grasshopper and produce an STL where each layer will slice perfectly:
The result is roughly the same, though the renderer doesn’t like it as much:
And now when we bake into Rhino, we have perfect little stair steps for each layer because their cross sections are the same:
The downside here is that it can be a lot slower to process, especially if there’s a desire to solid union each layer into a single whole object again (hence the data dam in the attached).
This example shows nearly the same geometry built using both loft and layer-by-layer approaches.
printing-surface-layers.gh (19.1 KB)