@dc42 That is interesting, I guess I will give Cura a try.
I really thought about your previous comment and how the duet2 has not enough ram for such a feature.
I am not very familiar with the hardware limitations of the duet boards but this is how I would do it:
When simulating the print add a comment to the end of each line with the time at which this command is executed during simulation
Measure the time it takes for each tool to warm up during the initial heat-up (when the print starts)
Parse the gcode file line by line until we find a Tn command
Parse the gcode file backwards, line by line (starting from the last character in each line until we find the ';') starting in the current line (where we found the Tn)
If we find a timestamp at the end of a line such that the distance from this timestamp to the one at the tool change command is greater than the tool heat-up time, insert the gcode command to start heating up the tool in this line
I am not sure if this is a viable method.