From 872f0342bb451788a7d1cc5f10b0d183d3038b82 Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Thu, 6 Mar 2025 20:35:10 +0800 Subject: [PATCH] FIX: Cannot send the print job when the printer is not at FDM mode jira: [STUDIO-10571] Change-Id: I20c02b79d09400dce2089856fde98d0cd50713ff (cherry picked from commit d327fa91781bbc568b26ba147f9dd9f625ff1022) --- src/slic3r/GUI/DeviceManager.cpp | 3 +-- src/slic3r/GUI/DeviceManager.hpp | 11 +++++++++-- src/slic3r/GUI/SelectMachine.cpp | 8 ++++++++ src/slic3r/GUI/SelectMachine.hpp | 1 + 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 8ff8e0952d..89ff0fdb04 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -6059,8 +6059,7 @@ void MachineObject::parse_new_info(json print) } if (device.contains("type")) { - int type = device["type"].get(); // FDM:1<<0 Laser:1<< Cut:1<<2 - is_fdm = type & 1; + m_device_mode = (DeviceMode)device["type"].get();// FDM:1<<0 Laser:1<< Cut:1<<2 } if (device.contains("bed_temp")) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index a0031ec419..d327483559 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -963,6 +963,13 @@ public: DOOR_OPEN_CHECK_ENABLE_PAUSE_PRINT = 2,/*pause print*/ }; + enum DeviceMode : unsigned int + { + DEVICE_MODE_FDM = 0x00000001, + DEVICE_MODE_LASER = 0x00000010, + DEVICE_MODE_CUT = 0x00000100, + }; + bool file_model_download{false}; bool virtual_camera{false}; @@ -1067,8 +1074,8 @@ public: bool is_makeworld_subtask(); /* device type */ - bool is_fdm{ true }; - inline bool is_fdm_type() const { return is_fdm; } + DeviceMode m_device_mode{ DEVICE_MODE_FDM }; + inline bool is_fdm_type() const { return m_device_mode == DEVICE_MODE_FDM; } int m_plate_index { -1 }; std::string m_gcode_file; diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 7f59fbb8ff..7da7586178 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -1773,6 +1773,8 @@ void SelectMachineDialog::show_status(PrintDialogStatus status, std::vectoris_fdm_type()) + { + show_status(PrintDialogStatus::PrintStatusModeNotFDM); + return; + } + if (is_blocking_printing(obj_)) { show_status(PrintDialogStatus::PrintStatusUnsupportedPrinter); return; diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index d6853ad824..e793d2e7fb 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -71,6 +71,7 @@ enum PrintDialogStatus { PrintStatusReadingFinished, PrintStatusReadingTimeout, PrintStatusInUpgrading, + PrintStatusModeNotFDM, PrintStatusNeedUpgradingAms, PrintStatusInSystemPrinting, PrintStatusInPrinting,