diff --git a/src/libslic3r/calib.cpp b/src/libslic3r/calib.cpp index 02e32379d4..758ff7b8ed 100644 --- a/src/libslic3r/calib.cpp +++ b/src/libslic3r/calib.cpp @@ -344,18 +344,16 @@ void CalibPressureAdvanceLine::delta_modify_start(double& startx, double& starty CalibPressureAdvancePattern::CalibPressureAdvancePattern( const Calib_Params& params, - DynamicPrintConfig config, + const DynamicPrintConfig& config, const bool& is_bbl_machine, Model& model ) : - CalibPressureAdvance(), m_params(params), - m_initial_config(config), m_is_bbl_machine(is_bbl_machine) { this->m_draw_digit_mode = DrawDigitMode::Bottom_To_Top; - refresh_pattern_setup(model); + refresh_setup(config, model); }; void CalibPressureAdvancePattern::set_starting_point(const Model& model) @@ -378,12 +376,16 @@ void CalibPressureAdvancePattern::set_starting_point(const Model& model) } } -void CalibPressureAdvancePattern::generate_custom_gcodes(Model& model, const Vec3d& origin) +void CalibPressureAdvancePattern::generate_custom_gcodes( + const DynamicPrintConfig& config, + Model& model, + const Vec3d& origin +) { std::stringstream gcode; gcode << "; start pressure advance pattern for layer\n"; - refresh_pattern_setup(model); + refresh_setup(config, model); GCodeWriter writer = pattern_writer(model, origin); GCodeProcessor processor; processor.s_IsBBLPrinter = m_is_bbl_machine; @@ -544,14 +546,16 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(Model& model, const Vec model.plates_custom_gcodes[model.curr_plate_index] = info; } -void CalibPressureAdvancePattern::refresh_pattern_setup(const Model& model) +void CalibPressureAdvancePattern::refresh_setup( + const DynamicPrintConfig& config, + const Model& model +) { - DynamicPrintConfig updated_config(m_initial_config); - updated_config.apply(model.objects.front()->config.get(), true); - updated_config.apply(model.objects.front()->volumes.front()->config.get(), true); - m_config = updated_config; + m_config = config; + m_config.apply(model.objects.front()->config.get(), true); + m_config.apply(model.objects.front()->volumes.front()->config.get(), true); - m_is_delta = (updated_config.option("printable_area")->values.size() > 4); + m_is_delta = (m_config.option("printable_area")->values.size() > 4); set_starting_point(model); } diff --git a/src/libslic3r/calib.hpp b/src/libslic3r/calib.hpp index f4e745be06..6492735904 100644 --- a/src/libslic3r/calib.hpp +++ b/src/libslic3r/calib.hpp @@ -140,7 +140,7 @@ friend struct DrawBoxOptArgs; public: CalibPressureAdvancePattern( const Calib_Params& params, - DynamicPrintConfig config, + const DynamicPrintConfig& config, const bool& is_bbl_machine, Model& model ); @@ -152,7 +152,11 @@ public: void set_starting_point(const Model& model); - void generate_custom_gcodes(Model& model, const Vec3d& origin); + void generate_custom_gcodes( + const DynamicPrintConfig& config, + Model& model, + const Vec3d& origin + ); protected: double speed_first_layer() const { return m_config.option("initial_layer_speed")->value; }; @@ -190,7 +194,7 @@ private: double speed; }; - void refresh_pattern_setup(const Model& model); + void refresh_setup(const DynamicPrintConfig& config, const Model& model); GCodeWriter pattern_writer( const Model& model, const Vec3d& origin @@ -244,10 +248,9 @@ private: double print_size_y() const { return object_size_y(); }; const Calib_Params& m_params; - const DynamicPrintConfig m_initial_config; - const bool& m_is_bbl_machine; DynamicPrintConfig m_config; + const bool& m_is_bbl_machine; bool m_is_delta; Vec3d m_starting_point; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index fbe118e2d9..0959e6e631 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -8185,7 +8185,11 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) ); center_selection(); - pa_pattern.generate_custom_gcodes(model(), get_partplate_list().get_current_plate_origin()); + pa_pattern.generate_custom_gcodes( + full_config, + model(), + get_partplate_list().get_current_plate_origin() + ); model().calib_pa_pattern = std::make_unique(pa_pattern); changed_objects({ 0 }); } @@ -10346,6 +10350,7 @@ void Plater::reslice() // regenerate CalibPressureAdvancePattern custom G-code to apply changes if (model().calib_pa_pattern) { model().calib_pa_pattern->generate_custom_gcodes( + wxGetApp().preset_bundle->full_config(), model(), get_partplate_list().get_current_plate_origin() );