ENH: clean codes about device

JIRA: [STUDIO-13609]
Change-Id: I591de7033360b9570600006cfbce2148a8d031d5
(cherry picked from commit e9c774be8f4c89b8dafa14ef56913612fb68bd0c)
This commit is contained in:
xin.zhang
2025-08-01 17:34:35 +08:00
committed by Noisyfox
parent e17c8bfb80
commit 4a787f6ff8
115 changed files with 7238 additions and 5492 deletions

View File

@@ -7,6 +7,9 @@
#include "slic3r/GUI/MsgDialog.hpp"
#include "slic3r/GUI/DeviceTab/uiAmsHumidityPopup.h"
#include "slic3r/GUI/DeviceCore/DevManager.h"
#include "slic3r/GUI/DeviceCore/DevFilaSystem.h"
#include <wx/simplebook.h>
#include <wx/dcgraph.h>
@@ -33,7 +36,6 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
parse_object(obj);
}
m_extder_data.total_extder_count = 1;
SetBackgroundColour(*wxWHITE);
// normal mode
//Freeze();
@@ -174,7 +176,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
/*option mid*/
m_extruder = new AMSextruder(m_amswin, wxID_ANY, m_extder_data.total_extder_count, wxDefaultPosition, AMS_EXTRUDER_SIZE);
m_extruder = new AMSextruder(m_amswin, wxID_ANY, m_total_ext_count, wxDefaultPosition, AMS_EXTRUDER_SIZE);
m_sizer_option_mid->Add( m_extruder, 0, wxALIGN_CENTER, 0 );
@@ -342,8 +344,8 @@ std::string AMSControl::GetCurrentCan(std::string amsid)
}
bool AMSControl::IsAmsInRightPanel(std::string ams_id) {
if (m_extder_data.total_extder_count == 2){
if (m_ams_item_list.find(ams_id) != m_ams_item_list.end() && m_ams_item_list[ams_id]->get_nozzle_id() == MAIN_NOZZLE_ID) {
if (m_total_ext_count == 2){
if (m_ams_item_list.find(ams_id) != m_ams_item_list.end() && m_ams_item_list[ams_id]->get_nozzle_id() == MAIN_EXTRUDER_ID) {
return true;
}
else{
@@ -351,7 +353,7 @@ bool AMSControl::IsAmsInRightPanel(std::string ams_id) {
}
}
else{
for (auto id : m_item_ids[MAIN_NOZZLE_ID]){
for (auto id : m_item_ids[MAIN_EXTRUDER_ID]){
if (id == ams_id){
return true;
}
@@ -614,17 +616,17 @@ void AMSControl::CreateAmsDoubleNozzle(const std::string &series_name, const std
//Freeze();
for (auto ams_info = m_ams_info.begin(); ams_info != m_ams_info.end(); ams_info++){
if (ams_info->cans.size() == GENERIC_AMS_SLOT_NUM){
ams_info->nozzle_id == MAIN_NOZZLE_ID ? m_item_ids[MAIN_NOZZLE_ID].push_back(ams_info->ams_id) : m_item_ids[DEPUTY_NOZZLE_ID].push_back(ams_info->ams_id);
ams_info->nozzle_id == MAIN_EXTRUDER_ID ? m_item_ids[MAIN_EXTRUDER_ID].push_back(ams_info->ams_id) : m_item_ids[DEPUTY_EXTRUDER_ID].push_back(ams_info->ams_id);
AddAmsPreview(*ams_info, ams_info->ams_type);
AddAms(*ams_info);
}
else if (ams_info->cans.size() == 1){
if (ams_info->nozzle_id == MAIN_NOZZLE_ID){
if (ams_info->nozzle_id == MAIN_EXTRUDER_ID){
single_info_right.push_back(*ams_info);
if (single_info_right.size() == 2){
single_info_right[0].nozzle_id == MAIN_NOZZLE_ID ? m_item_ids[MAIN_NOZZLE_ID].push_back(single_info_right[0].ams_id) : m_item_ids[DEPUTY_NOZZLE_ID].push_back(single_info_right[0].ams_id);
single_info_right[1].nozzle_id == MAIN_NOZZLE_ID ? m_item_ids[MAIN_NOZZLE_ID].push_back(single_info_right[1].ams_id) : m_item_ids[DEPUTY_NOZZLE_ID].push_back(single_info_right[1].ams_id);
single_info_right[0].nozzle_id == MAIN_EXTRUDER_ID ? m_item_ids[MAIN_EXTRUDER_ID].push_back(single_info_right[0].ams_id) : m_item_ids[DEPUTY_EXTRUDER_ID].push_back(single_info_right[0].ams_id);
single_info_right[1].nozzle_id == MAIN_EXTRUDER_ID ? m_item_ids[MAIN_EXTRUDER_ID].push_back(single_info_right[1].ams_id) : m_item_ids[DEPUTY_EXTRUDER_ID].push_back(single_info_right[1].ams_id);
AddAms(single_info_right, series_name, printer_type);
AddAmsPreview(single_info_right, AMSPanelPos::RIGHT_PANEL);
pair_id.push_back(std::make_pair(single_info_right[0].ams_id, single_info_right[1].ams_id));
@@ -634,8 +636,8 @@ void AMSControl::CreateAmsDoubleNozzle(const std::string &series_name, const std
else if (ams_info->nozzle_id == 1){
single_info_left.push_back(*ams_info);
if (single_info_left.size() == 2){
single_info_left[0].nozzle_id == MAIN_NOZZLE_ID ? m_item_ids[MAIN_NOZZLE_ID].push_back(single_info_left[0].ams_id) : m_item_ids[DEPUTY_NOZZLE_ID].push_back(single_info_left[0].ams_id);
single_info_left[1].nozzle_id == MAIN_NOZZLE_ID ? m_item_ids[MAIN_NOZZLE_ID].push_back(single_info_left[1].ams_id) : m_item_ids[DEPUTY_NOZZLE_ID].push_back(single_info_left[1].ams_id);
single_info_left[0].nozzle_id == MAIN_EXTRUDER_ID ? m_item_ids[MAIN_EXTRUDER_ID].push_back(single_info_left[0].ams_id) : m_item_ids[DEPUTY_EXTRUDER_ID].push_back(single_info_left[0].ams_id);
single_info_left[1].nozzle_id == MAIN_EXTRUDER_ID ? m_item_ids[MAIN_EXTRUDER_ID].push_back(single_info_left[1].ams_id) : m_item_ids[DEPUTY_EXTRUDER_ID].push_back(single_info_left[1].ams_id);
AddAms(single_info_left, series_name, printer_type);
AddAmsPreview(single_info_left, AMSPanelPos::LEFT_PANEL);
pair_id.push_back(std::make_pair(single_info_left[0].ams_id, single_info_left[1].ams_id));
@@ -660,9 +662,9 @@ void AMSControl::CreateAmsDoubleNozzle(const std::string &series_name, const std
//wait add
single_info_right[0].nozzle_id == MAIN_NOZZLE_ID ? m_item_ids[MAIN_NOZZLE_ID].push_back(single_info_right[0].ams_id) : m_item_ids[DEPUTY_NOZZLE_ID].push_back(single_info_right[0].ams_id);
single_info_right[0].nozzle_id == MAIN_EXTRUDER_ID ? m_item_ids[MAIN_EXTRUDER_ID].push_back(single_info_right[0].ams_id) : m_item_ids[DEPUTY_EXTRUDER_ID].push_back(single_info_right[0].ams_id);
if (single_info_right.size() == 2){
single_info_right[1].nozzle_id == MAIN_NOZZLE_ID ? m_item_ids[MAIN_NOZZLE_ID].push_back(single_info_right[1].ams_id) : m_item_ids[DEPUTY_NOZZLE_ID].push_back(single_info_right[1].ams_id);
single_info_right[1].nozzle_id == MAIN_EXTRUDER_ID ? m_item_ids[MAIN_EXTRUDER_ID].push_back(single_info_right[1].ams_id) : m_item_ids[DEPUTY_EXTRUDER_ID].push_back(single_info_right[1].ams_id);
pair_id.push_back(std::make_pair(single_info_right[0].ams_id, single_info_right[1].ams_id));
}
AddAms(single_info_right, series_name, printer_type);
@@ -677,9 +679,9 @@ void AMSControl::CreateAmsDoubleNozzle(const std::string &series_name, const std
}
}
//wait add
single_info_left[0].nozzle_id == MAIN_NOZZLE_ID ? m_item_ids[MAIN_NOZZLE_ID].push_back(single_info_left[0].ams_id) : m_item_ids[DEPUTY_NOZZLE_ID].push_back(single_info_left[0].ams_id);
single_info_left[0].nozzle_id == MAIN_EXTRUDER_ID ? m_item_ids[MAIN_EXTRUDER_ID].push_back(single_info_left[0].ams_id) : m_item_ids[DEPUTY_EXTRUDER_ID].push_back(single_info_left[0].ams_id);
if (single_info_left.size() == 2){
single_info_left[1].nozzle_id == MAIN_NOZZLE_ID ? m_item_ids[MAIN_NOZZLE_ID].push_back(single_info_left[1].ams_id) : m_item_ids[DEPUTY_NOZZLE_ID].push_back(single_info_left[1].ams_id);
single_info_left[1].nozzle_id == MAIN_EXTRUDER_ID ? m_item_ids[MAIN_EXTRUDER_ID].push_back(single_info_left[1].ams_id) : m_item_ids[DEPUTY_EXTRUDER_ID].push_back(single_info_left[1].ams_id);
pair_id.push_back(std::make_pair(single_info_left[0].ams_id, single_info_left[1].ams_id));
}
AddAmsPreview(single_info_left, AMSPanelPos::LEFT_PANEL);
@@ -705,19 +707,19 @@ void AMSControl::CreateAmsDoubleNozzle(const std::string &series_name, const std
auto right_init_mode = findFirstMode(AMSPanelPos::RIGHT_PANEL);
m_down_road->UpdateLeft(m_extder_data.total_extder_count, left_init_mode);
m_down_road->UpdateRight(m_extder_data.total_extder_count, right_init_mode);
m_down_road->UpdateLeft(2, left_init_mode);
m_down_road->UpdateRight(2, right_init_mode);
m_extruder->updateNozzleNum(m_extder_data.total_extder_count);
m_extruder->updateNozzleNum(2);
m_current_show_ams_left = m_item_ids[DEPUTY_NOZZLE_ID].size() > 0 ? m_item_ids[DEPUTY_NOZZLE_ID][0] : "";
m_current_show_ams_right = m_item_ids[MAIN_NOZZLE_ID].size() > 0 ? m_item_ids[MAIN_NOZZLE_ID][0] : "";
m_current_show_ams_left = m_item_ids[DEPUTY_EXTRUDER_ID].size() > 0 ? m_item_ids[DEPUTY_EXTRUDER_ID][0] : "";
m_current_show_ams_right = m_item_ids[MAIN_EXTRUDER_ID].size() > 0 ? m_item_ids[MAIN_EXTRUDER_ID][0] : "";
m_current_ams = "";
m_down_road->UpdatePassRoad(AMSPanelPos::LEFT_PANEL, -1, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false, DEPUTY_NOZZLE_ID);
m_extruder->OnAmsLoading(false, DEPUTY_EXTRUDER_ID);
m_down_road->UpdatePassRoad(AMSPanelPos::RIGHT_PANEL, -1, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false, MAIN_NOZZLE_ID);
m_extruder->OnAmsLoading(false, MAIN_EXTRUDER_ID);
m_amswin->Layout();
m_amswin->Fit();
@@ -735,13 +737,13 @@ void AMSControl::CreateAmsSingleNozzle(const std::string &series_name, const std
//add ams data
for (auto ams_info = m_ams_info.begin(); ams_info != m_ams_info.end(); ams_info++) {
if (ams_info->cans.size() == GENERIC_AMS_SLOT_NUM) {
m_item_ids[DEPUTY_NOZZLE_ID].push_back(ams_info->ams_id);
m_item_ids[DEPUTY_EXTRUDER_ID].push_back(ams_info->ams_id);
AddAmsPreview(*ams_info, ams_info->ams_type);
AddAms(*ams_info, AMSPanelPos::LEFT_PANEL);
//AddExtraAms(*ams_info);
}
else if (ams_info->cans.size() == 1) {
m_item_ids[DEPUTY_NOZZLE_ID].push_back(ams_info->ams_id);
m_item_ids[DEPUTY_EXTRUDER_ID].push_back(ams_info->ams_id);
AddAmsPreview(*ams_info, ams_info->ams_type);
AddAms(*ams_info, AMSPanelPos::LEFT_PANEL);
@@ -758,8 +760,8 @@ void AMSControl::CreateAmsSingleNozzle(const std::string &series_name, const std
}
}
if (single_info.size() > 0){
m_item_ids[DEPUTY_NOZZLE_ID].push_back(single_info[0].ams_id);
m_item_nums[DEPUTY_NOZZLE_ID]++;
m_item_ids[DEPUTY_EXTRUDER_ID].push_back(single_info[0].ams_id);
m_item_nums[DEPUTY_EXTRUDER_ID]++;
AddAms(single_info, series_name, printer_type, AMSPanelPos::LEFT_PANEL);
AddAmsPreview(single_info, AMSPanelPos::LEFT_PANEL);
single_info.clear();
@@ -772,7 +774,7 @@ void AMSControl::CreateAmsSingleNozzle(const std::string &series_name, const std
}
single_info.push_back(m_ext_info[0]);
m_item_ids[MAIN_NOZZLE_ID].push_back(single_info[0].ams_id);
m_item_ids[MAIN_EXTRUDER_ID].push_back(single_info[0].ams_id);
AddAms(single_info, series_name, printer_type, AMSPanelPos::RIGHT_PANEL);
auto left_init_mode = findFirstMode(AMSPanelPos::LEFT_PANEL);
auto right_init_mode = findFirstMode(AMSPanelPos::RIGHT_PANEL);
@@ -802,14 +804,14 @@ void AMSControl::CreateAmsSingleNozzle(const std::string &series_name, const std
m_down_road->UpdateLeft(1, left_init_mode);
m_down_road->UpdateRight(1, right_init_mode);
}
m_current_show_ams_left = m_item_ids[DEPUTY_NOZZLE_ID].size() > 0 ? m_item_ids[DEPUTY_NOZZLE_ID][0] : "";
m_current_show_ams_right = m_item_ids[MAIN_NOZZLE_ID].size() > 0 ? m_item_ids[MAIN_NOZZLE_ID][0] : "";
m_current_show_ams_left = m_item_ids[DEPUTY_EXTRUDER_ID].size() > 0 ? m_item_ids[DEPUTY_EXTRUDER_ID][0] : "";
m_current_show_ams_right = m_item_ids[MAIN_EXTRUDER_ID].size() > 0 ? m_item_ids[MAIN_EXTRUDER_ID][0] : "";
m_current_ams = "";
m_down_road->UpdatePassRoad(AMSPanelPos::LEFT_PANEL, -1, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_down_road->UpdatePassRoad(AMSPanelPos::RIGHT_PANEL, -1, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->updateNozzleNum(1);
m_extruder->OnAmsLoading(false, MAIN_NOZZLE_ID);
m_extruder->OnAmsLoading(false, MAIN_EXTRUDER_ID);
m_amswin->Layout();
m_amswin->Fit();
@@ -911,7 +913,7 @@ void AMSControl::UpdateAms(const std::string &series_name,
const std::string &printer_type,
std::vector<AMSinfo> ams_info,
std::vector<AMSinfo> ext_info,
ExtderData data,
DevExtderSystem data,
std::string dev_id,
bool is_reset,
bool test)
@@ -921,7 +923,8 @@ void AMSControl::UpdateAms(const std::string &series_name,
bool fresh = false;
// basic check
if (m_ams_info.size() == ams_info.size() && m_extder_data.total_extder_count == data.total_extder_count && m_dev_id == dev_id && m_ext_info.size() == ext_info.size()) {
if (m_ams_info.size() == ams_info.size() && m_total_ext_count == data.GetTotalExtderCount() && m_dev_id == dev_id && m_ext_info.size() == ext_info.size())
{
for (int i = 0; i < m_ams_info.size(); i++){
if (m_ams_info[i].ams_id != ams_info[i].ams_id){
fresh = true;
@@ -938,13 +941,13 @@ void AMSControl::UpdateAms(const std::string &series_name,
m_ams_info.clear();
m_ams_info = ams_info;
m_total_ext_count = data.GetTotalExtderCount();
m_ext_info.clear();
m_ext_info = ext_info;
m_extder_data = data;
m_dev_id = dev_id;
if (fresh){
ClearAms();
if (m_extder_data.total_extder_count >= 2){
if (m_total_ext_count >= 2){
CreateAmsDoubleNozzle(series_name, printer_type);
}else{
CreateAmsSingleNozzle(series_name, printer_type);
@@ -986,77 +989,7 @@ void AMSControl::UpdateAms(const std::string &series_name,
{ ams_prv.second->Update(item->second->get_ams_info());
}
}
/*if (m_current_show_ams.empty() && !is_reset) {
if (ext_info.size() > 0) {
SwitchAms(ext_info[0].ams_id);
}
}*/
//m_simplebook_ams_left->SetSelection(m_simplebook_ams_left->m_first);
}
//else
//{
// static bool first_time = true;
// bool fresh = false;
// static std::vector<AMSinfo>ams_info;
// int nozzle_num = 2;
// if (first_time){
// ams_info = GenerateSimulateData();
// fresh = true;
// first_time = false;
// }
// //Freeze();
// // update item
// m_ams_info.clear();
// m_ams_info = ams_info;
// m_ext_info.clear();
// m_ext_info.push_back(ext_info[0]);
// m_ext_info.push_back(ext_info[0]);
// m_ext_info[0].ams_id = std::to_string(VIRTUAL_TRAY_MAIN_ID);
// m_ext_info[0].nozzle_id = MAIN_NOZZLE_ID;
// m_ext_info[1].ams_id = std::to_string(VIRTUAL_TRAY_DEPUTY_ID);
// m_ext_info[1].nozzle_id = DEPUTY_NOZZLE_ID;
// m_extder_data = data;
// if (fresh){
// ClearAms();
// if (m_extder_data.total_extder_count >= 2) {
// CreateAmsDoubleNozzle();
// }
// else {
// CreateAmsSingleNozzle();
// }
// SetSize(wxSize(FromDIP(578), -1));
// SetMinSize(wxSize(FromDIP(578), -1));
// Layout();
// }
// //Thaw();
// // update cans
// for (auto ams_item : m_ams_item_list) {
// std::string ams_id = ams_item.first;
// AmsItem* cans = ams_item.second;
// if (atoi(cans->get_ams_id().c_str()) >= VIRTUAL_TRAY_DEPUTY_ID) {
// for (auto ifo : m_ext_info) {
// if (ifo.ams_id == ams_id) {
// cans->Update(ifo);
// cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true);
// }
// }
// }
// else {
// for (auto ifo : m_ams_info) {
// if (ifo.ams_id == ams_id) {
// cans->Update(ifo);
// cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true);
// }
// }
// }
// }
//}
/*update humidity popup*/
if (m_percent_humidity_dry_popup->IsShown())
@@ -1079,7 +1012,7 @@ void AMSControl::UpdateAms(const std::string &series_name,
}
/*update ams extruder*/
if (m_extruder->updateNozzleNum(m_extder_data.total_extder_count, series_name))
if (m_extruder->updateNozzleNum(m_total_ext_count, series_name))
{
m_amswin->Layout();
}
@@ -1089,12 +1022,12 @@ void AMSControl::AddAmsPreview(AMSinfo info, AMSModel type)
{
AMSPreview *ams_prv = nullptr;
if (info.nozzle_id == MAIN_NOZZLE_ID)
if (info.nozzle_id == MAIN_EXTRUDER_ID)
{
ams_prv = new AMSPreview(m_panel_prv_right, wxID_ANY, info, type);
m_sizer_prv_right->Add(ams_prv, 0, wxALIGN_CENTER | wxLEFT, FromDIP(6));
}
else if (info.nozzle_id == DEPUTY_NOZZLE_ID)
else if (info.nozzle_id == DEPUTY_EXTRUDER_ID)
{
ams_prv = new AMSPreview(m_panel_prv_left, wxID_ANY, info, type);
m_sizer_prv_left->Add(ams_prv, 0, wxALIGN_CENTER | wxLEFT, FromDIP(6));
@@ -1121,11 +1054,11 @@ void AMSControl::createAms(wxSimplebook* parent, int& idx, AMSinfo info, AMSPane
AMSRoadShowMode AMSControl::findFirstMode(AMSPanelPos pos) {
auto init_mode = AMSRoadShowMode::AMS_ROAD_MODE_NONE;
std::string ams_id = "";
if (pos == AMSPanelPos::LEFT_PANEL && m_item_ids[DEPUTY_NOZZLE_ID].size() > 0){
ams_id = m_item_ids[DEPUTY_NOZZLE_ID][0];
if (pos == AMSPanelPos::LEFT_PANEL && m_item_ids[DEPUTY_EXTRUDER_ID].size() > 0){
ams_id = m_item_ids[DEPUTY_EXTRUDER_ID][0];
}
else if (pos == AMSPanelPos::RIGHT_PANEL && m_item_ids[MAIN_NOZZLE_ID].size() > 0){
ams_id = m_item_ids[MAIN_NOZZLE_ID][0];
else if (pos == AMSPanelPos::RIGHT_PANEL && m_item_ids[MAIN_EXTRUDER_ID].size() > 0){
ams_id = m_item_ids[MAIN_EXTRUDER_ID][0];
}
auto item = m_ams_item_list.find(ams_id);
@@ -1184,7 +1117,7 @@ void AMSControl::createAmsPanel(wxSimplebook *parent, int &idx, std::vector<AMSi
book_sizer->Add(ams1, 0, wxLEFT, (book_panel->GetSize().x - ams1->GetSize().x) / 2);
}
else{
auto ext_image = new AMSExtImage(book_panel, pos, &m_extder_data);
auto ext_image = new AMSExtImage(book_panel, pos, m_total_ext_count, false);
book_sizer->Add(ams1, 0, wxLEFT, FromDIP(30));
book_sizer->Add(ext_image, 0, wxEXPAND | wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(30));
ext_image->setTotalExtNum(series_name, printer_type, total_ext_num);
@@ -1211,15 +1144,15 @@ void AMSControl::createAmsPanel(wxSimplebook *parent, int &idx, std::vector<AMSi
void AMSControl::AddAms(AMSinfo info, AMSPanelPos pos)
{
if (m_extder_data.total_extder_count > 1){
if (info.nozzle_id == MAIN_NOZZLE_ID){
if (m_total_ext_count > 1){
if (info.nozzle_id == MAIN_EXTRUDER_ID){
createAms(m_simplebook_ams_right, m_right_page_index, info, AMSPanelPos::RIGHT_PANEL);
}
else if (info.nozzle_id == DEPUTY_NOZZLE_ID){
else if (info.nozzle_id == DEPUTY_EXTRUDER_ID){
createAms(m_simplebook_ams_left, m_left_page_index, info, AMSPanelPos::LEFT_PANEL);
}
}
else if (m_extder_data.total_extder_count == 1){
else if (m_total_ext_count == 1){
createAms(m_simplebook_ams_left, m_left_page_index, info, AMSPanelPos::LEFT_PANEL);
}
m_simplebook_ams_left->Layout();
@@ -1252,20 +1185,20 @@ void AMSControl::AddAms(std::vector<AMSinfo> single_info, const std::string &ser
if (single_info.size() <= 0){
return;
}
if (m_extder_data.total_extder_count == 2) {
if (single_info[0].nozzle_id == MAIN_NOZZLE_ID) {
createAmsPanel(m_simplebook_ams_right, m_right_page_index, single_info, series_name, printer_type, AMSPanelPos::RIGHT_PANEL, m_extder_data.total_extder_count);
if (m_total_ext_count == 2) {
if (single_info[0].nozzle_id == MAIN_EXTRUDER_ID) {
createAmsPanel(m_simplebook_ams_right, m_right_page_index, single_info, series_name, printer_type, AMSPanelPos::RIGHT_PANEL, m_total_ext_count);
}
else if (single_info[0].nozzle_id == DEPUTY_NOZZLE_ID) {
createAmsPanel(m_simplebook_ams_left, m_left_page_index, single_info, series_name, printer_type, AMSPanelPos::LEFT_PANEL, m_extder_data.total_extder_count);
else if (single_info[0].nozzle_id == DEPUTY_EXTRUDER_ID) {
createAmsPanel(m_simplebook_ams_left, m_left_page_index, single_info, series_name, printer_type, AMSPanelPos::LEFT_PANEL, m_total_ext_count);
}
}
else if (m_extder_data.total_extder_count == 1) {
else if (m_total_ext_count == 1) {
if (pos == AMSPanelPos::RIGHT_PANEL) {
createAmsPanel(m_simplebook_ams_right, m_right_page_index, single_info, series_name, printer_type, AMSPanelPos::RIGHT_PANEL, m_extder_data.total_extder_count);
createAmsPanel(m_simplebook_ams_right, m_right_page_index, single_info, series_name, printer_type, AMSPanelPos::RIGHT_PANEL, m_total_ext_count);
}
else {
createAmsPanel(m_simplebook_ams_left, m_left_page_index, single_info, series_name, printer_type, AMSPanelPos::LEFT_PANEL, m_extder_data.total_extder_count);
createAmsPanel(m_simplebook_ams_left, m_left_page_index, single_info, series_name, printer_type, AMSPanelPos::LEFT_PANEL, m_total_ext_count);
}
}
@@ -1391,7 +1324,7 @@ void AMSControl::SwitchAms(std::string ams_id)
for (auto ams_item : m_ams_item_list) {
AmsItem* item = ams_item.second;
if (item->get_ams_id() == ams_id) {
auto ids = item->get_panel_pos() == AMSPanelPos::LEFT_PANEL ? m_item_ids[DEPUTY_NOZZLE_ID] : m_item_ids[MAIN_NOZZLE_ID];
auto ids = item->get_panel_pos() == AMSPanelPos::LEFT_PANEL ? m_item_ids[DEPUTY_EXTRUDER_ID] : m_item_ids[MAIN_EXTRUDER_ID];
auto pos = item->get_panel_pos();
for (auto id : ids) {
if (id == item->get_ams_id()) {
@@ -1399,16 +1332,16 @@ void AMSControl::SwitchAms(std::string ams_id)
if (item->get_can_count() == GENERIC_AMS_SLOT_NUM) {
if (item->get_ams_model() == AMSModel::AMS_LITE) {
if (pos == AMSPanelPos::LEFT_PANEL) {
m_down_road->UpdateLeft(m_extder_data.total_extder_count, AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE);
m_down_road->UpdateLeft(m_total_ext_count, AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE);
} else {
m_down_road->UpdateRight(m_extder_data.total_extder_count, AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE);
m_down_road->UpdateRight(m_total_ext_count, AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE);
}
}
else {
if (pos == AMSPanelPos::LEFT_PANEL) {
m_down_road->UpdateLeft(m_extder_data.total_extder_count, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
m_down_road->UpdateLeft(m_total_ext_count, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
} else {
m_down_road->UpdateRight(m_extder_data.total_extder_count, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
m_down_road->UpdateRight(m_total_ext_count, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
}
}
}
@@ -1424,8 +1357,8 @@ void AMSControl::SwitchAms(std::string ams_id)
break;
}
}
pos == AMSPanelPos::LEFT_PANEL ? m_down_road->UpdateLeft(m_extder_data.total_extder_count, mode)
: m_down_road->UpdateRight(m_extder_data.total_extder_count, mode);
pos == AMSPanelPos::LEFT_PANEL ? m_down_road->UpdateLeft(m_total_ext_count, mode)
: m_down_road->UpdateRight(m_total_ext_count, mode);
if (pos == AMSPanelPos::LEFT_PANEL) {
m_down_road->UpdatePassRoad(AMSPanelPos::LEFT_PANEL, -1, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
} else {
@@ -1710,12 +1643,12 @@ void AMSControl::on_ams_setting_click(wxMouseEvent &event)
}
void AMSControl::parse_object(MachineObject* obj) {
if (!obj || obj->amsList.size() == 0)
if (!obj || obj->GetFilaSystem()->GetAmsList().size() == 0)
{
return;
}
m_ams_info.clear();
for (auto ams : obj->amsList)
for (auto ams : obj->GetFilaSystem()->GetAmsList())
{
AMSinfo info;
info.parse_ams_info(obj, ams.second);

View File

@@ -14,6 +14,8 @@
#include <wx/animate.h>
#include <wx/dynarray.h>
#include "slic3r/GUI/DeviceCore/DevExtruderSystem.h"
namespace Slic3r { namespace GUI {
@@ -43,11 +45,11 @@ protected:
std::map<std::string, AmsItem*> m_ams_item_list;
std::map<std::string, AMSExtImage*> m_ext_image_list;
ExtderData m_extder_data;
std::string m_dev_id;
std::vector<std::vector<std::string>> m_item_ids{ {}, {} };
std::vector<std::pair<string, string>> pair_id;
int m_total_ext_count = 1;
AMSextruder *m_extruder{nullptr};
AMSRoadDownPart* m_down_road{ nullptr };
@@ -158,7 +160,7 @@ public:
const std::string &printer_type,
std::vector<AMSinfo> ams_info,
std::vector<AMSinfo> ext_info,
ExtderData data,
DevExtderSystem data,
std::string dev_id,
bool is_reset = true,
bool test = false);

View File

@@ -7,6 +7,10 @@
#include "slic3r/GUI/DeviceTab/uiAmsHumidityPopup.h"
#include "slic3r/GUI/DeviceCore/DevFilaSystem.h"
#include "slic3r/GUI/DeviceCore/DevConfig.h"
#include "slic3r/GUI/DeviceCore/DevManager.h"
#include <wx/simplebook.h>
#include <wx/dcgraph.h>
@@ -42,30 +46,30 @@ namespace Slic3r { namespace GUI {
//#define AMS_SINGLE_CAN_SIZE wxSize(FromDIP(78), 144)
#define AMS_CANS_WINDOW_SIZE wxSize(FromDIP(264), FromDIP(174))
#define AMS_SINGLE_CAN_SIZE wxSize(FromDIP(78), FromDIP(174))
bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, bool humidity_flag)
bool AMSinfo::parse_ams_info(MachineObject *obj, DevAms *ams, bool remain_flag, bool humidity_flag)
{
if (!ams) return false;
this->ams_id = ams->id;
this->ams_id = ams->GetAmsId();
if (ams->type == 1 || ams->type == 3 || ams->type == N3S_AMS){
this->ams_humidity = ams->humidity;
if (ams->SupportHumidity()){
this->ams_humidity = ams->GetHumidityLevel();
}
else{
this->ams_humidity = -1;
}
this->humidity_raw = ams->humidity_raw;
this->left_dray_time = ams->left_dry_time;
this->current_temperature = ams->current_temperature;
this->ams_type = AMSModel(ams->type);
this->humidity_raw = ams->GetHumidityPercent();
this->left_dray_time = ams->GetLeftDryTime();
this->current_temperature = ams->GetCurrentTemperature();
this->ams_type = AMSModel(ams->GetAmsType());
nozzle_id = ams->nozzle;
nozzle_id = ams->GetExtruderId();
cans.clear();
for (int i = 0; i < ams->trayList.size(); i++) {
auto it = ams->trayList.find(std::to_string(i));
for (int i = 0; i < ams->GetTrays().size(); i++) {
auto it = ams->GetTrays().find(std::to_string(i));
Caninfo info;
// tray is exists
if (it != ams->trayList.end() && it->second->is_exists) {
if (it != ams->GetTrays().end() && it->second->is_exists) {
if (it->second->is_tray_info_ready()) {
info.can_id = it->second->id;
info.ctype = it->second->ctype;
@@ -73,23 +77,23 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo
info.cali_idx = it->second->cali_idx;
info.filament_id = it->second->setting_id;
if (!it->second->color.empty()) {
info.material_colour = AmsTray::decode_color(it->second->color);
info.material_colour = DevAmsTray::decode_color(it->second->color);
} else {
// set to white by default
info.material_colour = AMS_TRAY_DEFAULT_COL;
}
for (std::string cols:it->second->cols) {
info.material_cols.push_back(AmsTray::decode_color(cols));
info.material_cols.push_back(DevAmsTray::decode_color(cols));
}
if (MachineObject::is_bbl_filament(it->second->tag_uid)) {
if (DevFilaSystem::IsBBL_Filament(it->second->tag_uid)) {
info.material_state = AMSCanType::AMS_CAN_TYPE_BRAND;
} else {
info.material_state = AMSCanType::AMS_CAN_TYPE_THIRDBRAND;
}
if (!MachineObject::is_bbl_filament(it->second->tag_uid) || !remain_flag) {
if (!DevFilaSystem::IsBBL_Filament(it->second->tag_uid) || !remain_flag) {
info.material_remain = 100;
} else {
if(it->second->remain < 0 || it->second->remain > 100) {
@@ -128,7 +132,7 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo
return true;
}
void AMSinfo::parse_ext_info(MachineObject* obj, AmsTray tray) {
void AMSinfo::parse_ext_info(MachineObject* obj, DevAmsTray tray) {
this->ams_id = tray.id;
this->ams_type = AMSModel::EXT_AMS;
@@ -147,7 +151,7 @@ void AMSinfo::parse_ext_info(MachineObject* obj, AmsTray tray) {
info.cali_idx = tray.cali_idx;
info.filament_id = tray.setting_id;
if (!tray.color.empty()) {
info.material_colour = AmsTray::decode_color(tray.color);
info.material_colour = DevAmsTray::decode_color(tray.color);
}
else {
// set to white by default
@@ -155,7 +159,7 @@ void AMSinfo::parse_ext_info(MachineObject* obj, AmsTray tray) {
}
for (std::string cols : tray.cols) {
info.material_cols.push_back(AmsTray::decode_color(cols));
info.material_cols.push_back(DevAmsTray::decode_color(cols));
}
info.material_remain = 100;
}
@@ -575,9 +579,9 @@ AMSextruderImage::~AMSextruderImage() {}
Description:AMSExtImage upon ext lib
**************************************************/
AMSExtImage::AMSExtImage(wxWindow* parent, AMSPanelPos ext_pos, ExtderData *data, wxWindowID id, const wxPoint& pos)
AMSExtImage::AMSExtImage(wxWindow* parent, AMSPanelPos ext_pos, int total_ext_num, bool over_ext, wxWindowID id, const wxPoint& pos)
{
if (data == nullptr)
if (over_ext)
{
wxWindow::Create(parent, id, pos);
SetMinSize(AMS_HUMIDITY_SIZE);
@@ -591,9 +595,9 @@ AMSExtImage::AMSExtImage(wxWindow* parent, AMSPanelPos ext_pos, ExtderData *data
SetMaxSize(wxSize(FromDIP(98), FromDIP(99)));
m_show_ext = true;
total_ext_num = data->total_extder_count;
}
m_ext_num = total_ext_num;
m_ext_pos = ext_pos;
SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
@@ -606,7 +610,7 @@ const wxBitmap &AMSExtImage::get_bmp(const std::string &printer_type, bool is_am
{
int pos_id = 0;
if (pos == AMSPanelPos::LEFT_PANEL) { pos_id = 1;}
const std::string &image_name = DeviceManager::get_printer_ext_img(printer_type, pos_id);
const std::string &image_name = DevPrinterConfigUtil::get_printer_ext_img(printer_type, pos_id);
if (image_name.empty()) { return wxNullBitmap; }
int image_size = is_ams_ext ? 25 : 98;
@@ -639,9 +643,9 @@ void AMSExtImage::setShowAmsExt(bool show)
void AMSExtImage::setTotalExtNum(const std::string &series_name, const std::string &printer_type, int num)
{
if ((total_ext_num != num) || (m_series_name != series_name) || (m_printer_type_name != printer_type))
if ((m_ext_num != num) || (m_series_name != series_name) || (m_printer_type_name != printer_type))
{
total_ext_num = num;
m_ext_num = num;
m_series_name = series_name;
m_printer_type_name = printer_type;
Refresh();
@@ -701,7 +705,7 @@ void AMSExtImage::doRender(wxDC& dc)
}
//Ams Extruder
//DevAms Extruder
AMSextruder::AMSextruder(wxWindow *parent, wxWindowID id, int nozzle_num, const wxPoint &pos, const wxSize &size)
{
create(parent, id, pos, size, nozzle_num);
@@ -743,13 +747,13 @@ void AMSextruder::OnAmsLoading(bool load, int nozzle_id, wxColour col /*= AMS_CO
if (load) m_current_colur_deputy = col;
}
else if (m_nozzle_num > 1){
if (nozzle_id == MAIN_NOZZLE_ID) {
if (nozzle_id == MAIN_EXTRUDER_ID) {
m_right_extruder->OnAmsLoading(load, col);
if (m_current_colur != col){
if (load) m_current_colur = col;
}
}
else if(nozzle_id == DEPUTY_NOZZLE_ID) {
else if(nozzle_id == DEPUTY_EXTRUDER_ID) {
m_left_extruder->OnAmsLoading(load, col);
if (m_current_colur_deputy != col) {
if (load) m_current_colur_deputy = col;
@@ -1054,7 +1058,7 @@ void AMSLib::render_generic_text(wxDC &dc)
show_k_value = false;
}
else if (m_info.cali_idx == -1 || (m_obj && (CalibUtils::get_selected_calib_idx(m_obj->pa_calib_tab, m_info.cali_idx) == -1))) {
if (m_obj && m_obj->is_support_auto_flow_calibration)
if (m_obj && m_obj->GetConfig()->SupportCalibrationPA_FlowAuto())
show_k_value = false;
else
get_default_k_n_value(m_info.filament_id, m_info.k, m_info.n);
@@ -2224,19 +2228,19 @@ void AMSRoadDownPart::SetPassRoadColour(bool left, wxColour col)
{
if (left)
{
if (m_road_color[DEPUTY_NOZZLE_ID] == col)
if (m_road_color[DEPUTY_EXTRUDER_ID] == col)
{
return;
}
m_road_color[DEPUTY_NOZZLE_ID] = col;
m_road_color[DEPUTY_EXTRUDER_ID] = col;
}
else
{
if (m_road_color[MAIN_NOZZLE_ID] == col)
if (m_road_color[MAIN_EXTRUDER_ID] == col)
{
return;
}
m_road_color[MAIN_NOZZLE_ID] = col;
m_road_color[MAIN_EXTRUDER_ID] = col;
}
Refresh();
@@ -3057,7 +3061,7 @@ void AmsItem::create(wxWindow *parent)
}
else{
if (m_ams_model == EXT_AMS){
m_ext_image = new AMSExtImage(this, m_panel_pos);
m_ext_image = new AMSExtImage(this, m_panel_pos, 1, true);
sizer_item->Add(m_ext_image, 0, wxALIGN_CENTER, 0);
}
}

View File

@@ -257,8 +257,8 @@ public:
return true;
};
bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false);
void parse_ext_info(MachineObject* obj, AmsTray tray);
bool parse_ams_info(MachineObject* obj, DevAms *ams, bool remain_flag = false, bool humidity_flag = false);
void parse_ext_info(MachineObject* obj, DevAmsTray tray);
bool support_drying() const { return (ams_type == AMSModel::N3S_AMS) || (ams_type == AMSModel::N3F_AMS); };
Caninfo get_caninfo(const std::string& can_id, bool& found) const;
@@ -376,12 +376,12 @@ private:
bool m_show_ext = false;
AMSPanelPos m_ext_pos;
int total_ext_num = 1;
int m_ext_num = 1;
ScalableBitmap m_ext_image;
public:
AMSExtImage(wxWindow *parent, AMSPanelPos ext_pos = AMSPanelPos::RIGHT_PANEL, ExtderData *data = nullptr, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition);
AMSExtImage(wxWindow *parent, AMSPanelPos ext_pos, int total_ext_num, bool over_ext, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition);
~AMSExtImage();
void msw_rescale();

View File

@@ -458,9 +458,9 @@ void FanControlNew::command_control_fan()
if (m_obj) {
if (!m_obj->is_enable_np){
int speed = floor(m_current_speed * float(25.5));
m_obj->command_control_fan(m_part_id, speed);
m_obj->GetFan()->command_control_fan(m_part_id, speed);
} else {
m_obj->command_control_fan_new(m_part_id, m_current_speed * 10, nullptr);
m_obj->GetFan()->command_control_fan_new(m_part_id, m_current_speed * 10);
}
post_event();
}
@@ -708,9 +708,9 @@ void FanControlPopupNew::CreateDuct()
{
if (m_obj)
{
int cooling_fan_speed = round(m_obj->cooling_fan_speed / float(25.5));
int big_fan1_speed = round(m_obj->big_fan1_speed / float(25.5));
int big_fan2_speed = round(m_obj->big_fan2_speed / float(25.5));
int cooling_fan_speed = round(m_obj->GetFan()->GetCoolingFanSpeed() / float(25.5));
int big_fan1_speed = round(m_obj->GetFan()->GetBigFan1Speed() / float(25.5));
int big_fan2_speed = round(m_obj->GetFan()->GetBigFan2Speed() / float(25.5));
update_fan_data(AIR_FUN::FAN_COOLING_0_AIRDOOR, cooling_fan_speed);
update_fan_data(AIR_FUN::FAN_REMOTE_COOLING_0_IDX, big_fan1_speed);
update_fan_data(AIR_FUN::FAN_CHAMBER_0_IDX, big_fan2_speed);
@@ -808,12 +808,12 @@ void FanControlPopupNew::update_fan_data(MachineObject *obj)
return;
}
if (!obj->m_air_duct_data.modes.empty()) {
update_fan_data(obj->m_air_duct_data);
if (!obj->GetFan()->GetAirDuctData().modes.empty()) {
update_fan_data(obj->GetFan()->GetAirDuctData());
} else {
int cooling_fan_speed = round(obj->cooling_fan_speed / float(25.5));
int big_fan1_speed = round(obj->big_fan1_speed / float(25.5));
int big_fan2_speed = round(obj->big_fan2_speed / float(25.5));
int cooling_fan_speed = round(obj->GetFan()->GetCoolingFanSpeed() / float(25.5));
int big_fan1_speed = round(obj->GetFan()->GetBigFan1Speed() / float(25.5));
int big_fan2_speed = round(obj->GetFan()->GetBigFan2Speed() / float(25.5));
update_fan_data(AIR_FUN::FAN_COOLING_0_AIRDOOR, cooling_fan_speed);
update_fan_data(AIR_FUN::FAN_REMOTE_COOLING_0_IDX, big_fan1_speed);
update_fan_data(AIR_FUN::FAN_CHAMBER_0_IDX, big_fan2_speed);
@@ -910,7 +910,7 @@ void FanControlPopupNew::command_control_air_duct(int mode_id, int submode)
{
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ", control air duct, id = " << mode_id;
if (m_obj) {
m_obj->command_control_air_duct(mode_id, submode, [](const json& reply) {});
m_obj->GetFan()->command_control_air_duct(mode_id, submode, [](const json& reply) {});
m_air_duct_time_out = time_out;
m_data.curren_mode = mode_id;
@@ -1002,13 +1002,13 @@ void FanControlPopupNew::init_names(MachineObject* obj) {
// special texts
if (obj) {
const std::string& special_cooling_text = DeviceManager::get_fan_text(obj->printer_type, "special_cooling_text");
const std::string& special_cooling_text = DevPrinterConfigUtil::get_fan_text(obj->printer_type, "special_cooling_text");
if (!special_cooling_text.empty()) {
L("Cooling mode is suitable for printing PLA/PETG/TPU materials."); //some potential text, add i18n flags
label_text[AIR_DUCT::AIR_DUCT_COOLING_FILT] = special_cooling_text;
}
const std::string& special_func_aux_text = DeviceManager::get_fan_text(obj->printer_type, "special_func_aux_text");
const std::string& special_func_aux_text = DevPrinterConfigUtil::get_fan_text(obj->printer_type, "special_func_aux_text");
if (!special_func_aux_text.empty()) {
L_CONTEXT("Right", "air_duct");
fan_func_name[AIR_FUN::FAN_REMOTE_COOLING_0_IDX] = _CTX(special_func_aux_text, "air_duct");

View File

@@ -13,7 +13,7 @@
#include <wx/hyperlink.h>
#include <wx/animate.h>
#include <wx/dynarray.h>
#include "../DeviceCore/DevFan.h"
namespace Slic3r {
namespace GUI {

View File

@@ -459,7 +459,7 @@ void SideTools::update_status(MachineObject* obj)
if (!obj) return;
/* Update Device Info */
m_side_tools->set_current_printer_name(obj->dev_name);
m_side_tools->set_current_printer_name(obj->get_dev_name());
// update wifi signal image
int wifi_signal_val = 0;