Wipe tower: cold ramming should use temperature of the old tool, not the new one

This commit is contained in:
Lukas Matena 2024-01-12 15:25:30 +01:00
parent 4900235332
commit 02982073b6
2 changed files with 7 additions and 4 deletions

View File

@ -757,7 +757,7 @@ std::vector<WipeTower::ToolChangeResult> WipeTower::prime(
toolchange_Wipe(writer, cleaning_box , 20.f); toolchange_Wipe(writer, cleaning_box , 20.f);
box_coordinates box = cleaning_box; box_coordinates box = cleaning_box;
box.translate(0.f, writer.y() - cleaning_box.ld.y() + m_perimeter_width); box.translate(0.f, writer.y() - cleaning_box.ld.y() + m_perimeter_width);
toolchange_Unload(writer, box , m_filpar[m_current_tool].material, m_filpar[tools[idx_tool + 1]].first_layer_temperature); toolchange_Unload(writer, box , m_filpar[m_current_tool].material, m_filpar[m_current_tool].first_layer_temperature, m_filpar[tools[idx_tool + 1]].first_layer_temperature);
cleaning_box.translate(prime_section_width, 0.f); cleaning_box.translate(prime_section_width, 0.f);
writer.travel(cleaning_box.ld, 7200); writer.travel(cleaning_box.ld, 7200);
} }
@ -845,14 +845,15 @@ WipeTower::ToolChangeResult WipeTower::tool_change(size_t tool)
// Ram the hot material out of the melt zone, retract the filament into the cooling tubes and let it cool. // Ram the hot material out of the melt zone, retract the filament into the cooling tubes and let it cool.
if (tool != (unsigned int)-1){ // This is not the last change. if (tool != (unsigned int)-1){ // This is not the last change.
toolchange_Unload(writer, cleaning_box, m_filpar[m_current_tool].material, toolchange_Unload(writer, cleaning_box, m_filpar[m_current_tool].material,
is_first_layer() ? m_filpar[tool].first_layer_temperature : m_filpar[tool].temperature); (is_first_layer() ? m_filpar[m_current_tool].first_layer_temperature : m_filpar[m_current_tool].temperature),
(is_first_layer() ? m_filpar[tool].first_layer_temperature : m_filpar[tool].temperature));
toolchange_Change(writer, tool, m_filpar[tool].material); // Change the tool, set a speed override for soluble and flex materials. toolchange_Change(writer, tool, m_filpar[tool].material); // Change the tool, set a speed override for soluble and flex materials.
toolchange_Load(writer, cleaning_box); toolchange_Load(writer, cleaning_box);
writer.travel(writer.x(), writer.y()-m_perimeter_width); // cooling and loading were done a bit down the road writer.travel(writer.x(), writer.y()-m_perimeter_width); // cooling and loading were done a bit down the road
toolchange_Wipe(writer, cleaning_box, wipe_volume); // Wipe the newly loaded filament until the end of the assigned wipe area. toolchange_Wipe(writer, cleaning_box, wipe_volume); // Wipe the newly loaded filament until the end of the assigned wipe area.
++ m_num_tool_changes; ++ m_num_tool_changes;
} else } else
toolchange_Unload(writer, cleaning_box, m_filpar[m_current_tool].material, m_filpar[m_current_tool].temperature); toolchange_Unload(writer, cleaning_box, m_filpar[m_current_tool].material, m_filpar[m_current_tool].temperature, m_filpar[m_current_tool].temperature);
m_depth_traversed += wipe_area; m_depth_traversed += wipe_area;
@ -879,6 +880,7 @@ void WipeTower::toolchange_Unload(
WipeTowerWriter &writer, WipeTowerWriter &writer,
const box_coordinates &cleaning_box, const box_coordinates &cleaning_box,
const std::string& current_material, const std::string& current_material,
const int old_temperature,
const int new_temperature) const int new_temperature)
{ {
float xl = cleaning_box.ld.x() + 1.f * m_perimeter_width; float xl = cleaning_box.ld.x() + 1.f * m_perimeter_width;
@ -905,7 +907,7 @@ void WipeTower::toolchange_Unload(
if (! m_is_mk4mmu3) if (! m_is_mk4mmu3)
writer.disable_linear_advance(); writer.disable_linear_advance();
if (cold_ramming) if (cold_ramming)
writer.set_extruder_temp(new_temperature - 20); writer.set_extruder_temp(old_temperature - 20);
} }
else else
writer.set_position(ramming_start_pos); writer.set_position(ramming_start_pos);

View File

@ -401,6 +401,7 @@ private:
WipeTowerWriter &writer, WipeTowerWriter &writer,
const box_coordinates &cleaning_box, const box_coordinates &cleaning_box,
const std::string& current_material, const std::string& current_material,
const int old_temperature,
const int new_temperature); const int new_temperature);
void toolchange_Change( void toolchange_Change(