diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 265f9f1f5..07dce2397 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -2808,6 +2808,11 @@ bool MachineObject::is_in_prepare() return print_status == "PREPARE"; } +bool MachineObject::is_in_printing_pause() const +{ + return print_status == "PAUSE"; +} + bool MachineObject::is_printing_finished() { if (print_status.compare("FINISH") == 0 diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 25042924d..4c3b11a6e 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -1165,6 +1165,7 @@ public: bool can_pause(); bool can_abort(); bool is_in_printing(); + bool is_in_printing_pause() const; bool is_in_prepare(); bool is_printing_finished(); bool is_core_xy(); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 469d8c900..359fdc706 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2832,7 +2832,8 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) } /*enable status*/ - if (obj->is_in_printing() || + /* Can do switch while printing pause STUDIO-9789*/ + if ((obj->is_in_printing() && !obj->is_in_printing_pause()) || obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE || targ_nozzle_id_from_pc != INVALID_NOZZLE_ID) { @@ -4660,7 +4661,8 @@ void StatusPanel::on_nozzle_selected(wxCommandEvent &event) { if (obj) { - if (obj->is_in_printing() || obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) { + /*Enable switch head while printing is paused STUDIO-9789*/ + if ((obj->is_in_printing() && !obj->is_in_printing_pause()) || obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) { MessageDialog dlg(nullptr, _L("The printer is busy on other print job"), _L("Error"), wxICON_WARNING | wxOK); dlg.ShowModal(); return;