diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 7f65436ae4..c27551a213 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2203,7 +2203,7 @@ LayerResult GCodeGenerator::process_layer( print.config().before_layer_gcode.value, m_writer.extruder()->id(), &config) + "\n"; } - gcode += this->change_layer(previous_layer_z, print_z); // this will increase m_layer_index + gcode += this->change_layer(previous_layer_z, print_z, result.spiral_vase_enable); // this will increase m_layer_index m_layer = &layer; if (this->line_distancer_is_required(layer_tools.extruders) && this->m_layer != nullptr && this->m_layer->lower_layer != nullptr) { this->m_previous_layer_distancer = GCode::Impl::get_expolygons_distancer(m_layer->lower_layer->lslices); @@ -2732,8 +2732,11 @@ std::optional GCodeGenerator::get_helical_layer_change_gcode( } // called by GCodeGenerator::process_layer() -std::string GCodeGenerator::change_layer(coordf_t previous_layer_z, coordf_t print_z) -{ +std::string GCodeGenerator::change_layer( + coordf_t previous_layer_z, + coordf_t print_z, + const bool spiral_vase_enabled +) { std::string gcode; if (m_layer_count > 0) // Increment a progress bar indicator. @@ -2745,7 +2748,7 @@ std::string GCodeGenerator::change_layer(coordf_t previous_layer_z, coordf_t pri const std::string comment{"move to next layer (" + std::to_string(m_layer_index) + ")"}; bool helical_layer_change{ - (!this->m_spiral_vase || !this->m_spiral_vase->is_enabled()) + !spiral_vase_enabled && print_z > previous_layer_z && EXTRUDER_CONFIG(travel_ramping_lift) && EXTRUDER_CONFIG(travel_slope) > 0 && EXTRUDER_CONFIG(travel_slope) < 90 diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index bf47716f82..809efe8655 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -366,7 +366,11 @@ private: const coordf_t print_z, const std::string& comment ); - std::string change_layer(coordf_t previous_layer_z, coordf_t print_z); + std::string change_layer( + coordf_t previous_layer_z, + coordf_t print_z, + const bool spiral_vase_enabled + ); std::string extrude_entity(const ExtrusionEntityReference &entity, const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed = -1.); std::string extrude_loop(const ExtrusionLoop &loop, const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed = -1.); std::string extrude_skirt(const ExtrusionLoop &loop_src, const ExtrusionFlow &extrusion_flow_override, diff --git a/src/libslic3r/GCode/SpiralVase.hpp b/src/libslic3r/GCode/SpiralVase.hpp index 6beaf83453..8829e8d22b 100644 --- a/src/libslic3r/GCode/SpiralVase.hpp +++ b/src/libslic3r/GCode/SpiralVase.hpp @@ -28,10 +28,6 @@ public: m_enabled = en; } - bool is_enabled() const { - return m_enabled; - } - std::string process_layer(const std::string &gcode); private: