From 4ac3edf780fbf4d9b9da25699fe6a90348cd7e02 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Tue, 15 Oct 2024 15:43:34 +0800 Subject: [PATCH] FIX: fix incorrect flush_volume_matrix size when switch printer jira: none Change-Id: Idaaaaa65b2ea7fdefd41d1c589e5404f8296ae4a (cherry picked from commit 927170c6304795b0ad75560688348b4febb96a42) --- src/slic3r/GUI/Plater.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index b220737530..cdccf9dfe1 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -13661,34 +13661,36 @@ void Plater::update_flush_volume_matrix(size_t old_nozzle_size, size_t new_nozzl // Verify whether it is the first time start Studio size_t filament_nums = project_config->option("filament_colour")->values.size(); size_t flush_volume_size = project_config->option("flush_volumes_matrix")->values.size(); - if (filament_nums * filament_nums * new_nozzle_size == flush_volume_size) - return; assert(nozzle_nums == new_nozzle_size); if (old_nozzle_size < new_nozzle_size) { std::vector flush_volume_mtx = get_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, -1, old_nozzle_size); std::vector first_flush_volume_mtx = get_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, 0, old_nozzle_size); + first_flush_volume_mtx.resize(filament_nums * filament_nums); std::vector flush_multipliers = project_config->option("flush_multiplier")->values; double first_flush_multiplier = project_config->option("flush_multiplier")->values.at(0); - for (size_t i = old_nozzle_size; i < new_nozzle_size; ++i) { + flush_volume_mtx.clear(); + for (size_t i = 0; i < new_nozzle_size; ++i) { flush_volume_mtx.insert(flush_volume_mtx.end(), first_flush_volume_mtx.begin(), first_flush_volume_mtx.end()); - flush_multipliers.push_back(first_flush_multiplier); } + + flush_multipliers.resize(nozzle_nums, 1.f); + set_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, flush_volume_mtx, -1, new_nozzle_size); project_config->option("flush_multiplier")->values = flush_multipliers; } else if (old_nozzle_size > new_nozzle_size) { std::vector new_flush_volume_mtx; - std::vector flush_multipliers; for (size_t i = 0; i < new_nozzle_size; ++i) { std::vector flush_volume_mtx = get_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, i, old_nozzle_size); + flush_volume_mtx.resize(filament_nums * filament_nums); new_flush_volume_mtx.insert(new_flush_volume_mtx.end(), flush_volume_mtx.begin(), flush_volume_mtx.end()); - - double multiplier_val = project_config->option("flush_multiplier")->values.at(i); - flush_multipliers.push_back(multiplier_val); } + + std::vector flush_multipliers = project_config->option("flush_multiplier")->values; + flush_multipliers.resize(nozzle_nums); set_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, new_flush_volume_mtx, -1, new_nozzle_size); project_config->option("flush_multiplier")->values = flush_multipliers; }