From 21d1159cd54259fb53c005bbc1cb66b6b3b40c97 Mon Sep 17 00:00:00 2001 From: "zhou.xu" Date: Tue, 11 Feb 2025 17:05:21 +0800 Subject: [PATCH] ENH:add "is_filament_installed" in MachineObject jira: none Change-Id: Ifd71947a742c1ed37fa22bbf0bb2cd538ff47268 --- src/slic3r/GUI/DeviceManager.cpp | 19 +++++++++++++++++++ src/slic3r/GUI/DeviceManager.hpp | 2 +- src/slic3r/GUI/Plater.cpp | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 769be22be..65b73555c 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1648,6 +1648,25 @@ int MachineObject::get_bed_temperature_limit() return BED_TEMP_LIMIT; } +bool MachineObject::is_filament_installed() +{ + if (m_extder_data.extders.size() > 0) { + // right//or single + auto ext = m_extder_data.extders[MAIN_NOZZLE_ID]; + if (ext.ext_has_filament) { + return true; + } + } + /*left*/ + if (m_extder_data.extders.size() > 1) { + auto ext = m_extder_data.extders[DEPUTY_NOZZLE_ID]; + if (ext.ext_has_filament) { + return true; + } + } + return false; +} + bool MachineObject::is_makeworld_subtask() { if (model_task && model_task->design_id > 0) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index e4e5a5f8e..3f4e493d3 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -899,7 +899,7 @@ public: int printing_speed_mag = 100; PrintingSpeedLevel _parse_printing_speed_lvl(int lvl); int get_bed_temperature_limit(); - + bool is_filament_installed(); /* camera */ bool has_ipcam { false }; bool camera_recording { false }; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 6b6f02745..e5b413cd5 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2912,6 +2912,10 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) p->plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::NOT_CONNECTED, _L("Sync printer information")); return; } + if (!obj->is_filament_installed()) { + p->plater->pop_warning_and_go_to_device_page("", Plater::PrinterWarningType::UNINSTALL_FILAMENT, _L("Sync printer information")); + return; + } bool exist_at_list_one_filament =false; for (auto &cur : list) { auto temp_config = cur.second;