CNC Kitchen

View Original

Arc Overhangs in PrusaSlicer*

3D printing is often called a disruptive technology where anything is possible and engineers have total design freedom. Complexity is free. Well, to some degree, this is true; additive manufacturing can produce parts and shapes that would be impossible with conventional manufacturing techniques, but it also has its limitations. One of these limitations is the overhang angle. The steeper overhangs become, the harder they are to print, and once we reach completely horizontal surfaces, the extruded material will just droop down. Here is where the idea from Steven McCulloch comes into play. He extruded individual arcs next to each other that are self-supporting, and he can this way print huge horizontal surfaces without the need for supports. If you want more details on how the method works, check out my previous video here or linked below.

Oh, and since so many asked, this forbidden toothpaste is Prusament Marble PLA. And if you order from Prusa, also check out or inserts that they sell!

As awesome as this idea is as hard it was to use because Steven’s initial script just generated random shapes for test prints. When I used it for my real parts, I had to extract coordinates and then manually hack together a GCode file.

Random test overhangs

But all of this very quickly changed. The last video got a ton of attention, and two separate parties started implementing this new overhang algorithm directly into a Slicer. The first implementation was done by rvmn in SuperPleccer, which is a fork of SuperSlicer especially optimized for multi-color printing. The other implementation came out of nowhere from a German fellow named Nicolai. He made a post-processing script that you can add to any of your existing PrusaSlicer profiles that will automatically detect regular overhangs and replace them with arc overhangs. It simply blew me away how the community took a concept and used their skill and motivation to make this technology readily available and even improve it! Both early implementations still have their problems, but they also added some remarkable improvements, such as fight warping of the arc overhangs.

SuperPleccer Releases: https://github.com/rvmn/SuperPleccer/releases
Nicolais Post-Processing Script: https://github.com/nicolai-wachenschwan/arc-overhang-prusaslicer-integration

Okay, so let’s look at the two arc overhang implementations, how you can use them and how you can help make them even better. The easiest way to start is with the current Pre-Release Alpha version of SuperPleccer, which is a fork of SuperSlicer and, therefore, basically PrusaSlicer on steroids. They already implemented a very rudimentary version of the arc overhangs where you don’t have to do anything but slice your part, and it will automatically generate arc overhangs on horizontal surfaces, which works quite well. I got the best results when I turned off thick bridges, didn’t use wiping and turned the bringing speed way down to only 1-2 mm/s! The version I tried didn’t have the recursive arcs yet that Steven initially programmed, and that looked so mesmerizing during printing because the segments got smaller and smaller and, therefore, perfectly filled even the most complex surfaces. But they are writing on their Github page that this will be implemented in the next release.

Arc Overhangs in Pleccer

On the other hand, the thing that SuperPleccer has are automatic corner supports. If you watched the last video, you’d know that the arc overhang layer usually prints very flat. Yet as soon as the next layer is printer on top, it severely warps. Many of you suggested adding small support pillars at the edges to avoid that and this is exactly what SuperPleccer can do automatically. There are special support options that find overhang corners and automatically place small supports that significantly reduce warping and only cost a little material and additional printing time. Since it’s a first preview, many things still don’t work perfectly, and barely any arc overhang settings are available through the GUI. For example, this version of Pleccer will also use Arc Overhangs in bridge infill areas, wasting a ton of time. But as I said, this is the first preview to get an idea of what we will see in future releases, and if the release notes are true, there might already be the next, more advanced version released once you see this video, so check out their GitHub page!

Automatic Corner Supports

But if you want to go even deeper into the Arc Overhang rabbit hole, then you need to try out Nicolais PrusaSlicer post-processing script that’s directly based on the original Arc Overhangs technology. This is a bit more involved because it’s still running in Python and needs a Python installation on your machine. Nicolai has a short guide on his GitHub, but this is what I did to get it running. Download Python, and during installation, activate the PATH option right here. Once this is done, I created a new temp folder in the root directory of my hard drive to ensure there are no spaces in the path. Then I downloaded the python script and the requirements file and put them in this directory. In here, right-click while pressing shift on your keyboard and open the command prompt. Install the required libraries with this command and simply add this line right here into the output options of your regular PrusaSlicer profile.

See this content in the original post

This points to your Python EXE and the arc overhang script. Now you’re good to go. With this method, the arc overhangs won’t be generated in PrusaSlicer itself, so you won’t see them at first. However, once you export your model, the postprocessor will kick in and replace the normal overhangs with arc overhangs. And even though this method is a bit more involved, it’s for now a great way to quickly optimize settings and even the algorithms themselves because if you want, you can simply open the python script and play around in there. Nicolai didn’t only make the script ready to be used in PrusaSlicer yet also improved it in several ways.

Arc Overhangs Generated by the Post Processing Script

There aren’t only improvements in the way how arcs are generated, but he also came up with a genius way how he tried to tackle the warping that’s happening once the next layers are printed ontop without using additional support pillars. He stumbled over a paper where different infill patterns in Direct Metal Laser Sintering were investigated to reduce internal stresses. They compared a conventional checkerboard pattern against fractal infills like a Hilbert curve and found out that these special infills caused lower residual stresses. But what does this have to do with our arc overhangs? If we print a regular layer on top of the flimsy overhang, the long extrusions will contract and warp the whole layer, similar to how a bimetal bends if one side contracts more than the other. Though, a Hilbert curve consists of many small lines going in different directions that contract less due to their short length.

Hilbert Curve Infill

So if you print these on top of the arc overhangs, they warp less compared to regular rectilinear infill. Nicolai then also noticed that if he prints the layers ontop of the overhang with significantly less cooling, then I will start bending down again from getting soft and the additional weight. This phenomenon is usually something we don’t want, but here we can use it to compensate for the warping. And if you tune it in perfectly, you can get nice, straight overhangs without added support. Isn’t that ingenious? And if all of this tuning doesn’t help, there still is the support painting tool to quickly add some tiny supports onto the critical corners. Nicolais’s implementation is in no way perfect, but he did all of the groundwork to make the Python Script easily usable in PrusaSlicer. This provides a simple way to use it and if someone has an idea to improve it, it’s by far easier to play around with a Python script instead of compiled C++ code.

Manual Corner Supports in PrusaSlicer 2.6

The two ways of easily using Arc Overhangs in PrusaSlicer finally made the method accessible for many enthusiasts but will it be the future of overhang handling? I personally think it won’t replace regular supports, but they might be a great way to complement them. Organic Supports just recently showed once again how even classic support can still be vastly improved and now provide a way to support almost any structure with a minimal material effort are easy to remove. But they still need material, require rework, and if you have internal structures, might even be almost impossible to remove. Arc overhangs are slow and will probably remain slow, and need a ton of tuning! But they don’t require any additional material, or maybe only little, and produce parts that are ready to use. So for overnight prints, serial production parts where you can take the time to tune in the process or complex parts you want to use right away, arc overhangs might be the new way to go if we continue improving it. So if you’re excited about what Steven, Nicolai, and the guys from Pleccer achieved in such a short amount of time, try it out, give feedback, and if you have the skill and motivation, help bring open source 3D printing another step forward! Links to both releases in the description by the way! I hope you found this update on Arc Overhangs interesting. If you did, leaf a like and let me know what you think the future of overhangs will be. Classic supports or Fancy Arc Overhangs?

SuperPleccer Releases: https://github.com/rvmn/SuperPleccer/releases
Nicolais Post-Processing Script: https://github.com/nicolai-wachenschwan/arc-overhang-prusaslicer-integration