From 1c6282ce036ba7dac7fb2579c5f662a7468944f6 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Fri, 16 Feb 2024 08:54:37 +0100 Subject: [PATCH] Fixed missing cooling slowdown when z travel speed was zero (#12258, SPE-2163) --- src/libslic3r/GCode/GCodeWriter.cpp | 8 ++++++-- src/libslic3r/GCode/WipeTower.cpp | 1 - src/libslic3r/GCode/WipeTower.hpp | 1 - 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/GCode/GCodeWriter.cpp b/src/libslic3r/GCode/GCodeWriter.cpp index 4983b59374..2d3b3f798e 100644 --- a/src/libslic3r/GCode/GCodeWriter.cpp +++ b/src/libslic3r/GCode/GCodeWriter.cpp @@ -323,13 +323,17 @@ std::string GCodeWriter::get_travel_to_xyz_gcode(const Vec3d &from, const Vec3d GCodeG1Formatter w; w.emit_xyz(to); + double speed_z = this->config.travel_speed_z.value; + if (speed_z == 0.) + speed_z = this->config.travel_speed.value; + const double distance_xy{(to.head<2>() - from.head<2>()).norm()}; const double distnace_z{std::abs(to.z() - from.z())}; - const double time_z = distnace_z / this->config.travel_speed_z.value; + const double time_z = distnace_z / speed_z; const double time_xy = distance_xy / this->config.travel_speed.value; const double factor = time_z > 0 ? time_xy / time_z : 1; if (factor < 1) { - w.emit_f((this->config.travel_speed.value * factor + (1 - factor) * this->config.travel_speed_z.value) * 60.0); + w.emit_f((this->config.travel_speed.value * factor + (1 - factor) * speed_z) * 60.0); } else { w.emit_f(this->config.travel_speed.value * 60.0); } diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 051828aa45..a19371ac89 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -537,7 +537,6 @@ WipeTower::WipeTower(const PrintConfig& config, const PrintRegionConfig& default m_no_sparse_layers(config.wipe_tower_no_sparse_layers), m_gcode_flavor(config.gcode_flavor), m_travel_speed(config.travel_speed), - m_travel_speed_z(config.travel_speed_z), m_infill_speed(default_region_config.infill_speed), m_perimeter_speed(default_region_config.perimeter_speed), m_current_tool(initial_tool), diff --git a/src/libslic3r/GCode/WipeTower.hpp b/src/libslic3r/GCode/WipeTower.hpp index 465d783ea6..ae8dbe246e 100644 --- a/src/libslic3r/GCode/WipeTower.hpp +++ b/src/libslic3r/GCode/WipeTower.hpp @@ -279,7 +279,6 @@ private: size_t m_max_color_changes = 0; // Maximum number of color changes per layer. int m_old_temperature = -1; // To keep track of what was the last temp that we set (so we don't issue the command when not neccessary) float m_travel_speed = 0.f; - float m_travel_speed_z = 0.f; float m_infill_speed = 0.f; float m_perimeter_speed = 0.f; float m_first_layer_speed = 0.f;