From 27a23a8baf253f42158e8975fb09efc32ef598e7 Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Wed, 27 Aug 2025 17:30:46 +0800 Subject: [PATCH] ENH: support new feature of AMS jira: [STUDIO-14067][STUDIO-14069] Change-Id: Ib51f9ec6b387418f1817619973e926d3c9494935 (cherry picked from commit e2f63a8d1e3a1ea1f53578c611300ead12052b39) --- src/slic3r/GUI/StatusPanel.cpp | 14 +++++++------- src/slic3r/GUI/Widgets/AMSItem.cpp | 14 ++++++++++---- src/slic3r/GUI/Widgets/AMSItem.hpp | 1 - 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 2bcc04bec9..4369fea9d0 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -3179,15 +3179,16 @@ void StatusPanel::update_ams(MachineObject *obj) bool is_support_virtual_tray = obj->ams_support_virtual_tray; bool is_support_filament_backup = obj->is_support_filament_backup; - AMSModel ams_mode = AMSModel::GENERIC_AMS; - if (obj) { - if (obj->get_printer_ams_type() == "f1") { ams_mode = AMSModel::AMS_LITE; } - if (obj->is_security_control_ready()) - obj->check_ams_filament_valid(); + if (obj && obj->is_security_control_ready()) { + obj->check_ams_filament_valid(); } - if (obj->is_enable_np && obj->GetFilaSystem()->GetAmsList().size() > 0) { + + AMSModel ams_mode = AMSModel::GENERIC_AMS; + if ((obj->is_enable_np || obj->is_enable_ams_np) && obj->GetFilaSystem()->GetAmsList().size() > 0) { ams_mode = AMSModel(obj->GetFilaSystem()->GetAmsList().begin()->second->GetAmsType()); + } if (obj->get_printer_ams_type() == "f1") { + ams_mode = AMSModel::AMS_LITE;//STUDIO-14066 } if (!obj || !obj->is_connected()) { @@ -3228,7 +3229,6 @@ void StatusPanel::update_ams(MachineObject *obj) AMSinfo info; info.ams_id = ams->first; if (ams->second->IsExist() && info.parse_ams_info(obj, ams->second, obj->GetFilaSystem()->IsDetectRemainEnabled(), obj->is_support_ams_humidity)) { - if (ams_mode == AMSModel::AMS_LITE) { info.ams_type = AMSModel::AMS_LITE; } ams_info.push_back(info); } } diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp index f78a47e399..1a1290a8d5 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.cpp +++ b/src/slic3r/GUI/Widgets/AMSItem.cpp @@ -3041,10 +3041,7 @@ void AMSHumidity::msw_rescale() { /************************************************* Description:AmsItem **************************************************/ - -AmsItem::AmsItem() {} - -AmsItem::AmsItem(wxWindow *parent,AMSinfo info, AMSModel model, AMSPanelPos pos) : AmsItem() +AmsItem::AmsItem(wxWindow *parent,AMSinfo info, AMSModel model, AMSPanelPos pos) { m_bitmap_extra_framework = ScalableBitmap(this, "ams_extra_framework_mid_new", 134); @@ -3590,6 +3587,15 @@ void AmsItem::RenderLiteRoad(wxDC& dc, wxSize size) { auto a3_top = m_panel_pos == AMSPanelPos::RIGHT_PANEL ? size.y / 2 + FromDIP(8) : size.y / 2 + FromDIP(4); auto a4_top = m_panel_pos == AMSPanelPos::RIGHT_PANEL ? size.y / 2 + FromDIP(4) : size.y / 2 + FromDIP(8); + if (m_can_lib_list.empty()) { + //to Extruder + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); + auto top = std::min(a1_top, a2_top); + dc.DrawLine(end_top, top, end_top, size.y); + return; + } + try { auto a1_left = m_can_lib_list["0"]->GetScreenPosition().x + m_can_lib_list["0"]->GetSize().x / 2; diff --git a/src/slic3r/GUI/Widgets/AMSItem.hpp b/src/slic3r/GUI/Widgets/AMSItem.hpp index 747cd426f9..676fec6ec6 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.hpp +++ b/src/slic3r/GUI/Widgets/AMSItem.hpp @@ -759,7 +759,6 @@ Description:AmsItem class AmsItem : public wxWindow { public: - AmsItem(); AmsItem(wxWindow *parent, AMSinfo info, AMSModel model, AMSPanelPos pos); ~AmsItem();