diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 67f66b204d..1b690a6ace 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -489,9 +489,6 @@ void Sidebar::priv::hide_rich_tip(wxButton* btn) std::vector get_min_flush_volumes(const DynamicPrintConfig &full_config, size_t nozzle_id) { - //todo multi_extruder: - nozzle_id = 0; - std::vectorextra_flush_volumes; //const auto& full_config = wxGetApp().preset_bundle->full_config(); //auto& printer_config = wxGetApp().preset_bundle->printers.get_edited_preset().config; @@ -1088,10 +1085,15 @@ Sidebar::Sidebar(Plater *parent) const std::vector extruder_colours = wxGetApp().plater()->get_extruder_colors_from_plater_config(); const auto& full_config = wxGetApp().preset_bundle->full_config(); - const auto& extra_flush_volumes = get_min_flush_volumes(full_config, 0); // todo multi_extruder: always display nozzle 1 size_t nozzle_nums = full_config.option("nozzle_diameter")->values.size(); + std::vector> extra_flush_volumes; + extra_flush_volumes.resize(nozzle_nums, std::vector()); + for (size_t nozzle_id = 0; nozzle_id < nozzle_nums; ++nozzle_id) { + extra_flush_volumes[nozzle_id] = get_min_flush_volumes(full_config, nozzle_id); + } + std::vector flush_multiplier; ConfigOptionFloats *flush_multi_opt = project_config.option("flush_multiplier"); if (flush_multi_opt) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index fd66d2a290..1ef377e5ad 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -3443,7 +3443,6 @@ void SelectMachineDialog::reset_and_sync_ams_list() m_filaments.clear(); const auto& full_config = wxGetApp().preset_bundle->full_config(); - const auto& extra_flush_volumes = get_min_flush_volumes(full_config, 0); // todo multi_extruder: always display nozzle 1 size_t nozzle_nums = full_config.option("nozzle_diameter")->values.size(); bool use_double_extruder = nozzle_nums > 1 ? true : false; diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index 1fe8c1708e..db13d775ae 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -298,7 +298,7 @@ void WipingDialog::on_dpi_changed(const wxRect &suggested_rect) // Parent dialog for purging volume adjustments - it fathers WipingPanel widget (that contains all controls) and a button to toggle simple/advanced mode: WipingDialog::WipingDialog(wxWindow* parent, const std::vector& matrix, const std::vector& extruders, const std::vector& extruder_colours, - const std::vector&extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums) + const std::vector>&extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums) : GUI::DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), wxID_ANY, _(L("Flushing volumes for filament change")), @@ -392,7 +392,7 @@ void WipingPanel::create_panels(wxWindow* parent, const int num) { WipingPanel::WipingPanel(wxWindow* parent, const std::vector& matrix, const std::vector& extruders, size_t cur_extruder_id, const std::vector& extruder_colours, Button* calc_button, - const std::vector& extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums) + const std::vector>& extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums) : wxPanel(parent,wxID_ANY, wxDefaultPosition, wxDefaultSize/*,wxBORDER_RAISED*/) , m_flush_multiplier(flush_multiplier) , m_matrix(matrix) @@ -528,7 +528,7 @@ WipingPanel::WipingPanel(wxWindow* parent, const std::vector& matrix, con multi_desc_label->SetForegroundColour(g_text_color); m_sizer_advanced->Add(multi_desc_label, 0, wxEXPAND | wxLEFT, TEXT_BEG_PADDING); - wxString min_flush_str = wxString::Format(_L("Suggestion: Flushing Volume in range [%d, %d]"),*std::min_element(m_min_flush_volume.begin(), m_min_flush_volume.end()), m_max_flush_volume); + wxString min_flush_str = wxString::Format(_L("Suggestion: Flushing Volume in range [%d, %d]"),*std::min_element(m_min_flush_volume[m_cur_extruder_id].begin(), m_min_flush_volume[m_cur_extruder_id].end()), m_max_flush_volume); m_min_flush_label = new wxStaticText(m_page_advanced, wxID_ANY, min_flush_str, wxDefaultPosition, wxDefaultSize, 0); m_min_flush_label->SetForegroundColour(g_text_color); m_sizer_advanced->Add(m_min_flush_label, 0, wxEXPAND | wxLEFT, TEXT_BEG_PADDING); @@ -710,7 +710,7 @@ void WipingPanel::update_warning_texts() auto text_box = box_vec[j]; wxString str = text_box->GetValue(); int actual_volume = wxAtoi(str); - if (actual_volume < m_min_flush_volume[i] || actual_volume > m_max_flush_volume) { + if (actual_volume < m_min_flush_volume[m_cur_extruder_id][i] || actual_volume > m_max_flush_volume) { if (text_box->GetForegroundColour() != g_warning_color) { text_box->SetForegroundColour(g_warning_color); text_box->Refresh(); @@ -775,7 +775,7 @@ void WipingPanel::calc_flushing_volumes() 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 = calc_flushing_volume(from, to, m_min_flush_volume[from_idx]); + int volume = calc_flushing_volume(from, to, m_min_flush_volume[m_cur_extruder_id][from_idx]); flushing_volume = std::max(flushing_volume, volume); } } diff --git a/src/slic3r/GUI/WipeTowerDialog.hpp b/src/slic3r/GUI/WipeTowerDialog.hpp index 1537607b4b..9de50c6dde 100644 --- a/src/slic3r/GUI/WipeTowerDialog.hpp +++ b/src/slic3r/GUI/WipeTowerDialog.hpp @@ -50,7 +50,7 @@ public: // BBS WipingPanel(wxWindow* parent, const std::vector& matrix, const std::vector& extruders, size_t cur_extruder_id, const std::vector& extruder_colours, Button* calc_button, - const std::vector& extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums); + const std::vector>& extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums); std::vector read_matrix_values(); std::vector read_extruders_values(); void toggle_advanced(bool user_action = false); @@ -78,7 +78,7 @@ private: bool advanced_matches_simple(); int calc_flushing_volume(const wxColour& from, const wxColour& to,int min_flush_volume); void update_warning_texts(); - + std::vector m_old; std::vector m_new; std::vector> edit_boxes; @@ -98,7 +98,7 @@ private: std::vector icon_list1; std::vector icon_list2; - const std::vector m_min_flush_volume; + const std::vector> m_min_flush_volume; const int m_max_flush_volume; wxTextCtrl* m_flush_multiplier_ebox = nullptr; @@ -119,7 +119,7 @@ class WipingDialog : public Slic3r::GUI::DPIDialog { public: WipingDialog(wxWindow* parent, const std::vector& matrix, const std::vector& extruders, const std::vector& extruder_colours, - const std::vector&extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums); + const std::vector>&extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums); std::vector get_matrix() const { return m_output_matrix; } std::vector get_extruders() const { return m_output_extruders; } wxBoxSizer* create_btn_sizer(long flags);