<p>When you slice an STL of a heat tower, <strong><em>you need to tell the slicer</em></strong> that you need a <strong><em>different temperature at a certain level</em></strong> and maintain that new temperature until another change is requested.</p>

<p>The way I usually do it is by <em>using a post processing script in Ulltimaker Cura</em>, but you can do it yourself quite easily <em>by changing the G-code file manually</em>.</p>

<p>To get it to work in Ultimaker Cura is to:</p>

<ul>
<li>open a heat tower STL model onto the virtual build plate,</li>
<li>choose the correct print settings, e.g. fan speed, print speed, layer thickness, etc.,</li>
<li>now navigate from the main top menu bar <code>Extensions -&gt; Post Processing -&gt; Modify G-Code</code>,</li>
<li>select <code>Add a script</code> and choose <code>ChangeAtZ</code>,</li>
<li>you now are presented with an option (called <code>Trigger</code>) that you can change options at either a certain <code>Height</code> or at a certain <code>Layer No.</code> number, you decide what you want to use based on the model and layersize used, but height can be chosen safely when you know the height changes in the heat tower model</li>
<li>set a certain height at which you want to change the print properties by specifying a height in option <code>Change Height</code>,</li>
<li>now put a checkmark in <code>Change Extruder 1 Temp</code> (be sure that the box <code>Behavior</code> is set to <code>Keep value</code> so that it maintains this value until you specify otherwise, else it is only valid for a single layer),</li>
<li>a new input box will be presented to you where you can enter the value of the extruder,</li>
<li>repeat this adding of "changes at certain height" e.i. instances of <code>ChangeAtZ</code> until you have specified all the temperatures for all the levels</li>
<li>now slice the model (if not done automatically) and save the G-code file for printing.</li>
</ul>

<p>If you look into the generated G-code file (the snippet below is taken from a G-code file for an Ultimaker 3) you will see that the post processing script will add extra lines in your G-code file. E.g. the following snippet shows you 2 changes of temperature, one at 5 mm (extruder 1 @ 250 &deg;C), the other at 10 mm (extruder 1 @ 245 &deg;C):</p>

<pre><code>...
;LAYER:48
G0 X93.4 Y132.161 Z5
;ChangeAtZ V5.1.1: executed at 5.00 mm
M117 Printing... ch@  5.0
M104 S250.000000 T0
...
...
;LAYER:98
G0 X93.4 Y132.35 Z10
;ChangeAtZ V5.1.1: executed at 10.00 mm
M117 Printing... ch@ 10.0
M104 S245.000000 T0
...
</code></pre>

<p>The bottom line is that the extruder needs to be instructed to be heated or cooled to a new temperature. This is also something you could have inserted yourself manually by adding the codes <code>M104 SXXX.000000 T0</code> at specific levels where <code>XXX</code> is the extruder temperature you need for that level.</p>

<p>Basically this describes <strong><em>how to print</em></strong> the heat tower calibration prints, not <strong><em>the selection of the settings</em></strong> (e.g. extruder temperature) to use for your prints. When you created the print file you are ready to print the tower and observe the quality of printing. You can look at the print and visually inspect the temperature giving you the best aesthetic performance, the best overhang performance, the best "filling" performance, highest speed, etc. It is <strong>you</strong> that decides what is best for your application. Alternatively you could print some coupon tests and see which are structurally the best. Please note that additional towers for different settings like layer height, print part cooling and print speed to may be necessary to optimize the print process.</p>

<hr>

<p><em>Sidemark, I prefer the use of parametric models (e.g. in OpenSCAD) over the STL models found on the internet, this way I can embed the exact printer setting in the tower for reference. See e.g. <a href="https://3dprinting.stackexchange.com/a/7135/5740">this answer</a>.</em></p>

<p><a href="https://i.sstatic.net/ERWy6m.png" rel="noreferrer" title="Heat tower front view"><img src="https://i.sstatic.net/ERWy6m.png" alt="Heat tower front view" title="Heat tower front view"></a><a href="https://i.sstatic.net/wYWOCm.png" rel="noreferrer" title="Heat tower backside view"><img src="https://i.sstatic.net/wYWOCm.png" alt="Heat tower backside view" title="Heat tower backside view"></a></p>

CC BY-SA 4.0
2018-11-02T07:21:57.370Z
2019-07-05T05:35:13.080Z
2019-07-05T05:35:13.080Z
0scar
<p>I've been asking around on how to choose the right temperature for a given filament. I noticed that with two different brands of pla I have to print at different temperatures, and the manufacturer specifies a broad range of print temperatures. </p>

<p>I keep hearing about heat towers, and have found <a href="https://www.thingiverse.com/search?q=heat%20tower&amp;dwh=55bdb96dc5f561" rel="noreferrer">various examples</a> on thingiverse. </p>

<p>My question is how do I actually print one? And then, how do I judge the results?</p>

