When I designed this part I wasn’t thinking about print time. I wanted to make a bowl shape that used a combination of geometric construction techniques I developed over the past few years, and I wanted it to be a fairly large piece so the details of the geometry could be easily seen. Here’s a photo of the finished print:

Here is a 3D render of the part you can examine to see all it’s features:

Here is a photo of the finished part; I included the printer’s LCD panel to show the total print time:

 Well, I accomplished my objective, but I simply did not foresee how long it would take to print. I doubt anyone else will want to print this part, but if you do the STL file is here: http://birkbinnard.com/blog/wp-content/uploads/2018/12/starloft4.stl.

Note that the part uses about 75% of a full 1 Kg reel of filament.

Why it took so long to print

Why did it take so long to print? There are two reasons. The first, of course, is that it is a fairly large object. But more important is the fact that it is comprised of the dreaded overlapping shells. 

What are overlapping shells? They are the result of defining geometry that is a combination (technically a Boolean union) of 2 or more separate geometric definitions that overlap each other in the same physical space. “Overlap” means they have geometry that is defined to exist in the same 3D space. The overlapping geometry can be the same or different – it makes no difference.

Overlapping shells 

Before you can have overlapping shells you have to have standard geometry defined that does not have overlapping shells. Then you can combine these standard shapes in various ways, including those that create overlapping shells. This is the basic geometric definition I started with:

This design will produce a standard, manifold, no-problem STL file that can be sliced with any slicing program and printed with no issues. But of course I wanted a more interesting result, so I used the Double Twist method I describe in this blog page: http://birkbinnard.com/blog/do-the-twist2/.

Here is how the geometry looks after the first twist::


The second twist is just the reverse:

Again, each of these will produce a normal STL file that can be easily sliced and printed. 

So where does the problem come from? It happens when the above 2 twists are combined into one, producing the geometry I printed:

Now you can see how the two definitions create overlapping shells. Each of the individual twists is a complete, manifold definition in it’s own right. So when the two are merged into one the result looks great, but the resulting STL file is more complicated than it needs to be (or, in my opinion, should be) because it is comprised of 2 sets of geometry, parts of which occupy the same physical space. In other words, the final geometry is comprised of overlapping shells.

This image shows how this affects printing: 

This is a photo of the top of the print at about 90% complete. Notice how there are 2 sets of curved shapes that are sightly offset. This is because one is from the first twist, and the second is from the second twist. Obviously this is the result of combining the 2 separate geometric definitions, and is the way the STL file for this part is created. Consequently the slicer produces GCode to print everything, and that’s what the printer does.

The offset you see is the result of the photo being taken before the print is complete. When designing the part I tweaked the twist angle to ensure the 2 overlapping shells would coincide at the top when the print was complete.

Why are overlapping shells problematic?

The answer is that the final STL file should ideally produce GCode that prints only the true outside and inside surfaces of the part, and use infill for everything else. That is what STL files do for geometry that does not have overlapping shells.

But if the geometry does have overlapping shells the STL file will include both shells as completely as possible. The reason for this is that the process for generating STL files does not know how to properly interpret overlapping shells, so both shells get generated. It boils down to the fact that the computer code that generates STL files is not fully capable of determining and differentiating what is “inside”  and what is “outside”. So the resulting STL file contains code for both. And this in turn causes the printer to print a lot of unnecessary material.


Last Update: 19 Jan 2018