diff --git a/src/slic3r/GUI/EncodedFilament.cpp b/src/slic3r/GUI/EncodedFilament.cpp index 354b3e10bc..7a42653c63 100644 --- a/src/slic3r/GUI/EncodedFilament.cpp +++ b/src/slic3r/GUI/EncodedFilament.cpp @@ -81,8 +81,17 @@ void FilamentColorCodeQuery::LoadFromLocal() if (json_data_item.contains("fila_color")) { const auto& fila_color_strs = json_data_item["fila_color"].get>(); - for (const auto& color_str : fila_color_strs) { fila_color.m_colors.emplace(wxColour(color_str)); } + for (const auto& color_str : fila_color_strs) { + if (color_str.size() > 3) /* Skip the value like "#0"*/{ + fila_color.m_colors.emplace(wxColour(color_str)); + } + } } + + if (fila_color.m_colors.empty()) { + BOOST_LOG_TRIVIAL(warning) << "FilamentColorCodeQuery::LoadFromLocal: No colors found for fila_color_code: " << fila_color_code; + continue; // Skip if no colors are defined + }; const wxString& fila_color_type = json_data_item.contains("fila_color_type") ? wxString::FromUTF8(json_data_item["fila_color_type"].get()) : wxString(); if (fila_color_type == wxString::FromUTF8("单色")) { diff --git a/src/slic3r/GUI/EncodedFilament.hpp b/src/slic3r/GUI/EncodedFilament.hpp index b4058d8e70..9423f6bfe1 100644 --- a/src/slic3r/GUI/EncodedFilament.hpp +++ b/src/slic3r/GUI/EncodedFilament.hpp @@ -64,6 +64,7 @@ struct wxColorSorter if (ha.h != hb.h) return ha.h < hb.h; if (ha.s != hb.s) return ha.s < hb.s; if (ha.v != hb.v) return ha.v < hb.v; + if (lhs_it.Alpha() != rhs_it.Alpha()) return lhs_it.Alpha() < rhs_it.Alpha(); return false; } }; @@ -119,6 +120,10 @@ public: if (ha.s != hb.s) return ha.s < hb.s; if (ha.v != hb.v) return ha.v < hb.v; + int lhs_alpha = lhs_it->Alpha(); + int rhs_alpha = rhs_it->Alpha(); + if (lhs_alpha != rhs_alpha) return lhs_alpha < rhs_alpha; + lhs_it++; rhs_it++; }