CC BY-SA 4.0
2018-11-02T13:24:48.617Z
I recommend doing some quick test prints, as manufacturers' recommendations are usually very wide.  You may get satisfactory results across filaments at a single temperature.
Carl Witthoft
CC BY-SA 4.0
2018-11-02T14:44:42.180Z
@CarlWitthoft exactly why I'm learning to print heat towers.
linuxdan
<print-quality><filament><slicing><calibration><print-material>
How does one use a heat tower?
linuxdan
# How does one use a heat tower?

(Asked by: username_0 on 2018-11-02)

I've been asking around on how to choose the right temperature for a given filament. I noticed that with two different brands of pla I have to print at different temperatures, and the manufacturer specifies a broad range of print temperatures.

I keep hearing about heat towers, and have found [various examples](https://www.thingiverse.com/search?q=heat%20tower&dwh=55bdb96dc5f561) on thingiverse.

My question is how do I actually print one? And then, how do I judge the results?

**Tags:** print-quality, filament, slicing, calibration, print-material

> **Comments:**
> **username_1**: I recommend doing some quick test prints, as manufacturers' recommendations are usually very wide.  You may get satisfactory results across filaments at a single temperature.  
> **username_0**: @username_1 exactly why I'm learning to print heat towers.  

---

## 1 answers

### Answer by username_2 on 2018-11-02. Score: 23 | Accepted answer

When you slice an STL of a heat tower, ***you need to tell the slicer*** that you need a ***different temperature at a certain level*** and maintain that new temperature until another change is requested.

The way I usually do it is by *using a post processing script in Ulltimaker Cura*, but you can do it yourself quite easily *by changing the G-code file manually*.

To get it to work in Ultimaker Cura is to:

* open a heat tower STL model onto the virtual build plate,
* choose the correct print settings, e.g. fan speed, print speed, layer thickness, etc.,
* now navigate from the main top menu bar `Extensions -> Post Processing -> Modify G-Code`,
* select `Add a script` and choose `ChangeAtZ`,
* you now are presented with an option (called `Trigger`) that you can change options at either a certain `Height` or at a certain `Layer No.` number, you decide what you want to use based on the model and layersize used, but height can be chosen safely when you know the height changes in the heat tower model
* set a certain height at which you want to change the print properties by specifying a height in option `Change Height`,
* now put a checkmark in `Change Extruder 1 Temp` (be sure that the box `Behavior` is set to `Keep value` so that it maintains this value until you specify otherwise, else it is only valid for a single layer),
* a new input box will be presented to you where you can enter the value of the extruder,
* repeat this adding of "changes at certain height" e.i. instances of `ChangeAtZ` until you have specified all the temperatures for all the levels
* now slice the model (if not done automatically) and save the G-code file for printing.

If you look into the generated G-code file (the snippet below is taken from a G-code file for an Ultimaker 3) you will see that the post processing script will add extra lines in your G-code file. E.g. the following snippet shows you 2 changes of temperature, one at 5 mm (extruder 1 @ 250 °C), the other at 10 mm (extruder 1 @ 245 °C):

```
...
;LAYER:48
G0 X93.4 Y132.161 Z5
;ChangeAtZ V5.1.1: executed at 5.00 mm
M117 Printing... ch@  5.0
M104 S250.000000 T0
...
...
;LAYER:98
G0 X93.4 Y132.35 Z10
;ChangeAtZ V5.1.1: executed at 10.00 mm
M117 Printing... ch@ 10.0
M104 S245.000000 T0
...

```

The bottom line is that the extruder needs to be instructed to be heated or cooled to a new temperature. This is also something you could have inserted yourself manually by adding the codes `M104 SXXX.000000 T0` at specific levels where `XXX` is the extruder temperature you need for that level.

Basically this describes ***how to print*** the heat tower calibration prints, not ***the selection of the settings*** (e.g. extruder temperature) to use for your prints. When you created the print file you are ready to print the tower and observe the quality of printing. You can look at the print and visually inspect the temperature giving you the best aesthetic performance, the best overhang performance, the best "filling" performance, highest speed, etc. It is **you** that decides what is best for your application. Alternatively you could print some coupon tests and see which are structurally the best. Please note that additional towers for different settings like layer height, print part cooling and print speed to may be necessary to optimize the print process.

---

*Sidemark, I prefer the use of parametric models (e.g. in OpenSCAD) over the STL models found on the internet, this way I can embed the exact printer setting in the tower for reference. See e.g. [this answer](https://3dprinting.stackexchange.com/a/7135/5740).*

[![Heat tower front view](https://i.sstatic.net/ERWy6m.png "Heat tower front view")](https://i.sstatic.net/ERWy6m.png "Heat tower front view")[![Heat tower backside view](https://i.sstatic.net/wYWOCm.png "Heat tower backside view")](https://i.sstatic.net/wYWOCm.png "Heat tower backside view")


---

