From 1d4ce2bad5c4878f75208486d5862009154fc7ff Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Thu, 25 Jul 2024 17:03:01 +0800 Subject: [PATCH] FIX: only display used filament on filament dialog jira: none Change-Id: Id643d1efad26eb2719f873543c2e451fe59dc5bb --- src/slic3r/GUI/FilamentMapDialog.cpp | 10 +++++++++- src/slic3r/GUI/FilamentMapDialog.hpp | 6 +++++- src/slic3r/GUI/Plater.cpp | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/FilamentMapDialog.cpp b/src/slic3r/GUI/FilamentMapDialog.cpp index 7a96818c2..2ae37a75d 100644 --- a/src/slic3r/GUI/FilamentMapDialog.cpp +++ b/src/slic3r/GUI/FilamentMapDialog.cpp @@ -41,7 +41,11 @@ wxColour hex_to_color(const std::string &hex) return wxColour(r, g, b, a); } -FilamentMapDialog::FilamentMapDialog(wxWindow *parent, const DynamicPrintConfig *config, const std::vector &filament_map, bool is_auto) +FilamentMapDialog::FilamentMapDialog(wxWindow *parent, + const DynamicPrintConfig *config, + const std::vector &filament_map, + const std::vector &extruders, + bool is_auto) : wxDialog(parent, wxID_ANY, _L("Filament arrangement method of plate"), wxDefaultPosition, wxSize(2000, 1500)) , m_config(config) , m_filament_map(filament_map) @@ -71,6 +75,10 @@ FilamentMapDialog::FilamentMapDialog(wxWindow *parent, const DynamicPrintConfig std::vector filament_color = config->option("filament_colour")->values; for (size_t i = 0; i < filament_map.size(); ++i) { + auto iter = std::find(extruders.begin(), extruders.end(), i + 1); + if (iter == extruders.end()) + continue; + if (filament_map[i] == 1) { m_left_panel->AddColorBlock(hex_to_color(filament_color[i]), i + 1); } diff --git a/src/slic3r/GUI/FilamentMapDialog.hpp b/src/slic3r/GUI/FilamentMapDialog.hpp index f1a089702..e1e5f7e3b 100644 --- a/src/slic3r/GUI/FilamentMapDialog.hpp +++ b/src/slic3r/GUI/FilamentMapDialog.hpp @@ -15,7 +15,11 @@ class DragDropPanel; class FilamentMapDialog : public wxDialog { public: - FilamentMapDialog(wxWindow *parent, const DynamicPrintConfig *config, const std::vector &filament_map, bool is_auto); + FilamentMapDialog(wxWindow *parent, + const DynamicPrintConfig *config, + const std::vector &filament_map, + const std::vector &extruders, + bool is_auto); bool is_auto() const; const std::vector& get_filament_maps() { return m_filament_map; } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index c6fc94d39..9d76adb50 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -14345,7 +14345,7 @@ void Plater::open_platesettings_dialog(wxCommandEvent& evt) { void Plater::open_filament_map_setting_dialog(wxCommandEvent &evt) { PartPlate* curr_plate = p->partplate_list.get_curr_plate(); - FilamentMapDialog filament_dlg(this, config(), curr_plate->get_filament_maps(), curr_plate->get_filament_map_mode() == FilamentMapMode::fmmAuto); + FilamentMapDialog filament_dlg(this, config(), curr_plate->get_filament_maps(), curr_plate->get_extruders(true), curr_plate->get_filament_map_mode() == FilamentMapMode::fmmAuto); if (filament_dlg.ShowModal() == wxID_OK) { std::vector new_filament_maps = filament_dlg.get_filament_maps(); std::vector old_filament_maps = curr_plate->get_filament_maps();