Trying to change temperature with between objects G-code and sequential printing
I thought this would be a quick fun project and not be that hard. I tried a few different ways but all have failed and now I'm down a rabbit hole. Basically I would like to print 3 filament swatches in sequence with each one at a different temperature. Like a temperature tower except over a few objects.
The 3 swatches or objects are 2 mm tall and spaced out so just sequential printing with them works. I can edit each object and change there Print Settings but temperature is a Filament Setting. Under Printer Settings > Custom G-code, there is a box "Between objects G-code" where in theory I should be able to change the temperature between objects but I can't figure out what variable I could use. I can't find a variable to use to indicate which object. I want to do something similar to:
{if layer_z < 10}M104 S265
{elsif layer_z <17}M104 S260
{elsif layer_z < 24}M104 S255
{elsif layer_z < 31}M104 S250
{elsif layer_z < 38}M104 S245
{elsif layer_z < 45}M104 S240
{endif}
But instead of "layer z" use a variable that changes with the object or even extruder Y location. Is this a thing anyone knows how to do? Or does anyone know where to find a list of variables that can be used with PrusaSlicer?
RE: Trying to change temperature with between objects G-code and sequential printing
I'm looking for the same information!
This would be great!
RE: Trying to change temperature with between objects G-code and sequential printing
@austin-cash, so I added:
M109 240
M117 End of object
to the "Between objects G-code". Then opened the gcode file in VS Code (this works amazingly with gcode highlighting!), but any text editing software will do... I then did a "find End of object" and manually changed the temperatures for each object.
Not the ideal (or most elegant) way, but it got what I wanted...
Did not work for me?!?
Hi,
I tried that - increasing in steps of 20° per object.
But it did not work...after each object a short message was flickering on the display stating "heating done", but it continued printing with the overall temperature.
Any ideas, what I can try /what i did wrong,
The only way Ive seen it done in the past is to set up multiple extruders (all pointing to the same physical one) and then you can assign the different extruders to each object. Each extruder can then use a different filament profile.
Its how Bobstro has done calibration of retraction. He has notes on it here https://projects.ttlexceeded.com/3dprinting_techniques_calibrating_retraction.html you can use the same techniques.
Bobstro
I have also seen that one - however, it is quite hard to understand;)
The solution with an "after object" gcode sounded reasonable and logical. I was surprised, that it was not so straight forward and did not work.
I will maybe also try the "add custom gcode" at the layer - and hope, it really is layer and not hight 😉
.. hope i can try tonight and give feedback...
layer=height so that one almost certainly wont work.
RE: SOLVED. Trying to change temperature with between objects G-code and sequential printing.
I had the same question. I found the placeholder which does the trick:
current_object_idx
It isn't documented at present. [current_object_idx] is the index of the object currently being printed, starting at 0 for the first object. I found it on the PrusaSlicer Github repository.
For example, if you have four objects, and your starting temperature is 195, the following "Between Objects Gcode" will print the next three objects after the first one with increasing set temperatures:
;change temp for new object M117 Object number [current_object_idx] ;Display what we are doing on the LCD screen {if current_object_idx == 1}M104 S200 {elsif current_object_idx ==2}M104 S205 {elsif current_object_idx ==3}M104 S210 {endif}
Not very elegant, and same temperature for all the layers, but I've tested it and it works. Obviously it can be tweaked a bit, but you get the idea.
RE: Trying to change temperature with between objects G-code and sequential printing
If anyone still needs a solution for this, I just found a solution today and uploaded it to Github. As I couldn't find it anywhere else. You can follow this guide on: