Snapmaker/SnapmakerCuraPlugin

Feature Request: Right extruder does not start heating until Left extruder and bed are up to temperature

evilC opened this issue · 5 comments

evilC commented

Plugin version: 0.3.0

The M104 T1 command is after the M190 S command, so the right extruder does not start heating up until the bed is at full temperature.

Temperatures set in Cura:
Left extruder (T0): Printing = 200, Initial = 190, Standby = 175
Right extruder (T1): Printing = 215, Initial = 205, Standby = 160

								;Generated with Cura_SteamEngine 5.2.1
								T0
								M82 ;absolute extrusion mode
								;--- Start G-code Begin ---
> Heat T0							M104 S200 ;Set Hotend Temperature
> Heat bed							M140 S60 ;Set Bed Temperature
								G28 ;Home
								G1 Z0.8
> Wait for T0 to heat up					M109 S200
> Wait for bed to heat up					M190 S60
								G1 Z0.8 F6000
								M201 X10000 Y10000 Z500 E5000
								M593 P1 F50
								M205 V5
								G92 E0
								G1 F200 E2
								G92 E0
								;--- Start G-code End ---

								G92 E0
								M2000 S200 V250 A6000
								G92 E0
								G1 F1500 E-6.5
								;LAYER_COUNT:784
								;LAYER:0
								M107
> Heat T1							M104 T1 S160
								M204 S1000
								G1 F600 Z1.28
								G0 F6000 X134.82 Y65.098 Z1.28
								;TYPE:SKIRT
								G1 F600 Z0.28

T1 should preheat to either Standby or Initial temperature while T0 and bed are heating

evilC commented

If you modify the start G-code and add M104 S{material_standby_temperature, 1} T1 ; Start heating T1 after the line M140 S{material_bed_temperature_layer_0} ;Set Bed Temperature, then this somewhat fixes the issue.
HOWEVER, it has an undesired side-effect:
If you do a single-extruder print, the 2nd extruder is still heated to it's standby temperature, even though it is not used.
I have asked on the Cura forums if there is a workaround for this.
AFAIK, Cura's bracket syntax does not support conditional commands (ie the ability to completely omit the command if the extruder is not used), however a workaround could be for {material_standby_temperature, 1} to return 0 if the extruder is not used in the print - this would result in T1 being asked to heat to 0 degrees if it is not used, effectively doing nothing.

This is regarded as a feature/bug of the slicer. It only starts to heat up T1 until first time switch.

I think it's not elegant at all to workaround this by start code.

evilC commented

Well you already have it for T0. I have not tried it, but I would imagine if you sliced in Cura with the left extruder disabled (ie a print that just uses the right extruder), then as it stands, I think the printer would heat up the left extruder (Even though it is not used in the print) and wait for it to hit print temperature, before starting to heat the right extruder (Which is used in the print) because that is what the Start GCode in the plugin tells it to do.

I started a Feature Request on the Cura GitHub repo, let's see what they say

Nah.

The Start GCode tell it to use M104 or M109 to heat up. The slicer will decide which extruder to use, and prepend T0 or T1 command based on your first layer setting.

evilC commented

Ah OK, thanks