From 59874190027ee42d553849712c7baf5be6ea785a Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 18 Mar 2024 10:28:29 +0100 Subject: [PATCH] Purging volumes: update backend --- src/libslic3r/GCode/WipeTower.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 1cd4135472..504c88e142 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -1510,9 +1510,20 @@ std::vector> WipeTower::extract_wipe_volumes(const PrintConfi // Extract purging volumes for each extruder pair: std::vector> wipe_volumes; const unsigned int number_of_extruders = (unsigned int)(sqrt(wiping_matrix.size())+EPSILON); - for (unsigned int i = 0; i(wiping_matrix.begin()+i*number_of_extruders, wiping_matrix.begin()+(i+1)*number_of_extruders)); + // For SEMM printers, the project can be configured to use defaults from configuration, + // in which case the custom matrix shall be ignored. We will overwrite the values. + if (config.single_extruder_multi_material && ! config.wiping_volumes_use_custom_matrix) { + for (size_t i = 0; i < number_of_extruders; ++i) { + for (size_t j = 0; j < number_of_extruders; ++j) { + if (i != j) + wipe_volumes[i][j] = (i == j ? 0.f : config.multimaterial_purging.value * config.filament_purge_multiplier.get_at(j) / 100.f); + } + } + } + // Also include filament_minimal_purge_on_wipe_tower. This is needed for the preview. for (unsigned int i = 0; i