diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 7c0f25f8a..9c1d3718f 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -3805,9 +3805,14 @@ void PresetBundle::update_multi_material_filament_presets(size_t to_delete_filam // Now verify if flush_volumes_matrix has proper size (it is used to deduce number of extruders in wipe tower generator): std::vector old_matrix = this->project_config.option("flush_volumes_matrix")->values; - + size_t old_nozzle_nums = this->project_config.option("flush_multiplier")->values.size(); + size_t old_number_of_filaments = size_t(sqrt(old_matrix.size() / old_nozzle_nums) + EPSILON); size_t nozzle_nums = get_printer_extruder_count(); - size_t old_number_of_filaments = size_t(sqrt(old_matrix.size() / nozzle_nums) + EPSILON); + if (old_nozzle_nums != nozzle_nums) { + std::vector& f_multiplier = this->project_config.option("flush_multiplier")->values; + f_multiplier.resize(nozzle_nums, 1.f); + } + if (num_filaments != old_number_of_filaments) { // First verify if purging volumes presets for each extruder matches number of extruders std::vector& filaments = this->project_config.option("flush_volumes_vector")->values; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 8b7a391e1..6356a5b81 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1120,11 +1120,9 @@ Sidebar::Sidebar(Plater *parent) ConfigOptionFloats *flush_multi_opt = project_config.option("flush_multiplier"); if (flush_multi_opt) flush_multiplier = cast(flush_multi_opt->values); - else { - for (size_t nozzle_id = 0; nozzle_id < nozzle_nums; ++nozzle_id) { - flush_multiplier.push_back(1.f); - } - } + + flush_multiplier.resize(nozzle_nums, 1.0f); + WipingDialog dlg(parent, cast(init_matrix), cast(init_extruders), extruder_colours, extra_flush_volumes, flush_multiplier, nozzle_nums); if (dlg.ShowModal() == wxID_OK) { std::vector matrix = dlg.get_matrix();