Update: v1.9.6 10-10-25: Test cutouts on the backside are back! Somewhere around v1.8 I left a “*” character in the code while debugging that made them disappear.
My “Improved All-In-One Temperature and Bridging Tower” is very popular but sometimes you don't need to check the whole temperature spectrum, or maybe you want to check in steps different than the default 10 degrees C of most temp towers.
So… here's a fully customizable version, for use with OpenSCAD!
Uh… OpenSCAD? What's that?! Do I need to learn how to write code?
No, you don't! It's actually very simple, and you don't need to “speak SCAD” to build your very own temp tower.
Here's a step-by-step guide:
The preliminaries
- If you don't have OpenSCAD, download it from https://openscad.org/ and install it following the standard installation procedure for your computer platform. To use the new auto-scaling of text introduced in the v1.9.5 (9-11-2025) update, you'll need a version of OpenSCAD more recent than the last stable release 2021.01. You can download it from the “Nightly Builds” Section on OpenSCAD.org. On the Mac, you will need to give it permission to install by going to System Settings>Privacy & Security and looking for Open Anyway.
- Open OpenSCAD and go to Preferences>Features and make sure textmetrics() is activated.
- Download the .scad and .3mf files from the Files section and save them somewhere on your computer.
Let's create the temp tower model
- Launch OpenSCAD.
- Use File>Open File to load the downloaded “Customizable Temp Tower.scad” script.
- You should see the Customizer on the right. If not, go to the Window menu and uncheck Hide Customizer. Also, make sure Hide Console is unchecked.
- Select the appropriate options (see below). If needed, press F5 or go to “Design>Preview” after you've made changes, to update the image of the model.
- When you're happy with the results, press F6 or go to “Design>Render” to render the model. Rendering may take some time, so please be patient. Watch the progress bar at the bottom right of the window.
- When rendering is complete, scroll up in the Console pane until you see “Insert the following lines…". Use your mouse to select the lines starting with “;AFTER LAYER CHANGE” up to the first blank line. Right-click and copy them. (Ctrl/Cmd-C doesn't seem to work).

- Press F7 or go to “File>Export as STL” and save the model as an .stl file.
Now let's set up PrusaSlicer
- Open PrusaSlicer. You may use the attached .3mf file as a starting point, or start with a blank slate.
- Load the .stl file you generated from OpenSCAD. If you're using my .3mf file and did not change the default name of the .stl file, just right-click on the model and select “reload from disk”.
- Select the appropriate print, filament profile, and printer profiles.
- Make sure you're in Expert Mode (upper right corner):

- Go to the Printer Settings Tab (Ctrl/Cmd-4)>Custom G-code, and go to the box labeled “After layer change G-code”. Delete the two lines that are in that box by default.

Okay, let the magic happen…
We have to tell PrusaSlicer to change temperatures at the appropriate points. We use custom G-code for that purpose.
- In PrusaSlicer, paste the lines you copied in OpenSCAD into the “After layer change G-code” box.

- That's all! Switch back to the Plater view, slice, save, and print.
- Note: To check that everything works as expected, slice, go to Window>Preview, and from Legend select Temperature, to check that the tower tiers have the correct temperature,
OpenSCAD customizer options
The customizer offers several options for adjusting the model. Most are self-explanatory.
- Under Main Options, first enter any text to describe your filament type (PLA, PC, ASA, etc). Next, select the highest temperature you'd like to test with your tower. This will be printed first. Then define the temperature steps (decrease of temperature PER tier) of the tower (in Celsius), e.g, 5 or 10 degrees. Finally, set the number of tiers to use in your very own temp tower.
- That's pretty much all. However, if you have a long name for your filament, you may want to go to Other Options and change the gTypeScale scaling factor so that the text fits properly onto the tower's base. Still, if it's too long—like “some weird and exotic filament”—, the text may end up being too thin to print properly. Sorry, nothing I can do about that.
- Update 7-2-22: Under Other Options you can now add the filament brand to the top and/or bottom of the tower. Just type the name into the gFilamentBrand box and adjust the size as needed with the gBrandScale slider. Text on top will be raised, text on bottom recessed.
- Update 9-11-25: Text entered for filament type and brand should scale automatically.
Version History
v1.9.5 9-11-25: Added automatic scaling using textmetrics(). Version of OpenSCAD that supports textmetrics is required for this functionality. For users with older version of OpenSCAD, the old version of the temp tower script is still available. Renamed variable 3LF to avoid variable names starting with a number.
v1.9 6-1-2024: Custom gcode to address floating point calc issue that lead to some tiers not starting temp change at the right layer height, per @StefanPohl_1942191
v1.8 8-17-2023: Added If statement to custom gcode, to make sure top layer is printed at same temperature as block below, per Eug_11697.
v1.7 7-18-2023: Fixed inverted protrusions, per @k2e2ni's code.
v1.6 7-2-2022: Per @rayanth's request, I added an option to put the filament brand (or ANY text) on top and/or bottom of the tower.
v1.5 6-26-2022: Kudos to @Netfool for coming up with a method to generate custom g-code right in OpenSCAD (see Comments section)! Added his code to the script and updated the instructions accordingly.
If you like what I'm doing…
… consider buying me a coffee or joining my Club.