Without support, 3D printing with Arc overhangs

Without support, 3D printing with Arc overhangs

Arc overhangs is a method initially prototyped by stmcculloch on GitHub. The method allowed for large overhangs without any support material. It was soon ported over to a postscript by nicolai-wachenschwan on the same site for Prusaslicer and Super slicer. Here, I’ll go over what you must do to use it and how it works.


Arc overhangs is written in Python, so you’ll need a Python interpreter installed on your computer. ARM Macs and most Linux distros come with a recent version of Python 3 preinstalled. Windows does not and the version from the Microsoft store doesn’t work. You need to download Python from their website. Do note that one of the libraries for this script doesn’t have a 3.12 build, and it’s tough to compile it on Windows. If you’re using a Windows machine, you need 3.10 or 3.11 at the time of writing this. If for whatever reason you have 3.12 installed on ARM Mac or Linux it should auto-compile itself, but I haven’t tested it.


Good practice for this would be to use a Python virtual environment. On Windows, this comes with the Python installer. Just run Python -m venv arc to make it. Note that it doesn’t need to be named arc but that’s what I use. For Linux, you usually need to install the virtual env package for your Python version and distro. Just run the command as in Windows but with python3 and it should prompt you with what you need to install. In Windows, I’d do this in the root of one of your drives. In Linux do it in your home directory or under a shared folder if more than 1 person uses the computer.

You then need to install the dependencies of the script inside the pyvenv. The requirements.txt in the script’s repo will install what you need. You need to open a terminal in the directory where the pyvenv is and then do /venv/bin/activate on Linux or /venvScripts/activate on Windows. On Windows, however, you need to enable scripts. Move the requirement.txt file from the repo into where your terminal is opened, then run pip install -r requirements.txt with the venv open, note that you need to use pip3 on Linux. Another alternative is to install them one by one, as there are only 4 of them.


In Prusaslicer and Super Slicer, the script works without any modification. Under post-processing scripts you need to add Drive letter:/path/to/venv/python.exe Drive letter:/path/to/script.py on Windows or /path/to/venv/python/executable /path/to/script.py on Linux. Note that on Linux it usually will start from the current user’s home directory. Do note that it doesn’t work in Orca Slicer. I tried to modify it via the settings function but there seems to be no option for it to detect relative extrusion in the G code when sliced with Orca. It also can be used in Cura.


The script is rather picky as to what overhangs it’ll pick up. In my experience, it only picks up monotonic or rectilinear top and bottom infill, but it won’t try to do the arc on the top surfaces. It also can’t generate arcs on 2 layers in a row correctly, it’ll instead just generate the hilbert curve infill. It will also prove ineffective if you have a part of an overhang that’s lower than where it attaches to, for that support is still needed. After slicing you need to export it for the script to kick in. On Windows, a terminal should open and it’ll prompt you to hit enter on your keyboard when finished. I never got that prompt on Linux and it did everything automatically.

How it works

Basically, the printer will print some arcs at the same Z height very slowly, like 5mm/s or so, This is what allows for the large overhangs. After that, it’ll replace the infill on the next layer with Hilbert curve infill to reduce warping. This culminates in getting an almost support-free print.


If everything goes as planned you should see arcs replacing some of the bottom solid infill in overhangs in Gcode previews.