From b0216b190af13ff82adc12eca0f8e813a1543e18 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 3 Sep 2018 10:15:40 +0200 Subject: [PATCH 1/2] Bugfix - extruder temperature was sometimes not correctly set on the wipe tower --- xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp b/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp index 42c06252b..caea1c5e7 100644 --- a/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp +++ b/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp @@ -525,6 +525,9 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::prime( ++ m_num_tool_changes; } + m_old_temperature = -1; // If the priming is turned off in config, the temperature changing commands will not actually appear + // in the output gcode - we should not remember emitting them (we will output them twice in the worst case) + // Reset the extruder current to a normal value. writer.set_extruder_trimpot(550) .feedrate(6000) From e3de278afcc611a379f60dc5a4bcdfbadd471dca Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Wed, 5 Sep 2018 09:18:42 +0200 Subject: [PATCH 2/2] Another attempt to fix the temperature change issue --- xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp b/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp index caea1c5e7..b6340e991 100644 --- a/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp +++ b/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp @@ -807,8 +807,9 @@ void WipeTowerPrusaMM::toolchange_Unload( .load_move_x_advanced(old_x, -0.10f * total_retraction_distance, 0.3f * m_filpar[m_current_tool].unloading_speed) .travel(old_x, writer.y()) // in case previous move was shortened to limit feedrate*/ .resume_preview(); - - if (new_temperature != 0 && new_temperature != m_old_temperature ) { // Set the extruder temperature, but don't wait. + if (new_temperature != 0 && (new_temperature != m_old_temperature || m_is_first_layer) ) { // Set the extruder temperature, but don't wait. + // If the required temperature is the same as last time, don't emit the M104 again (if user adjusted the value, it would be reset) + // However, always change temperatures on the first layer (this is to avoid issues with priming lines turned off). writer.set_extruder_temp(new_temperature, false); m_old_temperature = new_temperature; }