diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 77d96b3798..3a4d4d48a9 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -2764,6 +2764,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 f0a034c7f0..00bed2427d 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -1172,6 +1172,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 1d0fd618ee..dba3d74851 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2859,7 +2859,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) { @@ -4745,7 +4746,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;