From 8e78915cd233e1934ff0d7d7de8d9183ddebef12 Mon Sep 17 00:00:00 2001 From: tao wang Date: Wed, 15 Jan 2025 20:37:48 +0800 Subject: [PATCH] ENH:O1D hot bed temperature no longer checks voltage jira:[STUDIO-9088] Change-Id: Ia11154705770919694c58b908b3886fe3feb432a (cherry picked from commit 7e16329d24c9e31ff5fc99eb74ab4b4b9a5e2b13) --- src/slic3r/GUI/DeviceManager.cpp | 9 +++++++++ src/slic3r/GUI/DeviceManager.hpp | 3 +++ src/slic3r/GUI/StatusPanel.cpp | 12 +++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 363ebb25a7..7e2edb3395 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -3256,6 +3256,15 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) } } + // bed temp range + if (jj.contains("bed_temp_range")) { + if (jj["bed_temp_range"].is_array()) { + for (auto it = jj["bed_temp_range"].begin(); it != jj["bed_temp_range"].end(); it++) { + bed_temp_range.push_back(it.value().get()); + } + } + } + //supported function if (jj.contains("support_chamber_temp_edit")) { if (jj["support_chamber_temp_edit"].is_boolean()) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index c51870ac84..6a74fd5cab 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -1001,6 +1001,9 @@ public: /*nozzle temp range*/ std::vector nozzle_temp_range; + /*temp temp range*/ + std::vector bed_temp_range; + /* sdcard */ MachineObject::SdcardState sdcard_state { NO_SDCARD }; MachineObject::SdcardState get_sdcard_state(); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 71f1429ff0..55bc134c9e 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2702,7 +2702,12 @@ void StatusPanel::update_temp_ctrl(MachineObject *obj) if (!obj) return; m_tempCtrl_bed->SetCurrTemp((int) obj->bed_temp); - m_tempCtrl_bed->SetMaxTemp(obj->get_bed_temperature_limit()); + + auto limit = obj->get_bed_temperature_limit(); + if (obj->bed_temp_range.size() > 1) { + limit = obj->bed_temp_range[1]; + } + m_tempCtrl_bed->SetMaxTemp(limit); if (obj->nozzle_temp_range.size() >= 2) { m_tempCtrl_nozzle->SetMinTemp(obj->nozzle_temp_range[0]); @@ -3816,7 +3821,12 @@ void StatusPanel::on_set_bed_temp() long bed_temp; if (str.ToLong(&bed_temp) && obj) { set_hold_count(m_temp_bed_timeout); + int limit = obj->get_bed_temperature_limit(); + if (obj->bed_temp_range.size() > 1) { + limit = obj->bed_temp_range[1]; + } + if (bed_temp >= limit) { BOOST_LOG_TRIVIAL(info) << "can not set over limit = " << limit << ", set temp = " << bed_temp; bed_temp = limit;