ENH: update flush data for H2D

1.Alsoe set default flush from support to 700

jira: STUDIO-10595

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0d0a85cdac5e63b787c16b35ed6c05afc885a715
(cherry picked from commit 5fea5e6696a28d7ec9edcde38c43700cb3b7f596)
This commit is contained in:
xun.zhang
2025-03-21 15:08:53 +08:00
committed by Noisyfox
parent 996da6eebe
commit 81382448eb
11 changed files with 304 additions and 75 deletions

View File

@@ -3384,6 +3384,8 @@ 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]);
std::vector<double> init_matrix = get_flush_volumes_matrix((project_config.option<ConfigOptionFloats>("flush_volumes_matrix"))->values, extruder_id, extruder_nums);
@@ -3421,7 +3423,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);
Slic3r::FlushVolCalculator calculator(min_flush_volumes[from_idx], m_max_flush_volume, is_multi_extruder,volume_type);
int flushing_volume = 0;
bool is_from_support = is_support_filament(from_idx);
bool is_to_support = is_support_filament(modify_id);
@@ -3446,7 +3448,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);
Slic3r::FlushVolCalculator calculator(min_flush_volumes[modify_id], m_max_flush_volume, is_multi_extruder, volume_type);
bool is_from_support = is_support_filament(modify_id);
bool is_to_support = is_support_filament(to_idx);
int flushing_volume = 0;

View File

@@ -238,7 +238,7 @@ wxString WipingDialog::BuildTableObjStr()
}
for (int idx = 0; idx < nozzle_num; ++idx) {
obj["min_flush_volumes"].push_back(*min_element(m_extra_flush_volume[idx].begin(), m_extra_flush_volume[idx].end()));
obj["min_flush_volumes"].push_back(0);
obj["max_flush_volumes"].push_back(m_max_flush_volume);
}
@@ -386,9 +386,9 @@ WipingDialog::WipingDialog(wxWindow* parent, const std::vector<std::vector<int>>
}
int WipingDialog::CalcFlushingVolume(const wxColour& from, const wxColour& to, int min_flush_volume)
int WipingDialog::CalcFlushingVolume(const wxColour& from, const wxColour& to, int min_flush_volume ,bool is_multi_extruder, NozzleVolumeType volume_type)
{
Slic3r::FlushVolCalculator calculator(min_flush_volume, Slic3r::g_max_flush_volume);
Slic3r::FlushVolCalculator calculator(min_flush_volume, Slic3r::g_max_flush_volume, is_multi_extruder, volume_type);
return calculator.calc_flush_vol(from.Alpha(), from.Red(), from.Green(), from.Blue(), to.Alpha(), to.Red(), to.Green(), to.Blue());
}
@@ -404,6 +404,8 @@ WipingDialog::VolumeMatrix WipingDialog::CalcFlushingVolumes(int extruder_id)
for (auto color_str : filament_color_strs)
filament_colors.emplace_back(color_str);
NozzleVolumeType volume_type = NozzleVolumeType(full_config.option<ConfigOptionEnumsGeneric>("nozzle_volume_type")->values[extruder_id]);
bool is_multi_extruder = preset_bundle->get_printer_extruder_count() > 1;
// Support for multi-color filament
for (int i = 0; i < filament_colors.size(); ++i) {
std::vector<wxColour> single_filament;
@@ -443,7 +445,7 @@ WipingDialog::VolumeMatrix WipingDialog::CalcFlushingVolumes(int extruder_id)
const wxColour& from = multi_colors[from_idx][i];
for (int j = 0; j < multi_colors[to_idx].size(); ++j) {
const wxColour& to = multi_colors[to_idx][j];
int volume = CalcFlushingVolume(from, to, m_extra_flush_volume[extruder_id][from_idx]);
int volume = CalcFlushingVolume(from, to, m_extra_flush_volume[extruder_id][from_idx], is_multi_extruder, volume_type);
flushing_volume = std::max(flushing_volume, volume);
}
}

View File

@@ -2,7 +2,7 @@
#define _WIPE_TOWER_DIALOG_H_
#include <wx/webview.h>
#include "libslic3r/PrintConfig.hpp"
#include "Widgets/SpinInput.hpp"
#include "RammingChart.hpp"
@@ -49,7 +49,7 @@ public:
bool GetSubmitFlag() const { return m_submit_flag; }
private:
int CalcFlushingVolume(const wxColour& from_, const wxColour& to_, int min_flush_volume);
int CalcFlushingVolume(const wxColour& from_, const wxColour& to_, int min_flush_volume, bool is_multi_extruder, Slic3r::NozzleVolumeType volume_type);
wxString BuildTableObjStr();
wxString BuildTextObjStr();
void StoreFlushData(int extruder_num, const std::vector<std::vector<double>>& flush_volume_vecs, const std::vector<double>& flush_multipliers);