From fcbad94b918c26f49fbd504efa57d0cfbd4f732d Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Mon, 30 Jun 2025 10:43:33 +0800 Subject: [PATCH] FIX: check filament type instead of filament id jira: [STUDIO-12954] Change-Id: Iab008c698e6c71a6df2ac4a81801681eb4b94d6c (cherry picked from commit 295a6d51ab2f59bfeef84e9ff33dac3c0aea1d93) --- src/slic3r/GUI/DeviceManager.cpp | 4 ++++ src/slic3r/GUI/DeviceManager.hpp | 1 + src/slic3r/GUI/SelectMachine.cpp | 4 ++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index da3f703b4c..d78f6fa919 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -903,6 +903,10 @@ std::string MachineObject::get_filament_id(std::string ams_id, std::string tray_ return this->get_tray(ams_id, tray_id).setting_id; } +std::string MachineObject::get_filament_type(const std::string& ams_id, const std::string& tray_id) const { + return this->get_tray(ams_id, tray_id).type; +} + void MachineObject::_parse_ams_status(int ams_status) { ams_status_sub = ams_status & 0xFF; diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 9f9762b726..3229c8398c 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -793,6 +793,7 @@ public: AmsTray *get_ams_tray(std::string ams_id, std::string tray_id); std::string get_filament_id(std::string ams_id, std::string tray_id) const; + std::string get_filament_type(const std::string& ams_id, const std::string& tray_id) const; // parse amsStatusMain and ams_status_sub void _parse_ams_status(int ams_status); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index ad9f90f1b7..f58489e0ee 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -1892,8 +1892,8 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event) continue; } - const auto& mapped_fila_id = obj_->get_filament_id(mapping_info.ams_id, mapping_info.slot_id); - if (!mapped_fila_id.empty() && (mapped_fila_id != mapping_info.filament_id)) { + const auto& mapped_fila_type = obj_->get_filament_type(mapping_info.ams_id, mapping_info.slot_id); + if (!mapped_fila_type.empty() && (mapped_fila_type != mapping_info.type)) { confirm_text.push_back(ConfirmBeforeSendInfo(_L("The filament type setting of external spool is different from the filament in the slicing file."))); has_slice_warnings = true; break;