FIX: display the minimum flush data

1. Use the minimum flush between nozzle volume and flush in datalist
2. Add a new param to decide the datalist to use

github:7445

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id87c98ca5069e7b328974d641d7a81dfbf9c50a0
(cherry picked from commit 2be29b784727330732170b5c2ff0ba9d5e79d82f)
This commit is contained in:
xun.zhang
2025-07-03 17:14:34 +08:00
committed by Noisyfox
parent cf9a38bbc6
commit bc02e48dc0
13 changed files with 69 additions and 65 deletions

View File

@@ -3582,9 +3582,7 @@ void Sidebar::auto_calc_flushing_volumes_internal(const int modify_id, const int
const auto& full_config = wxGetApp().preset_bundle->full_config();
auto& ams_multi_color_filament = preset_bundle->ams_multi_color_filment;
size_t extruder_nums = preset_bundle->get_printer_extruder_count();
bool is_multi_extruder = extruder_nums > 1;
NozzleVolumeType volume_type=NozzleVolumeType(full_config.option<ConfigOptionEnumsGeneric>("nozzle_volume_type")->values[extruder_id]);
int nozzle_flush_dataset = full_config.option<ConfigOptionIntsNullable>("nozzle_flush_dataset")->values[extruder_id];
std::vector<double> init_matrix = get_flush_volumes_matrix((project_config.option<ConfigOptionFloats>("flush_volumes_matrix"))->values, extruder_id, extruder_nums);
const std::vector<int>& min_flush_volumes = get_min_flush_volumes(full_config, extruder_id);
@@ -3621,7 +3619,7 @@ void Sidebar::auto_calc_flushing_volumes_internal(const int modify_id, const int
// from to modify
int from_idx = i;
if (from_idx != modify_id) {
Slic3r::FlushVolCalculator calculator(min_flush_volumes[from_idx], m_max_flush_volume, is_multi_extruder,volume_type);
Slic3r::FlushVolCalculator calculator(min_flush_volumes[from_idx], m_max_flush_volume, nozzle_flush_dataset);
int flushing_volume = 0;
bool is_from_support = is_support_filament(from_idx);
bool is_to_support = is_support_filament(modify_id);
@@ -3646,7 +3644,7 @@ void Sidebar::auto_calc_flushing_volumes_internal(const int modify_id, const int
// modify to to
int to_idx = i;
if (to_idx != modify_id) {
Slic3r::FlushVolCalculator calculator(min_flush_volumes[modify_id], m_max_flush_volume, is_multi_extruder, volume_type);
Slic3r::FlushVolCalculator calculator(min_flush_volumes[modify_id], m_max_flush_volume, nozzle_flush_dataset);
bool is_from_support = is_support_filament(modify_id);
bool is_to_support = is_support_filament(to_idx);
int flushing_volume = 0;