NEW:support new ext slot mapping

jira:[support new mapping]

Change-Id: Iaf88f7bd57177df772a926ad162bd3b5a141327a
(cherry picked from commit 3b93bd2dd305026457e9f63ca3faeb153b59c9a5)
This commit is contained in:
tao wang
2025-08-24 23:18:00 +08:00
committed by Noisyfox
parent bba00b2e7a
commit b46b69ebad
13 changed files with 416 additions and 224 deletions
+12 -15
View File
@@ -532,12 +532,8 @@ void AMSMaterialsSetting::on_select_reset(wxCommandEvent& event) {
if (is_virtual_tray()) { if (is_virtual_tray()) {
tray_id = ams_id; tray_id = ams_id;
if (!obj->is_enable_np) { if (!obj->is_enable_np) {
tray_id = VIRTUAL_TRAY_ID; tray_id = VIRTUAL_TRAY_DEPUTY_ID;
} }
// TODO: Orca hack
ams_id = 255;
slot_id = 0;
} }
select_index_info.tray_id = tray_id; select_index_info.tray_id = tray_id;
select_index_info.ams_id = ams_id; select_index_info.ams_id = ams_id;
@@ -658,13 +654,13 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
auto vt_tray = ams_id; auto vt_tray = ams_id;
if (!obj->is_enable_np) { if (!obj->is_enable_np) {
vt_tray = VIRTUAL_TRAY_ID; vt_tray = VIRTUAL_TRAY_DEPUTY_ID;
} }
if (obj->cali_version >= 0) { if (obj->cali_version >= 0) {
PACalibIndexInfo select_index_info; PACalibIndexInfo select_index_info;
select_index_info.tray_id = vt_tray; select_index_info.tray_id = vt_tray;
select_index_info.ams_id = 255; // TODO: Orca hack select_index_info.ams_id = ams_id;
select_index_info.slot_id = 0; select_index_info.slot_id = 0;
select_index_info.nozzle_diameter = obj->m_extder_data.extders[0].current_nozzle_diameter; select_index_info.nozzle_diameter = obj->m_extder_data.extders[0].current_nozzle_diameter;
@@ -794,7 +790,7 @@ void AMSMaterialsSetting::on_clr_picker(wxMouseEvent &event)
bool AMSMaterialsSetting::is_virtual_tray() bool AMSMaterialsSetting::is_virtual_tray()
{ {
if (ams_id == VIRTUAL_TRAY_ID) if (ams_id == VIRTUAL_TRAY_MAIN_ID || ams_id == VIRTUAL_TRAY_DEPUTY_ID)
return true; return true;
return false; return false;
} }
@@ -1171,16 +1167,17 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
} }
m_comboBox_cali_result->Set(items); m_comboBox_cali_result->Set(items);
if (ams_id == VIRTUAL_TRAY_ID) { if (ams_id == VIRTUAL_TRAY_MAIN_ID || ams_id == VIRTUAL_TRAY_DEPUTY_ID) {
AmsTray selected_tray = this->obj->vt_tray; for (auto slot : obj->vt_slot) {
cali_select_idx = CalibUtils::get_selected_calib_idx(m_pa_profile_items,selected_tray.cali_idx); if (slot.id == std::to_string(ams_id))
if (cali_select_idx >= 0) { cali_select_idx = CalibUtils::get_selected_calib_idx(m_pa_profile_items, slot.cali_idx);
}
if (cali_select_idx >= 0)
m_comboBox_cali_result->SetSelection(cali_select_idx); m_comboBox_cali_result->SetSelection(cali_select_idx);
} else
else {
m_comboBox_cali_result->SetSelection(0); m_comboBox_cali_result->SetSelection(0);
} }
}
else { else {
if (this->obj->amsList.find(std::to_string(ams_id)) != this->obj->amsList.end()) { if (this->obj->amsList.find(std::to_string(ams_id)) != this->obj->amsList.end()) {
Ams* selected_ams = this->obj->amsList[std::to_string(ams_id)]; Ams* selected_ams = this->obj->amsList[std::to_string(ams_id)];
+191 -63
View File
@@ -292,12 +292,15 @@ void MaterialItem::doRender(wxDC &dc)
Bind(wxEVT_LEFT_DOWN, &AmsMapingPopup::on_left_down, this); Bind(wxEVT_LEFT_DOWN, &AmsMapingPopup::on_left_down, this);
#endif #endif
SetBackgroundColour(*wxWHITE); SetBackgroundColour(*wxWHITE);
m_sizer_main = new wxBoxSizer(wxVERTICAL); m_sizer_main = new wxBoxSizer(wxVERTICAL);
m_sizer_ams = new wxBoxSizer(wxHORIZONTAL); m_sizer_ams = new wxBoxSizer(wxHORIZONTAL);
m_sizer_ams_left = new wxBoxSizer(wxVERTICAL); m_sizer_ams_left = new wxBoxSizer(wxVERTICAL);
m_sizer_ams_right = new wxBoxSizer(wxVERTICAL); m_sizer_ams_right = new wxBoxSizer(wxVERTICAL);
m_sizer_ams_basket_left = new wxBoxSizer(wxVERTICAL);
m_sizer_ams_basket_right = new wxBoxSizer(wxVERTICAL);
auto title_panel = new wxPanel(this, wxID_ANY); auto title_panel = new wxPanel(this, wxID_ANY);
@@ -318,14 +321,45 @@ void MaterialItem::doRender(wxDC &dc)
title_panel->Layout(); title_panel->Layout();
title_panel->Fit(); title_panel->Fit();
auto left_ams_title_text = new wxStaticText(this, wxID_ANY, _L("Left Ams")); m_left_marea_panel = new wxPanel(this);
auto right_ams_title_text = new wxStaticText(this, wxID_ANY, _L("Right Ams")); m_right_marea_panel = new wxPanel(this);
m_sizer_ams_left->Add(left_ams_title_text, 0, wxALIGN_CENTER, 0);
m_sizer_ams_right->Add(right_ams_title_text, 0, wxALIGN_CENTER, 0);
m_sizer_ams->Add(m_sizer_ams_left, 0, wxEXPAND | wxALL, FromDIP(0)); /*left ext*/
m_sizer_ams->Add(m_sizer_ams_right, 0, wxEXPAND | wxALL, FromDIP(0)); m_left_extra_slot = new MappingItem(m_left_marea_panel);
m_left_extra_slot->m_ams_id = VIRTUAL_TRAY_DEPUTY_ID;
m_left_extra_slot->m_slot_id = 0;
m_left_extra_slot->SetSize(wxSize(FromDIP(48), FromDIP(60)));
m_left_extra_slot->SetMinSize(wxSize(FromDIP(48), FromDIP(60)));
m_left_extra_slot->SetMaxSize(wxSize(FromDIP(48), FromDIP(60)));
/*right ext*/
m_right_extra_slot = new MappingItem(m_right_marea_panel);
m_right_extra_slot->m_ams_id = VIRTUAL_TRAY_MAIN_ID;
m_right_extra_slot->m_slot_id = 0;
m_right_extra_slot->SetSize(wxSize(FromDIP(48), FromDIP(60)));
m_right_extra_slot->SetMinSize(wxSize(FromDIP(48), FromDIP(60)));
m_right_extra_slot->SetMaxSize(wxSize(FromDIP(48), FromDIP(60)));
m_sizer_ams_left->Add(create_split_sizer(m_left_marea_panel, _L("Left Ams")), 0, wxEXPAND, 0);
m_sizer_ams_left->Add(m_sizer_ams_basket_left, 0, wxEXPAND|wxTOP, FromDIP(8));
m_sizer_ams_left->Add(create_split_sizer(m_left_marea_panel, _L("External")), 0, wxEXPAND|wxTOP, FromDIP(8));
m_sizer_ams_left->Add(m_left_extra_slot, 0, wxEXPAND|wxTOP, FromDIP(8));
m_sizer_ams_right->Add(create_split_sizer(m_right_marea_panel, _L("Right Ams")), 0, wxEXPAND, 0);
m_sizer_ams_right->Add(m_sizer_ams_basket_right, 0, wxEXPAND|wxTOP, FromDIP(8));
m_sizer_ams_right->Add(create_split_sizer(m_right_marea_panel, _L("External")), 0, wxEXPAND|wxTOP, FromDIP(8));
m_sizer_ams_right->Add(m_right_extra_slot, 0, wxEXPAND|wxTOP, FromDIP(8));
m_left_marea_panel->SetSizer(m_sizer_ams_left);
m_right_marea_panel->SetSizer(m_sizer_ams_right);
m_sizer_ams->Add(m_left_marea_panel, 0, wxEXPAND, FromDIP(0));
m_sizer_ams->Add(0, 0, 0, wxEXPAND, FromDIP(15));
m_sizer_ams->Add(m_right_marea_panel, 0, wxEXPAND, FromDIP(0));
m_warning_text = new wxStaticText(this, wxID_ANY, wxEmptyString); m_warning_text = new wxStaticText(this, wxID_ANY, wxEmptyString);
@@ -337,7 +371,7 @@ void MaterialItem::doRender(wxDC &dc)
m_warning_text->Wrap(FromDIP(248)); m_warning_text->Wrap(FromDIP(248));
m_sizer_main->Add(title_panel, 0, wxEXPAND | wxALL, FromDIP(2)); m_sizer_main->Add(title_panel, 0, wxEXPAND | wxALL, FromDIP(2));
m_sizer_main->Add(m_sizer_ams, 0, wxEXPAND | wxALL, FromDIP(2)); m_sizer_main->Add(m_sizer_ams, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(14));
m_sizer_main->Add(m_warning_text, 0, wxEXPAND | wxALL, FromDIP(6)); m_sizer_main->Add(m_warning_text, 0, wxEXPAND | wxALL, FromDIP(6));
SetSizer(m_sizer_main); SetSizer(m_sizer_main);
@@ -353,6 +387,22 @@ void MaterialItem::doRender(wxDC &dc)
}); });
} }
wxBoxSizer* AmsMapingPopup::create_split_sizer(wxWindow* parent, wxString text)
{
wxBoxSizer* sizer_split_left_ams = new wxBoxSizer(wxHORIZONTAL);
auto left_ams_title_text = new Label(parent, text);
left_ams_title_text->SetFont(::Label::Body_13);
left_ams_title_text->SetForegroundColour(0x909090);
auto m_split_left_line = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
m_split_left_line->SetBackgroundColour(0xeeeeee);
m_split_left_line->SetMinSize(wxSize(-1, 1));
m_split_left_line->SetMaxSize(wxSize(-1, 1));
sizer_split_left_ams->Add(0, 0, 0, wxEXPAND, 0);
sizer_split_left_ams->Add(left_ams_title_text, 0, wxALIGN_CENTER, 0);
sizer_split_left_ams->Add(m_split_left_line, 1, wxALIGN_CENTER_VERTICAL, 0);
return sizer_split_left_ams;
}
wxString AmsMapingPopup::format_text(wxString &m_msg) wxString AmsMapingPopup::format_text(wxString &m_msg)
{ {
if (wxGetApp().app_config->get("language") != "zh_CN") { return m_msg; } if (wxGetApp().app_config->get("language") != "zh_CN") { return m_msg; }
@@ -447,12 +497,14 @@ void AmsMapingPopup::update_ams_data_multi_machines()
Fit(); Fit();
} }
void AmsMapingPopup::update_ams_data(std::map<std::string, Ams*> amsList) void AmsMapingPopup::update(MachineObject* obj)
{ {
std::map<std::string, Ams *>::iterator ams_iter; //BOOST_LOG_TRIVIAL(info) << "ams_mapping nozzle count " << obj->m_extder_data.nozzle.size();
BOOST_LOG_TRIVIAL(trace) << "ams_mapping total count " << amsList.size(); BOOST_LOG_TRIVIAL(info) << "ams_mapping total count " << obj->amsList.size();
if (!obj) {return;}
for (auto& ams_container : m_amsmapping_container_list) { for (auto& ams_container : m_amsmapping_container_list) {
ams_container->Destroy(); ams_container->Destroy();
} }
@@ -461,32 +513,24 @@ void AmsMapingPopup::update_ams_data(std::map<std::string, Ams*> amsList)
m_amsmapping_container_sizer_list.clear(); m_amsmapping_container_sizer_list.clear();
m_mapping_item_list.clear(); m_mapping_item_list.clear();
for (ams_iter = amsList.begin(); ams_iter != amsList.end(); ams_iter++) { /*ext*/
if (obj->vt_slot.size() == 1) {
m_left_marea_panel->Hide();
m_right_extra_slot->Hide();
}
else if (obj->vt_slot.size() > 1) {
m_left_marea_panel->Show();
m_right_extra_slot->Show();
}
int ams_indx = atoi(ams_iter->first.c_str()); for (int i = 0; i < obj->vt_slot.size(); i++) {
int ams_type = ams_iter->second->type;
int nozzle_id = ams_iter->second->nozzle;
if (ams_type >=1 || ams_type <= 3) { //1:ams 2:ams-lite 3:n3f AmsTray* tray_data = &obj->vt_slot[i];
auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL);
auto ams_mapping_item_container = new MappingContainer(this);
ams_mapping_item_container->SetSizer(sizer_mapping_list);
ams_mapping_item_container->Layout();
m_has_unmatch_filament = false;
BOOST_LOG_TRIVIAL(trace) << "ams_mapping ams id " << ams_iter->first.c_str();
Ams* ams_group = ams_iter->second;
std::vector<TrayData> tray_datas;
std::map<std::string, AmsTray*>::iterator tray_iter;
for (tray_iter = ams_group->trayList.begin(); tray_iter != ams_group->trayList.end(); tray_iter++) {
AmsTray* tray_data = tray_iter->second;
TrayData td; TrayData td;
td.id = ams_indx * AMS_TOTAL_COUNT + atoi(tray_data->id.c_str()); td.id = std::stoi(tray_data->id);
td.ams_id = std::stoi(tray_data->id);
td.slot_id = 0;
if (!tray_data->is_exists) { if (!tray_data->is_exists) {
td.type = EMPTY; td.type = EMPTY;
@@ -505,9 +549,66 @@ void AmsMapingPopup::update_ams_data(std::map<std::string, Ams*> amsList)
td.material_cols.push_back(AmsTray::decode_color(col)); td.material_cols.push_back(AmsTray::decode_color(col));
} }
} }
}
if (obj->vt_slot[i].id == std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
m_right_extra_slot->send_win = send_win;
add_ext_ams_mapping(td, m_right_extra_slot);
}
else if (obj->vt_slot[i].id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) {
m_left_extra_slot->send_win = send_win;
add_ext_ams_mapping(td, m_left_extra_slot);
}
}
/*ams*/
for (std::map<std::string, Ams *>::iterator ams_iter = obj->amsList.begin(); ams_iter != obj->amsList.end(); ams_iter++) {
int ams_indx = atoi(ams_iter->first.c_str());
int ams_type = ams_iter->second->type;
int nozzle_id = ams_iter->second->nozzle;
if (ams_type >=1 || ams_type <= 3) { //1:ams 2:ams-lite 3:n3f
auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL);
auto ams_mapping_item_container = new MappingContainer(nozzle_id == 0? m_right_marea_panel:m_left_marea_panel);
ams_mapping_item_container->SetSizer(sizer_mapping_list);
ams_mapping_item_container->Layout();
m_has_unmatch_filament = false;
BOOST_LOG_TRIVIAL(trace) << "ams_mapping ams id " << ams_iter->first.c_str();
Ams* ams_group = ams_iter->second;
std::vector<TrayData> tray_datas;
std::map<std::string, AmsTray*>::iterator tray_iter;
for (tray_iter = ams_group->trayList.begin(); tray_iter != ams_group->trayList.end(); tray_iter++) {
AmsTray* tray_data = tray_iter->second;
TrayData td;
td.id = ams_indx * AMS_TOTAL_COUNT + atoi(tray_data->id.c_str());
td.ams_id = std::stoi(ams_iter->second->id); td.ams_id = std::stoi(ams_iter->second->id);
td.slot_id = std::stoi(tray_iter->second->id); td.slot_id = std::stoi(tray_iter->second->id);
if (!tray_data->is_exists) {
td.type = EMPTY;
}
else {
if (!tray_data->is_tray_info_ready()) {
td.type = THIRD;
}
else {
td.type = NORMAL;
td.colour = AmsTray::decode_color(tray_data->color);
td.name = tray_data->get_display_filament_type();
td.filament_type = tray_data->get_filament_type();
td.ctype = tray_data->ctype;
for (auto col : tray_data->cols) {
td.material_cols.push_back(AmsTray::decode_color(col));
}
}
} }
tray_datas.push_back(td); tray_datas.push_back(td);
@@ -515,28 +616,22 @@ void AmsMapingPopup::update_ams_data(std::map<std::string, Ams*> amsList)
ams_mapping_item_container->Show(); ams_mapping_item_container->Show();
add_ams_mapping(tray_datas, ams_mapping_item_container, sizer_mapping_list); add_ams_mapping(tray_datas, ams_mapping_item_container, sizer_mapping_list);
m_amsmapping_container_sizer_list.push_back(sizer_mapping_list); m_amsmapping_container_sizer_list.push_back(sizer_mapping_list);
m_amsmapping_container_list.push_back(ams_mapping_item_container); m_amsmapping_container_list.push_back(ams_mapping_item_container);
//main nozzle = right nozzle if (nozzle_id == 0) { //right slot
if (nozzle_id == 0) { m_sizer_ams_basket_right->Add(ams_mapping_item_container, 0, wxALIGN_CENTER, 0);
m_sizer_ams_right->Add(ams_mapping_item_container, 0, wxALIGN_CENTER, 0);
} }
else if (nozzle_id == 1) { else if (nozzle_id == 1) { //left slot
m_sizer_ams_left->Add(ams_mapping_item_container, 0, wxALIGN_CENTER, 0); m_sizer_ams_basket_left->Add(ams_mapping_item_container, 0, wxALIGN_CENTER, 0);
} }
//m_warning_text->Show(m_has_unmatch_filament); //m_warning_text->Show(m_has_unmatch_filament);
} }
else if(ams_type == 4){ //4:n3s else if(ams_type == 4){ //4:n3s
} }
} }
/*extra tray*/
Layout(); Layout();
Fit(); Fit();
} }
@@ -586,25 +681,20 @@ std::vector<TrayData> AmsMapingPopup::parse_ams_mapping(std::map<std::string, Am
void AmsMapingPopup::add_ams_mapping(std::vector<TrayData> tray_data, wxWindow* container, wxBoxSizer* sizer) void AmsMapingPopup::add_ams_mapping(std::vector<TrayData> tray_data, wxWindow* container, wxBoxSizer* sizer)
{ {
sizer->Add(0,0,0,wxLEFT,FromDIP(6)); sizer->Add(0,0,0,wxLEFT,FromDIP(6));
for (auto i = 0; i < tray_data.size(); i++) { for (auto i = 0; i < tray_data.size(); i++) {
// set number
/* auto number = new wxStaticText(this, wxID_ANY, wxGetApp().transition_tridid(tray_data[i].id), wxDefaultPosition, wxDefaultSize, 0);
number->SetFont(::Label::Body_13);
number->SetForegroundColour(wxColour(0X6B, 0X6B, 0X6B));
number->Wrap(-1);*/
// set button // set button
MappingItem *m_mapping_item = new MappingItem(container); MappingItem *m_mapping_item = new MappingItem(container);
m_mapping_item->send_win = send_win;
m_mapping_item->m_ams_id = tray_data[i].ams_id; m_mapping_item->m_ams_id = tray_data[i].ams_id;
m_mapping_item->m_slot_id = tray_data[i].slot_id; m_mapping_item->m_slot_id = tray_data[i].slot_id;
m_mapping_item->set_tray_index(wxGetApp().transition_tridid(tray_data[i].id));
m_mapping_item->SetSize(wxSize(FromDIP(48), FromDIP(60)));
m_mapping_item->SetMinSize(wxSize(FromDIP(48), FromDIP(60)));
m_mapping_item->SetMaxSize(wxSize(FromDIP(48), FromDIP(60)));
m_mapping_item->SetSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6)));
m_mapping_item->SetMinSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6)));
m_mapping_item->SetMaxSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6)));
//m_mapping_item->SetCornerRadius(5);
m_mapping_item->SetFont(::Label::Body_12);
m_mapping_item_list.push_back(m_mapping_item); m_mapping_item_list.push_back(m_mapping_item);
if (tray_data[i].type == NORMAL) { if (tray_data[i].type == NORMAL) {
@@ -641,14 +731,50 @@ void AmsMapingPopup::add_ams_mapping(std::vector<TrayData> tray_data, wxWindow*
}); });
} }
sizer->Add(0, 0, 0, wxRIGHT, FromDIP(6));
//sizer_mapping_item->Add(number, 0, wxALIGN_CENTER_HORIZONTAL, 0);
//sizer_mapping_item->Add(m_mapping_item, 0, wxALIGN_CENTER_HORIZONTAL, 0);
m_mapping_item->set_tray_index(wxGetApp().transition_tridid(tray_data[i].id));
sizer->Add(0,0,0,wxRIGHT,FromDIP(6));
sizer->Add(m_mapping_item, 0, wxTOP, FromDIP(1)); sizer->Add(m_mapping_item, 0, wxTOP, FromDIP(1));
} }
}
void AmsMapingPopup::add_ext_ams_mapping(TrayData tray_data, MappingItem* item)
{
// set button
if (tray_data.type == NORMAL) {
if (is_match_material(tray_data.filament_type)) {
item->set_data(tray_data.colour, tray_data.name, tray_data);
}
else {
item->set_data(wxColour(0xEE, 0xEE, 0xEE), tray_data.name, tray_data, true);
m_has_unmatch_filament = true;
}
item->Bind(wxEVT_LEFT_DOWN, [this, tray_data, item](wxMouseEvent& e) {
if (!is_match_material(tray_data.filament_type)) return;
item->send_event(m_current_filament_id);
Dismiss();
});
}
// temp
if (tray_data.type == EMPTY) {
item->set_data(wxColour(0xCE, 0xCE, 0xCE), "-", tray_data);
item->Bind(wxEVT_LEFT_DOWN, [this, tray_data,item](wxMouseEvent& e) {
item->send_event(m_current_filament_id);
Dismiss();
});
}
// third party
if (tray_data.type == THIRD) {
item->set_data(wxColour(0xCE, 0xCE, 0xCE), "?", tray_data);
item->Bind(wxEVT_LEFT_DOWN, [this, tray_data, item](wxMouseEvent& e) {
item->send_event(m_current_filament_id);
Dismiss();
});
}
item->set_tray_index(_L("Ext"));
} }
void AmsMapingPopup::OnDismiss() void AmsMapingPopup::OnDismiss()
@@ -688,15 +814,17 @@ void AmsMapingPopup::paintEvent(wxPaintEvent &evt)
void MappingItem::send_event(int fliament_id) void MappingItem::send_event(int fliament_id)
{ {
auto number = wxGetApp().transition_tridid(m_tray_data.id);
wxCommandEvent event(EVT_SET_FINISH_MAPPING); wxCommandEvent event(EVT_SET_FINISH_MAPPING);
event.SetInt(m_tray_data.id); event.SetInt(m_tray_data.id);
wxString param = wxString::Format("%d|%d|%d|%d|%s|%d|%d|%d", m_coloul.Red(), m_coloul.Green(), m_coloul.Blue(), m_coloul.Alpha(), number, fliament_id, wxString param = wxString::Format("%d|%d|%d|%d|%s|%d|%d|%d", m_coloul.Red(), m_coloul.Green(), m_coloul.Blue(), m_coloul.Alpha(), m_tray_index, fliament_id,
m_tray_data.ams_id, m_tray_data.slot_id); m_tray_data.ams_id, m_tray_data.slot_id);
event.SetString(param); event.SetString(param);
event.SetEventObject(this->GetParent()->GetParent());
wxPostEvent(this->GetParent()->GetParent()->GetParent(), event); if (send_win) {
event.SetEventObject(send_win);
wxPostEvent(send_win, event);
}
} }
void MappingItem::msw_rescale() void MappingItem::msw_rescale()
+16 -3
View File
@@ -112,6 +112,7 @@ public:
void send_event(int fliament_id); void send_event(int fliament_id);
void set_tray_index(wxString t_index) {m_tray_index = t_index;}; void set_tray_index(wxString t_index) {m_tray_index = t_index;};
wxWindow*send_win{nullptr};
wxString m_tray_index; wxString m_tray_index;
wxColour m_coloul; wxColour m_coloul;
wxString m_name; wxString m_name;
@@ -144,8 +145,9 @@ class AmsMapingPopup : public PopupWindow
{ {
public: public:
AmsMapingPopup(wxWindow *parent); AmsMapingPopup(wxWindow *parent);
~AmsMapingPopup(){}; ~AmsMapingPopup() {};
wxWindow* send_win{nullptr};
wxStaticText * m_warning_text{nullptr}; wxStaticText * m_warning_text{nullptr};
std::vector<std::string> m_materials_list; std::vector<std::string> m_materials_list;
std::vector<wxBoxSizer*> m_amsmapping_container_sizer_list; std::vector<wxBoxSizer*> m_amsmapping_container_sizer_list;
@@ -159,16 +161,27 @@ public:
wxBoxSizer *m_sizer_ams{nullptr}; wxBoxSizer *m_sizer_ams{nullptr};
wxBoxSizer *m_sizer_ams_left{nullptr}; wxBoxSizer *m_sizer_ams_left{nullptr};
wxBoxSizer *m_sizer_ams_right{nullptr}; wxBoxSizer *m_sizer_ams_right{nullptr};
wxBoxSizer* m_sizer_ams_basket_left{ nullptr };
wxBoxSizer* m_sizer_ams_basket_right{ nullptr };
wxBoxSizer *m_sizer_list{nullptr}; wxBoxSizer *m_sizer_list{nullptr};
wxWindow *m_parent_item{nullptr}; wxWindow *m_parent_item{nullptr};
MappingItem* m_left_extra_slot{nullptr};
MappingItem* m_right_extra_slot{nullptr};
wxPanel* m_left_marea_panel;
wxPanel* m_right_marea_panel;
wxBoxSizer* create_split_sizer(wxWindow* parent, wxString text);
wxString format_text(wxString &m_msg); wxString format_text(wxString &m_msg);
void set_send_win(wxWindow* win) {send_win = win;};
void update_materials_list(std::vector<std::string> list); void update_materials_list(std::vector<std::string> list);
void set_tag_texture(std::string texture); void set_tag_texture(std::string texture);
void update_ams_data(std::map<std::string, Ams *> amsList); void update(MachineObject* obj);
void update_ams_data_multi_machines(); void update_ams_data_multi_machines();
void add_ams_mapping(std::vector<TrayData> tray_data, wxWindow* container, wxBoxSizer* sizer); void add_ams_mapping(std::vector<TrayData> tray_data, wxWindow* container, wxBoxSizer* sizer);
void set_current_filament_id(int id){m_current_filament_id = id;}; void add_ext_ams_mapping(TrayData tray_data, MappingItem* item);
void set_current_filament_id(int id) { m_current_filament_id = id; };
int get_current_filament_id(){return m_current_filament_id;}; int get_current_filament_id(){return m_current_filament_id;};
bool is_match_material(std::string material); bool is_match_material(std::string material);
void on_left_down(wxMouseEvent &evt); void on_left_down(wxMouseEvent &evt);
+2 -2
View File
@@ -108,12 +108,12 @@ void CalibrationWizard::get_tray_ams_and_slot_id(int in_tray_id, int &ams_id, in
if (!curr_obj) if (!curr_obj)
return; return;
if (in_tray_id == VIRTUAL_TRAY_ID || in_tray_id == VIRTUAL_TRAY_ID) { if (in_tray_id == VIRTUAL_TRAY_MAIN_ID || in_tray_id == VIRTUAL_TRAY_DEPUTY_ID) {
ams_id = in_tray_id; ams_id = in_tray_id;
slot_id = 0; slot_id = 0;
tray_id = ams_id; tray_id = ams_id;
if (!curr_obj->is_enable_np) if (!curr_obj->is_enable_np)
tray_id = VIRTUAL_TRAY_ID; tray_id = VIRTUAL_TRAY_DEPUTY_ID;
} }
else { else {
ams_id = in_tray_id / 4; ams_id = in_tray_id / 4;
@@ -1530,7 +1530,7 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
// init default for filament source // init default for filament source
// TODO if user change ams/ext, need to update // TODO if user change ams/ext, need to update
if ( !obj->has_ams() || (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_ID)) ) if ( !obj->has_ams() || (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_MAIN_ID)) )
{ {
m_ext_spool_radiobox->SetValue(true); m_ext_spool_radiobox->SetValue(true);
m_ams_radiobox->SetValue(false); m_ams_radiobox->SetValue(false);
@@ -1583,8 +1583,8 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
} }
// init virtual tray info // init virtual tray info
if (full_filament_ams_list.find(VIRTUAL_TRAY_ID) != full_filament_ams_list.end()) { if (full_filament_ams_list.find(VIRTUAL_TRAY_MAIN_ID) != full_filament_ams_list.end()) {
filament_ams_list[VIRTUAL_TRAY_ID] = full_filament_ams_list[VIRTUAL_TRAY_ID]; filament_ams_list[VIRTUAL_TRAY_MAIN_ID] = full_filament_ams_list[VIRTUAL_TRAY_MAIN_ID];
} }
@@ -1787,14 +1787,14 @@ void CalibrationPresetPage::update_filament_combobox(std::string ams_id)
// update virtual tray combo box // update virtual tray combo box
m_virtual_tray_comboBox->update_from_preset(); m_virtual_tray_comboBox->update_from_preset();
auto it = std::find_if(filament_ams_list.begin(), filament_ams_list.end(), [](auto& entry) { auto it = std::find_if(filament_ams_list.begin(), filament_ams_list.end(), [](auto& entry) {
return entry.first == VIRTUAL_TRAY_ID; return entry.first == VIRTUAL_TRAY_MAIN_ID;
}); });
if (it != filament_ams_list.end()) { if (it != filament_ams_list.end()) {
m_virtual_tray_comboBox->load_tray_from_ams(VIRTUAL_TRAY_ID, it->second); m_virtual_tray_comboBox->load_tray_from_ams(VIRTUAL_TRAY_MAIN_ID, it->second);
} }
else { else {
m_virtual_tray_comboBox->load_tray_from_ams(VIRTUAL_TRAY_ID, empty_config); m_virtual_tray_comboBox->load_tray_from_ams(VIRTUAL_TRAY_MAIN_ID, empty_config);
} }
if (filament_ams_list.empty()) if (filament_ams_list.empty())
+1 -1
View File
@@ -61,7 +61,7 @@ static wxString get_default_name(wxString filament_name, CalibMode mode){
static wxString get_tray_name_by_tray_id(int tray_id) static wxString get_tray_name_by_tray_id(int tray_id)
{ {
wxString tray_name; wxString tray_name;
if (tray_id == VIRTUAL_TRAY_ID) { if (tray_id == VIRTUAL_TRAY_MAIN_ID) {
tray_name = "Ext"; tray_name = "Ext";
} }
else { else {
+130 -86
View File
@@ -574,8 +574,7 @@ MachineObject::MachineObject(NetworkAgent* agent, std::string name, std::string
subtask_(nullptr), subtask_(nullptr),
model_task(nullptr), model_task(nullptr),
slice_info(nullptr), slice_info(nullptr),
m_is_online(false), m_is_online(false)
vt_tray(std::to_string(VIRTUAL_TRAY_ID))
{ {
m_agent = agent; m_agent = agent;
@@ -627,6 +626,10 @@ MachineObject::MachineObject(NetworkAgent* agent, std::string name, std::string
has_ipcam = true; // default true has_ipcam = true; // default true
auto vslot = AmsTray(std::to_string(VIRTUAL_TRAY_MAIN_ID));
vt_slot.push_back(vslot);
m_extder_data.current_extder_id = MAIN_NOZZLE_ID; m_extder_data.current_extder_id = MAIN_NOZZLE_ID;
m_extder_data.target_extder_id = MAIN_NOZZLE_ID; m_extder_data.target_extder_id = MAIN_NOZZLE_ID;
m_extder_data.total_extder_count = 1; m_extder_data.total_extder_count = 1;
@@ -773,8 +776,8 @@ Ams *MachineObject::get_curr_Ams()
AmsTray *MachineObject::get_curr_tray() AmsTray *MachineObject::get_curr_tray()
{ {
if (m_tray_now.compare(std::to_string(VIRTUAL_TRAY_ID)) == 0) { if (m_tray_now.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0) {
return &vt_tray; return &vt_slot[0];
} }
Ams* curr_ams = get_curr_Ams(); Ams* curr_ams = get_curr_Ams();
@@ -1150,18 +1153,22 @@ bool MachineObject::is_valid_mapping_result(std::vector<FilamentInfo>& result, b
for (int i = 0; i < result.size(); i++) { for (int i = 0; i < result.size(); i++) {
// invalid mapping result // invalid mapping result
if (result[i].tray_id < 0) if (result[i].tray_id < 0) {
if (result[i].ams_id.empty() && result[i].slot_id.empty()) {
valid_ams_mapping_result = false; valid_ams_mapping_result = false;
}
}
else { else {
int ams_id = result[i].tray_id / 4; auto ams_item = amsList.find(result[i].ams_id);
auto ams_item = amsList.find(std::to_string(ams_id));
if (ams_item == amsList.end()) { if (ams_item == amsList.end()) {
if ( (result[i].ams_id != std::to_string(VIRTUAL_TRAY_MAIN_ID)) &&
(result[i].ams_id != std::to_string(VIRTUAL_TRAY_DEPUTY_ID))) {
result[i].tray_id = -1; result[i].tray_id = -1;
valid_ams_mapping_result = false; valid_ams_mapping_result = false;
}
} else { } else {
if (check_empty_slot) { if (check_empty_slot) {
int tray_id = result[i].tray_id % 4; auto tray_item = ams_item->second->trayList.find(result[i].slot_id);
auto tray_item = ams_item->second->trayList.find(std::to_string(tray_id));
if (tray_item == ams_item->second->trayList.end()) { if (tray_item == ams_item->second->trayList.end()) {
result[i].tray_id = -1; result[i].tray_id = -1;
valid_ams_mapping_result = false; valid_ams_mapping_result = false;
@@ -1918,37 +1925,6 @@ int MachineObject::command_set_chamber(int temp)
return this->publish_json(j.dump(), 1); return this->publish_json(j.dump(), 1);
} }
//int MachineObject::command_ams_switch(int tray_index, int old_temp, int new_temp)
//{
// BOOST_LOG_TRIVIAL(trace) << "ams_switch to " << tray_index << " with temp: " << old_temp << ", " << new_temp;
// if (old_temp < 0) old_temp = FILAMENT_DEF_TEMP;
// if (new_temp < 0) new_temp = FILAMENT_DEF_TEMP;
//
// std::string gcode = "";
// int result = 0;
//
// //command
// if (is_support_command_ams_switch) {
// command_ams_change_filament(tray_index, old_temp, new_temp);
// }
// else {
// std::string gcode = "";
// if (tray_index == 255) {
// gcode = DeviceManager::load_gcode(printer_type, "ams_unload.gcode");
// }
// else {
// // include VIRTUAL_TRAY_ID
// gcode = DeviceManager::load_gcode(printer_type, "ams_load.gcode");
// boost::replace_all(gcode, "[next_extruder]", std::to_string(tray_index));
// boost::replace_all(gcode, "[new_filament_temp]", std::to_string(new_temp));
// }
//
// result = this->publish_gcode(gcode);
// }
//
// return result;
//}
int MachineObject::command_ams_change_filament(bool load, std::string ams_id, std::string slot_id, int old_temp, int new_temp) int MachineObject::command_ams_change_filament(bool load, std::string ams_id, std::string slot_id, int old_temp, int new_temp)
{ {
json j; json j;
@@ -2017,9 +1993,8 @@ int MachineObject::command_ams_filament_settings(int ams_id, int slot_id, std::s
int tag_ams_id = ams_id; int tag_ams_id = ams_id;
int tag_slot_id = slot_id; int tag_slot_id = slot_id;
if (tag_ams_id == VIRTUAL_TRAY_ID) { if (tag_ams_id == VIRTUAL_TRAY_MAIN_ID || tag_ams_id == VIRTUAL_TRAY_DEPUTY_ID) {
tag_tray_id = VIRTUAL_TRAY_ID; tag_tray_id = VIRTUAL_TRAY_DEPUTY_ID;
tag_ams_id = 255; // TODO: Orca hack
} else { } else {
tag_tray_id = tag_slot_id; tag_tray_id = tag_slot_id;
} }
@@ -2720,8 +2695,13 @@ void MachineObject::reset()
json empty_j; json empty_j;
print_json.diff2all_base_reset(empty_j); print_json.diff2all_base_reset(empty_j);
vt_tray.reset(); for (auto i = 0; i < vt_slot.size(); i++) {
vt_slot[i].reset();
if (i == 1) {
vt_slot.erase(vt_slot.begin() + 1);
}
}
subtask_ = nullptr; subtask_ = nullptr;
} }
@@ -4400,8 +4380,6 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
} }
} }
std::string temp = tray_it->dump();
if (tray_it->contains("cali_idx")) { if (tray_it->contains("cali_idx")) {
curr_tray->cali_idx = (*tray_it)["cali_idx"].get<int>(); curr_tray->cali_idx = (*tray_it)["cali_idx"].get<int>();
} }
@@ -4433,12 +4411,50 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
/* vitrual tray*/ /* vitrual tray*/
if (!key_field_only) { if (!key_field_only) {
try { try {
if (jj.contains("vt_tray")) { if (jj.contains("vir_slot") && jj["vir_slot"].is_array()) {
auto main_slot = parse_vt_tray(jj["vt_tray"].get<json>());
main_slot.id = std::to_string(VIRTUAL_TRAY_ID);
is_ams_need_update |= vt_tray != main_slot; for (auto it = jj["vir_slot"].begin(); it != jj["vir_slot"].end(); it++) {
vt_tray = main_slot; auto vslot = parse_vt_tray(it.value().get<json>());
if (vslot.id == std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
auto it = std::next(vt_slot.begin(), 0);
if (it != vt_slot.end()) {
is_ams_need_update |= vt_slot[0] != vslot;
vt_slot[0] = vslot;
}
else {
is_ams_need_update = true;
vt_slot.push_back(vslot);
}
}
else if (vslot.id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) {
auto it = std::next(vt_slot.begin(), 1);
if (it != vt_slot.end()) {
is_ams_need_update |= vt_slot[1] != vslot;
vt_slot[1] = vslot;
}
else {
is_ams_need_update = true;
vt_slot.push_back(vslot);
}
}
}
}
else if (jj.contains("vt_tray")) {
auto main_slot = parse_vt_tray(jj["vt_tray"].get<json>());
main_slot.id = std::to_string(VIRTUAL_TRAY_MAIN_ID);
auto it = std::next(vt_slot.begin(), 0);
if (it != vt_slot.end()) {
is_ams_need_update |= vt_slot[0] != main_slot;
vt_slot[0] = main_slot;
}
else {
is_ams_need_update = true;
vt_slot.push_back(main_slot);
}
} }
else { else {
ams_support_virtual_tray = false; ams_support_virtual_tray = false;
@@ -4498,16 +4514,16 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (jj.contains("tray_id")) { if (jj.contains("tray_id")) {
tray_id = jj["tray_id"].get<int>(); tray_id = jj["tray_id"].get<int>();
} }
if (ams_id == 255 && tray_id == VIRTUAL_TRAY_ID) { if (ams_id == 255 && tray_id == VIRTUAL_TRAY_MAIN_ID) {
BOOST_LOG_TRIVIAL(info) << "ams_filament_setting, parse tray info"; BOOST_LOG_TRIVIAL(info) << "ams_filament_setting, parse tray info";
vt_tray.nozzle_temp_max = std::to_string(jj["nozzle_temp_max"].get<int>()); vt_slot[0].nozzle_temp_max = std::to_string(jj["nozzle_temp_max"].get<int>());
vt_tray.nozzle_temp_min = std::to_string(jj["nozzle_temp_min"].get<int>()); vt_slot[0].nozzle_temp_min = std::to_string(jj["nozzle_temp_min"].get<int>());
vt_tray.color = jj["tray_color"].get<std::string>(); vt_slot[0].color = jj["tray_color"].get<std::string>();
vt_tray.setting_id = jj["tray_info_idx"].get<std::string>(); vt_slot[0].setting_id = jj["tray_info_idx"].get<std::string>();
//vt_tray.type = jj["tray_type"].get<std::string>(); //vt_tray.type = jj["tray_type"].get<std::string>();
vt_tray.type = setting_id_to_type(vt_tray.setting_id, jj["tray_type"].get<std::string>()); vt_slot[0].type = setting_id_to_type(vt_slot[0].setting_id, jj["tray_type"].get<std::string>());
// delay update // delay update
vt_tray.set_hold_count(); vt_slot[0].set_hold_count();
} else { } else {
auto ams_it = amsList.find(std::to_string(ams_id)); auto ams_it = amsList.find(std::to_string(ams_id));
if (ams_it != amsList.end()) { if (ams_it != amsList.end()) {
@@ -4640,7 +4656,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (jj.contains("tray_id")) { if (jj.contains("tray_id")) {
try { try {
curr_tray_id = jj["tray_id"].get<int>(); curr_tray_id = jj["tray_id"].get<int>();
if (curr_tray_id == VIRTUAL_TRAY_ID) if (curr_tray_id == VIRTUAL_TRAY_MAIN_ID)
tray_id = curr_tray_id; tray_id = curr_tray_id;
else if (curr_tray_id >= 0 && curr_tray_id < 16){ else if (curr_tray_id >= 0 && curr_tray_id < 16){
ams_id = curr_tray_id / 4; ams_id = curr_tray_id / 4;
@@ -4653,11 +4669,11 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
; ;
} }
} }
if (tray_id == VIRTUAL_TRAY_ID) { if (tray_id == VIRTUAL_TRAY_MAIN_ID) {
if (jj.contains("k_value")) if (jj.contains("k_value"))
vt_tray.k = jj["k_value"].get<float>(); vt_slot[0].k = jj["k_value"].get<float>();
if (jj.contains("n_coef")) if (jj.contains("n_coef"))
vt_tray.n = jj["n_coef"].get<float>(); vt_slot[0].n = jj["n_coef"].get<float>();
} else { } else {
auto ams_item = this->amsList.find(std::to_string(ams_id)); auto ams_item = this->amsList.find(std::to_string(ams_id));
if (ams_item != this->amsList.end()) { if (ams_item != this->amsList.end()) {
@@ -4688,40 +4704,60 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
BOOST_LOG_TRIVIAL(info) << "extrusion_cali_sel: " << str; BOOST_LOG_TRIVIAL(info) << "extrusion_cali_sel: " << str;
#endif #endif
int ams_id = -1; int ams_id = -1;
int slot_id = -1;
int tray_id = -1; int tray_id = -1;
int curr_tray_id = -1;
if (jj.contains("tray_id")) { if (jj.contains("ams_id")) {
try { try {
curr_tray_id = jj["tray_id"].get<int>(); ams_id = jj["ams_id"].get<int>();
if (curr_tray_id == VIRTUAL_TRAY_ID) slot_id = jj["slot_id"].get<int>();
tray_id = curr_tray_id;
else if (curr_tray_id >= 0 && curr_tray_id < 16) {
ams_id = curr_tray_id / 4;
tray_id = curr_tray_id % 4;
} else {
BOOST_LOG_TRIVIAL(trace) << "extrusion_cali_sel: unsupported tray_id = " << curr_tray_id;
}
} catch (...) { } catch (...) {
; ;
} }
} }
if (tray_id == VIRTUAL_TRAY_ID) { else {
if (jj.contains("cali_idx")) { tray_id = jj["tray_id"].get<int>();
vt_tray.cali_idx = jj["cali_idx"].get<int>(); if(tray_id >= 0 && tray_id < 16)
vt_tray.set_hold_count(); {
ams_id = tray_id / 4;
slot_id = tray_id % 4;
} }
} else { else if(tray_id == VIRTUAL_TRAY_MAIN_ID || tray_id == VIRTUAL_TRAY_DEPUTY_ID){
ams_id = tray_id;
slot_id = 0;
}
}
BOOST_LOG_TRIVIAL(trace) << "extrusion_cali_sel: unsupported ams_id = " << ams_id << "slot_id = " << slot_id;
if (jj.contains("cali_idx")) {
if (ams_id == VIRTUAL_TRAY_MAIN_ID || ams_id == VIRTUAL_TRAY_DEPUTY_ID) {
if (ams_id == VIRTUAL_TRAY_MAIN_ID && vt_slot.size() > 0) {
vt_slot[MAIN_NOZZLE_ID].cali_idx = jj["cali_idx"].get<int>();
vt_slot[MAIN_NOZZLE_ID].set_hold_count();
} else if (ams_id == VIRTUAL_TRAY_DEPUTY_ID && vt_slot.size() > 1) {
vt_slot[DEPUTY_NOZZLE_ID].cali_idx = jj["cali_idx"].get<int>();
vt_slot[DEPUTY_NOZZLE_ID].set_hold_count();
}
}
else {
auto ams_item = this->amsList.find(std::to_string(ams_id)); auto ams_item = this->amsList.find(std::to_string(ams_id));
if (ams_item != this->amsList.end()) { if (ams_item != this->amsList.end()) {
auto tray_item = ams_item->second->trayList.find(std::to_string(tray_id)); auto tray_item = ams_item->second->trayList.find(std::to_string(slot_id));
if (tray_item != ams_item->second->trayList.end()) { if (tray_item != ams_item->second->trayList.end()) {
if (jj.contains("cali_idx")) {
tray_item->second->cali_idx = jj["cali_idx"].get<int>(); tray_item->second->cali_idx = jj["cali_idx"].get<int>();
tray_item->second->set_hold_count(); tray_item->second->set_hold_count();
} }
} }
} }
} }
} }
else if (jj["command"].get<std::string>() == "extrusion_cali_get") { else if (jj["command"].get<std::string>() == "extrusion_cali_get") {
std::string str = jj.dump(); std::string str = jj.dump();
@@ -5346,14 +5382,14 @@ std::string MachineObject::get_string_from_fantype(FanType type)
AmsTray MachineObject::parse_vt_tray(json vtray) AmsTray MachineObject::parse_vt_tray(json vtray)
{ {
auto vt_tray = AmsTray(std::to_string(VIRTUAL_TRAY_ID)); auto vt_tray = AmsTray(std::to_string(VIRTUAL_TRAY_MAIN_ID));
if (vtray.contains("id")) if (vtray.contains("id"))
vt_tray.id = vtray["id"].get<std::string>(); vt_tray.id = vtray["id"].get<std::string>();
auto curr_time = std::chrono::system_clock::now(); auto curr_time = std::chrono::system_clock::now();
auto diff = std::chrono::duration_cast<std::chrono::milliseconds>(curr_time - extrusion_cali_set_hold_start); auto diff = std::chrono::duration_cast<std::chrono::milliseconds>(curr_time - extrusion_cali_set_hold_start);
if (diff.count() > HOLD_TIMEOUT || diff.count() < 0 if (diff.count() > HOLD_TIMEOUT || diff.count() < 0
|| extrusion_cali_set_tray_id != VIRTUAL_TRAY_ID) { || extrusion_cali_set_tray_id != VIRTUAL_TRAY_MAIN_ID) {
if (vtray.contains("k")) if (vtray.contains("k"))
vt_tray.k = vtray["k"].get<float>(); vt_tray.k = vtray["k"].get<float>();
if (vtray.contains("n")) if (vtray.contains("n"))
@@ -5422,6 +5458,12 @@ AmsTray MachineObject::parse_vt_tray(json vtray)
else { else {
vt_tray.color = ""; vt_tray.color = "";
} }
if (vtray.contains("ctype")) {
vt_tray.ctype = vtray["ctype"].get<int>();
}
else {
vt_tray.ctype = 1;
}
if (vtray.contains("nozzle_temp_max")) if (vtray.contains("nozzle_temp_max"))
vt_tray.nozzle_temp_max = vtray["nozzle_temp_max"].get<std::string>(); vt_tray.nozzle_temp_max = vtray["nozzle_temp_max"].get<std::string>();
else else
@@ -5445,11 +5487,13 @@ AmsTray MachineObject::parse_vt_tray(json vtray)
vt_tray.cali_idx = -1; vt_tray.cali_idx = -1;
vt_tray.cols.clear(); vt_tray.cols.clear();
if (vtray.contains("cols")) { if (vtray.contains("cols")) {
if (vtray.is_array()) { if (vtray["cols"].is_array()) {
for (auto it = vtray.begin(); it != vtray.end(); it++) { for (auto it = vtray["cols"].begin(); it != vtray["cols"].end(); it++) {
vt_tray.cols.push_back(it.value().get<std::string>()); vt_tray.cols.push_back(it.value().get<std::string>());
} }
} }
} else {
vt_tray.cols.push_back(vt_tray.color);
} }
if (vtray.contains("remain")) { if (vtray.contains("remain")) {
@@ -5953,7 +5997,7 @@ void MachineObject::check_ams_filament_valid()
} }
} }
/*for (auto vt_tray : vt_slot)*/ do{ for (auto vt_tray : vt_slot) {
int vt_id = std::stoi(vt_tray.id); int vt_id = std::stoi(vt_tray.id);
int index = 255 - vt_id; int index = 255 - vt_id;
if (index >= m_extder_data.total_extder_count) { if (index >= m_extder_data.total_extder_count) {
@@ -6011,7 +6055,7 @@ void MachineObject::check_ams_filament_valid()
} }
} }
} }
} while (0); }
for (auto &diameter_pair : m_nozzle_filament_data) { for (auto &diameter_pair : m_nozzle_filament_data) {
auto &diameter = diameter_pair.first; auto &diameter = diameter_pair.first;
+5 -3
View File
@@ -39,8 +39,11 @@
#define RETRY_INTERNAL 2000 #define RETRY_INTERNAL 2000
#define MAIN_NOZZLE_ID 0 #define MAIN_NOZZLE_ID 0
#define DEPUTY_NOZZLE_ID 1
#define VIRTUAL_TRAY_MAIN_ID 255
#define VIRTUAL_TRAY_DEPUTY_ID 254
#define VIRTUAL_TRAY_ID 254
#define START_SEQ_ID 20000 #define START_SEQ_ID 20000
#define END_SEQ_ID 30000 #define END_SEQ_ID 30000
@@ -1078,8 +1081,7 @@ public:
NozzleData m_nozzle_data; NozzleData m_nozzle_data;
/*vi slot data*/ /*vi slot data*/
AmsTray vt_tray; // virtual tray std::vector<AmsTray> vt_slot;
//std::vector<AmsTray> vt_trays; // virtual tray for new
AmsTray parse_vt_tray(json vtray); AmsTray parse_vt_tray(json vtray);
/*for parse new info*/ /*for parse new info*/
bool check_enable_np(const json& print) const; bool check_enable_np(const json& print) const;
+2 -2
View File
@@ -469,7 +469,7 @@ void ExtrusionCalibration::on_click_cali(wxCommandEvent& event)
max_volumetric_speed = speed_opt->get_at(0); max_volumetric_speed = speed_opt->get_at(0);
if (bed_temp >= 0 && nozzle_temp >= 0 && max_volumetric_speed >= 0) { if (bed_temp >= 0 && nozzle_temp >= 0 && max_volumetric_speed >= 0) {
int curr_tray_id = ams_id * 4 + tray_id; int curr_tray_id = ams_id * 4 + tray_id;
if (tray_id == VIRTUAL_TRAY_ID) if (tray_id == VIRTUAL_TRAY_MAIN_ID)
curr_tray_id = tray_id; curr_tray_id = tray_id;
obj->command_start_extrusion_cali(curr_tray_id, nozzle_temp, bed_temp, max_volumetric_speed, it->setting_id); obj->command_start_extrusion_cali(curr_tray_id, nozzle_temp, bed_temp, max_volumetric_speed, it->setting_id);
return; return;
@@ -597,7 +597,7 @@ void ExtrusionCalibration::on_click_save(wxCommandEvent &event)
// send command // send command
int curr_tray_id = ams_id * 4 + tray_id; int curr_tray_id = ams_id * 4 + tray_id;
if (tray_id == VIRTUAL_TRAY_ID) if (tray_id == VIRTUAL_TRAY_MAIN_ID)
curr_tray_id = tray_id; curr_tray_id = tray_id;
obj->command_extrusion_cali_set(curr_tray_id, setting_id, name, k, n, bed_temp, nozzle_temp, max_volumetric_speed); obj->command_extrusion_cali_set(curr_tray_id, setting_id, name, k, n, bed_temp, nozzle_temp, max_volumetric_speed);
Close(); Close();
+2 -2
View File
@@ -1714,7 +1714,7 @@ std::map<int, DynamicPrintConfig> Sidebar::build_filament_ams_list(MachineObject
std::map<int, DynamicPrintConfig> filament_ams_list; std::map<int, DynamicPrintConfig> filament_ams_list;
if (!obj) return filament_ams_list; if (!obj) return filament_ams_list;
auto vt_tray = obj->vt_tray; auto vt_tray = obj->vt_slot[0];
if (obj->ams_support_virtual_tray) { if (obj->ams_support_virtual_tray) {
DynamicPrintConfig vt_tray_config; DynamicPrintConfig vt_tray_config;
vt_tray_config.set_key_value("filament_id", new ConfigOptionStrings{ vt_tray.setting_id }); vt_tray_config.set_key_value("filament_id", new ConfigOptionStrings{ vt_tray.setting_id });
@@ -1728,7 +1728,7 @@ std::map<int, DynamicPrintConfig> Sidebar::build_filament_ams_list(MachineObject
for (int i = 0; i < vt_tray.cols.size(); ++i) { for (int i = 0; i < vt_tray.cols.size(); ++i) {
vt_tray_config.opt<ConfigOptionStrings>("filament_multi_colors")->values.push_back(into_u8(wxColour("#" + vt_tray.cols[i]).GetAsString(wxC2S_HTML_SYNTAX))); vt_tray_config.opt<ConfigOptionStrings>("filament_multi_colors")->values.push_back(into_u8(wxColour("#" + vt_tray.cols[i]).GetAsString(wxC2S_HTML_SYNTAX)));
} }
filament_ams_list.emplace(VIRTUAL_TRAY_ID, std::move(vt_tray_config)); filament_ams_list.emplace(VIRTUAL_TRAY_MAIN_ID, std::move(vt_tray_config));
} }
auto list = obj->amsList; auto list = obj->amsList;
+10 -9
View File
@@ -419,7 +419,9 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
m_statictext_ams_msg = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL); m_statictext_ams_msg = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
m_statictext_ams_msg->SetMinSize(wxSize(FromDIP(600), -1));
m_statictext_ams_msg->SetMaxSize(wxSize(FromDIP(600), -1));
m_statictext_ams_msg->SetFont(::Label::Body_13); m_statictext_ams_msg->SetFont(::Label::Body_13);
m_statictext_ams_msg->Hide(); m_statictext_ams_msg->Hide();
@@ -616,7 +618,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
m_sizer_main->Add(m_filament_panel, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(15)); m_sizer_main->Add(m_filament_panel, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(15));
m_sizer_main->Add(m_sizer_filament_2extruder, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(15)); m_sizer_main->Add(m_sizer_filament_2extruder, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(15));
m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(6)); m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(6));
m_sizer_main->Add(m_statictext_ams_msg, 0, wxLEFT, 0); m_sizer_main->Add(m_statictext_ams_msg, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(15));
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(16)); m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(16));
m_sizer_main->Add(sizer_split_options, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(15)); m_sizer_main->Add(sizer_split_options, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(15));
m_sizer_main->Add(m_sizer_options, 0, wxLEFT|wxRIGHT, FromDIP(15)); m_sizer_main->Add(m_sizer_options, 0, wxLEFT|wxRIGHT, FromDIP(15));
@@ -1134,8 +1136,8 @@ bool SelectMachineDialog::get_ams_mapping_result(std::string &mapping_array_str,
try try
{ {
if (m_ams_mapping_result[k].ams_id.empty() || m_ams_mapping_result[k].slot_id.empty()) { // invalid case if (m_ams_mapping_result[k].ams_id.empty() || m_ams_mapping_result[k].slot_id.empty()) { // invalid case
mapping_item_v1["ams_id"] = 255; // TODO: Orca hack mapping_item_v1["ams_id"] = VIRTUAL_TRAY_MAIN_ID;
mapping_item_v1["slot_id"] = 255; mapping_item_v1["slot_id"] = VIRTUAL_TRAY_MAIN_ID;
} }
else { else {
mapping_item_v1["ams_id"] = std::stoi(m_ams_mapping_result[k].ams_id); mapping_item_v1["ams_id"] = std::stoi(m_ams_mapping_result[k].ams_id);
@@ -1241,9 +1243,7 @@ void SelectMachineDialog::update_ams_status_msg(wxString msg, bool is_warning)
if (str_new != str_old) { if (str_new != str_old) {
if (m_statictext_ams_msg->GetLabel() != msg) { if (m_statictext_ams_msg->GetLabel() != msg) {
m_statictext_ams_msg->SetLabel(msg); m_statictext_ams_msg->SetLabel(msg);
m_statictext_ams_msg->SetMinSize(wxSize(FromDIP(400), -1)); m_statictext_ams_msg->Wrap(FromDIP(600));
m_statictext_ams_msg->SetMaxSize(wxSize(FromDIP(400), -1));
m_statictext_ams_msg->Wrap(FromDIP(400));
m_statictext_ams_msg->Show(); m_statictext_ams_msg->Show();
Layout(); Layout();
Fit(); Fit();
@@ -3296,7 +3296,8 @@ void SelectMachineDialog::reset_and_sync_ams_list()
m_mapping_popup.set_parent_item(item); m_mapping_popup.set_parent_item(item);
m_mapping_popup.set_current_filament_id(extruder); m_mapping_popup.set_current_filament_id(extruder);
m_mapping_popup.set_tag_texture(materials[extruder]); m_mapping_popup.set_tag_texture(materials[extruder]);
m_mapping_popup.update_ams_data(obj_->amsList); m_mapping_popup.update(obj_);
m_mapping_popup.set_send_win(this);
m_mapping_popup.Popup(); m_mapping_popup.Popup();
} }
} }
@@ -3722,7 +3723,7 @@ void SelectMachineDialog::set_default_from_sdcard()
m_mapping_popup.set_parent_item(item); m_mapping_popup.set_parent_item(item);
m_mapping_popup.set_current_filament_id(fo.id); m_mapping_popup.set_current_filament_id(fo.id);
m_mapping_popup.set_tag_texture(fo.type); m_mapping_popup.set_tag_texture(fo.type);
m_mapping_popup.update_ams_data(obj_->amsList); m_mapping_popup.update(obj_);
m_mapping_popup.Popup(); m_mapping_popup.Popup();
} }
} }
+42 -35
View File
@@ -2630,7 +2630,7 @@ void StatusPanel::update_ams(MachineObject *obj)
} }
if (is_support_virtual_tray) m_ams_control->update_vams_kn_value(obj->vt_tray, obj); if (is_support_virtual_tray) m_ams_control->update_vams_kn_value(obj->vt_slot[0], obj);
if (m_filament_setting_dlg) m_filament_setting_dlg->update(); if (m_filament_setting_dlg) m_filament_setting_dlg->update();
std::vector<AMSinfo> ams_info; std::vector<AMSinfo> ams_info;
@@ -2670,11 +2670,11 @@ void StatusPanel::update_ams(MachineObject *obj)
std::string curr_ams_id = m_ams_control->GetCurentAms(); std::string curr_ams_id = m_ams_control->GetCurentAms();
std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id); std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id);
bool is_vt_tray = false; bool is_vt_tray = false;
if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_ID)) if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_MAIN_ID))
is_vt_tray = true; is_vt_tray = true;
// set segment 1, 2 // set segment 1, 2
if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_ID) ) { if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_MAIN_ID) ) {
m_ams_control->SetAmsStep(obj->m_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); m_ams_control->SetAmsStep(obj->m_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
} }
else { else {
@@ -2690,8 +2690,8 @@ void StatusPanel::update_ams(MachineObject *obj)
} }
// set segment 3 // set segment 3
if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_ID)) { if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
m_ams_control->SetExtruder(obj->is_filament_at_extruder(), true, obj->m_ams_id, obj->vt_tray.get_color()); m_ams_control->SetExtruder(obj->is_filament_at_extruder(), true, obj->m_ams_id, obj->vt_slot[0].get_color());
} else { } else {
m_ams_control->SetExtruder(obj->is_filament_at_extruder(), false, obj->m_ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id)); m_ams_control->SetExtruder(obj->is_filament_at_extruder(), false, obj->m_ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id));
@@ -2700,7 +2700,7 @@ void StatusPanel::update_ams(MachineObject *obj)
if (obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) { if (obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) {
update_filament_step(); update_filament_step();
if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_ID) && (obj->m_tray_now != std::to_string(VIRTUAL_TRAY_ID) || obj->m_tray_now != "255")) { if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_MAIN_ID) && (obj->m_tray_now != std::to_string(VIRTUAL_TRAY_MAIN_ID) || obj->m_tray_now != "255")) {
// wait to heat hotend // wait to heat hotend
if (obj->ams_status_sub == 0x02) { if (obj->ams_status_sub == 0x02) {
m_ams_control->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_VT_LOAD); m_ams_control->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_VT_LOAD);
@@ -2807,7 +2807,7 @@ void StatusPanel::update_ams(MachineObject *obj)
} }
bool is_curr_tray_selected = false; bool is_curr_tray_selected = false;
if (!curr_ams_id.empty() && !curr_can_id.empty() && (curr_ams_id != std::to_string(VIRTUAL_TRAY_ID)) ) { if (!curr_ams_id.empty() && !curr_can_id.empty() && (curr_ams_id != std::to_string(VIRTUAL_TRAY_MAIN_ID)) ) {
if (curr_can_id == obj->m_tray_now) { if (curr_can_id == obj->m_tray_now) {
is_curr_tray_selected = true; is_curr_tray_selected = true;
} }
@@ -2827,7 +2827,7 @@ void StatusPanel::update_ams(MachineObject *obj)
is_curr_tray_selected = true; is_curr_tray_selected = true;
} }
} }
}else if (curr_ams_id == std::to_string(VIRTUAL_TRAY_ID)) { }else if (curr_ams_id == std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
if (curr_ams_id == obj->m_tray_now) { if (curr_ams_id == obj->m_tray_now) {
is_curr_tray_selected = true; is_curr_tray_selected = true;
} }
@@ -2902,7 +2902,7 @@ void StatusPanel::update_ams_control_state(bool is_curr_tray_selected)
enable[ACTION_BTN_LOAD] = true; enable[ACTION_BTN_LOAD] = true;
enable[ACTION_BTN_UNLOAD] = false; enable[ACTION_BTN_UNLOAD] = false;
} }
else if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_ID)) { else if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
enable[ACTION_BTN_LOAD] = false; enable[ACTION_BTN_LOAD] = false;
enable[ACTION_BTN_UNLOAD] = true; enable[ACTION_BTN_UNLOAD] = true;
} }
@@ -2911,7 +2911,7 @@ void StatusPanel::update_ams_control_state(bool is_curr_tray_selected)
} }
else { else {
if (obj->is_in_printing() /*&& obj->can_resume() && obj->m_tray_now != std::to_string(VIRTUAL_TRAY_ID) */) { if (obj->is_in_printing() /*&& obj->can_resume() && obj->m_tray_now != std::to_string(VIRTUAL_TRAY_MAIN_ID) */) {
if (!obj->can_resume()) { if (!obj->can_resume()) {
enable[ACTION_BTN_LOAD] = false; enable[ACTION_BTN_LOAD] = false;
@@ -2920,7 +2920,7 @@ void StatusPanel::update_ams_control_state(bool is_curr_tray_selected)
else { else {
if (obj->m_tray_now == "255") { if (obj->m_tray_now == "255") {
if ( m_ams_control->GetCurentAms() == std::to_string(VIRTUAL_TRAY_ID) ) { if ( m_ams_control->GetCurentAms() == std::to_string(VIRTUAL_TRAY_MAIN_ID) ) {
enable[ACTION_BTN_LOAD] = true; enable[ACTION_BTN_LOAD] = true;
enable[ACTION_BTN_UNLOAD] = false; enable[ACTION_BTN_UNLOAD] = false;
} }
@@ -2929,8 +2929,8 @@ void StatusPanel::update_ams_control_state(bool is_curr_tray_selected)
enable[ACTION_BTN_UNLOAD] = false; enable[ACTION_BTN_UNLOAD] = false;
} }
} }
else if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_ID)) { else if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
if (m_ams_control->GetCurentAms() == std::to_string(VIRTUAL_TRAY_ID)) { if (m_ams_control->GetCurentAms() == std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
enable[ACTION_BTN_LOAD] = false; enable[ACTION_BTN_LOAD] = false;
enable[ACTION_BTN_UNLOAD] = true; enable[ACTION_BTN_UNLOAD] = true;
} }
@@ -3527,11 +3527,18 @@ void StatusPanel::on_ams_load_curr()
update_filament_step(); update_filament_step();
//virtual tray //virtual tray
if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_ID)) == 0) if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0 ||
curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) == 0)
{ {
int vt_slot_idx = 0;
if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) == 0)
{
vt_slot_idx = 1;
}
int old_temp = -1; int old_temp = -1;
int new_temp = -1; int new_temp = -1;
AmsTray* curr_tray = &obj->vt_tray; AmsTray* curr_tray = &obj->vt_slot[vt_slot_idx];
if (!curr_tray) return; if (!curr_tray) return;
@@ -3601,7 +3608,7 @@ void StatusPanel::on_ams_load_curr()
void StatusPanel::on_ams_load_vams(wxCommandEvent& event) { void StatusPanel::on_ams_load_vams(wxCommandEvent& event) {
BOOST_LOG_TRIVIAL(info) << "on_ams_load_vams_tray"; BOOST_LOG_TRIVIAL(info) << "on_ams_load_vams_tray";
m_ams_control->SwitchAms(std::to_string(VIRTUAL_TRAY_ID)); m_ams_control->SwitchAms(std::to_string(VIRTUAL_TRAY_MAIN_ID));
on_ams_load_curr(); on_ams_load_curr();
if (m_print_error_dlg) { if (m_print_error_dlg) {
m_print_error_dlg->on_hide(); m_print_error_dlg->on_hide();
@@ -3671,8 +3678,8 @@ void StatusPanel::on_filament_extrusion_cali(wxCommandEvent &event)
m_extrusion_cali_dlg->obj = obj; m_extrusion_cali_dlg->obj = obj;
std::string ams_id = m_ams_control->GetCurentAms(); std::string ams_id = m_ams_control->GetCurentAms();
std::string tray_id = m_ams_control->GetCurrentCan(ams_id); std::string tray_id = m_ams_control->GetCurrentCan(ams_id);
if (tray_id.empty() && ams_id.compare(std::to_string(VIRTUAL_TRAY_ID)) != 0) { if (tray_id.empty() && ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) != 0) {
wxString txt = _L("Please select an AMS slot before calibration."); wxString txt = _L("Please select an AMS slot before calibration");
MessageDialog msg_dlg(nullptr, txt, wxEmptyString, wxICON_WARNING | wxOK); MessageDialog msg_dlg(nullptr, txt, wxEmptyString, wxICON_WARNING | wxOK);
msg_dlg.ShowModal(); msg_dlg.ShowModal();
return; return;
@@ -3683,8 +3690,8 @@ void StatusPanel::on_filament_extrusion_cali(wxCommandEvent &event)
// set ams_filament id is is bbl filament // set ams_filament id is is bbl filament
if (ams_id.compare(std::to_string(VIRTUAL_TRAY_ID)) == 0) { if (ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0) {
tray_id_int = VIRTUAL_TRAY_ID; tray_id_int = VIRTUAL_TRAY_MAIN_ID;
m_extrusion_cali_dlg->ams_filament_id = ""; m_extrusion_cali_dlg->ams_filament_id = "";
} }
else { else {
@@ -3797,6 +3804,7 @@ void StatusPanel::on_ext_spool_edit(wxCommandEvent &event)
m_filament_setting_dlg->ams_id = ams_id; m_filament_setting_dlg->ams_id = ams_id;
m_filament_setting_dlg->slot_id = slot_id; m_filament_setting_dlg->slot_id = slot_id;
int nozzle_index = ams_id == VIRTUAL_TRAY_MAIN_ID ? 0 : 1;
try { try {
std::string sn_number; std::string sn_number;
@@ -3805,16 +3813,16 @@ void StatusPanel::on_ext_spool_edit(wxCommandEvent &event)
std::string temp_min; std::string temp_min;
wxString k_val; wxString k_val;
wxString n_val; wxString n_val;
k_val = wxString::Format("%.3f", obj->vt_tray.k); k_val = wxString::Format("%.3f", obj->vt_slot[nozzle_index].k);
n_val = wxString::Format("%.3f", obj->vt_tray.n); n_val = wxString::Format("%.3f", obj->vt_slot[nozzle_index].n);
wxColor color = AmsTray::decode_color(obj->vt_tray.color); wxColor color = AmsTray::decode_color(obj->vt_slot[nozzle_index].color);
m_filament_setting_dlg->ams_filament_id = obj->vt_tray.setting_id; m_filament_setting_dlg->ams_filament_id = obj->vt_slot[nozzle_index].setting_id;
std::vector<wxColour> cols; std::vector<wxColour> cols;
for (auto col : obj->vt_tray.cols) { for (auto col : obj->vt_slot[nozzle_index].cols) {
cols.push_back(AmsTray::decode_color(col)); cols.push_back(AmsTray::decode_color(col));
} }
m_filament_setting_dlg->set_ctype(obj->vt_tray.ctype); m_filament_setting_dlg->set_ctype(obj->vt_slot[nozzle_index].ctype);
if (m_filament_setting_dlg->ams_filament_id.empty()) { if (m_filament_setting_dlg->ams_filament_id.empty()) {
m_filament_setting_dlg->set_empty_color(color); m_filament_setting_dlg->set_empty_color(color);
@@ -3822,15 +3830,14 @@ void StatusPanel::on_ext_spool_edit(wxCommandEvent &event)
else { else {
m_filament_setting_dlg->set_color(color); m_filament_setting_dlg->set_color(color);
m_filament_setting_dlg->set_colors(cols); m_filament_setting_dlg->set_colors(cols);
} }
m_filament_setting_dlg->m_is_third = !MachineObject::is_bbl_filament(obj->vt_tray.tag_uid); m_filament_setting_dlg->m_is_third = !MachineObject::is_bbl_filament(obj->vt_slot[nozzle_index].tag_uid);
if (!m_filament_setting_dlg->m_is_third) { if (!m_filament_setting_dlg->m_is_third) {
sn_number = obj->vt_tray.uuid; sn_number = obj->vt_slot[nozzle_index].uuid;
filament = obj->vt_tray.sub_brands; filament = obj->vt_slot[nozzle_index].sub_brands;
temp_max = obj->vt_tray.nozzle_temp_max; temp_max = obj->vt_slot[nozzle_index].nozzle_temp_max;
temp_min = obj->vt_tray.nozzle_temp_min; temp_min = obj->vt_slot[nozzle_index].nozzle_temp_min;
} }
m_filament_setting_dlg->Move(wxPoint(current_position_x,current_position_y)); m_filament_setting_dlg->Move(wxPoint(current_position_x,current_position_y));
@@ -3857,8 +3864,8 @@ void StatusPanel::on_ams_refresh_rfid(wxCommandEvent &event)
} }
std::string curr_ams_id = m_ams_control->GetCurentAms(); std::string curr_ams_id = m_ams_control->GetCurentAms();
// do not support refresh rfid for VIRTUAL_TRAY_ID // do not support refresh rfid for VIRTUAL_TRAY_MAIN_ID
if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_ID)) == 0) { if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0) {
return; return;
} }
std::string curr_can_id = event.GetString().ToStdString(); std::string curr_can_id = event.GetString().ToStdString();
@@ -3887,7 +3894,7 @@ void StatusPanel::on_ams_selected(wxCommandEvent &event)
{ {
if (obj) { if (obj) {
std::string curr_ams_id = m_ams_control->GetCurentAms(); std::string curr_ams_id = m_ams_control->GetCurentAms();
if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_ID)) == 0) { if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0) {
//update_ams_control_state(curr_ams_id, true); //update_ams_control_state(curr_ams_id, true);
return; return;
} else { } else {
+4 -4
View File
@@ -260,13 +260,13 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_panel_virtual->SetMaxSize(wxSize(AMS_CAN_LIB_SIZE.x + FromDIP(16), AMS_CANS_SIZE.y)); m_panel_virtual->SetMaxSize(wxSize(AMS_CAN_LIB_SIZE.x + FromDIP(16), AMS_CANS_SIZE.y));
m_vams_info.material_state = AMSCanType::AMS_CAN_TYPE_VIRTUAL; m_vams_info.material_state = AMSCanType::AMS_CAN_TYPE_VIRTUAL;
m_vams_info.can_id = wxString::Format("%d", VIRTUAL_TRAY_ID).ToStdString(); m_vams_info.can_id = wxString::Format("%d", VIRTUAL_TRAY_MAIN_ID).ToStdString();
auto vams_panel = new wxWindow(m_panel_virtual, wxID_ANY); auto vams_panel = new wxWindow(m_panel_virtual, wxID_ANY);
vams_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR); vams_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
m_vams_lib = new AMSLib(vams_panel, m_vams_info.can_id, m_vams_info); m_vams_lib = new AMSLib(vams_panel, m_vams_info.can_id, m_vams_info);
m_vams_lib->m_slot_id = m_vams_info.can_id; m_vams_lib->m_slot_id = "0"; // TODO: Orca hack
m_vams_road = new AMSRoad(vams_panel, wxID_ANY, m_vams_info, -1, -1, wxDefaultPosition, AMS_CAN_ROAD_SIZE); m_vams_road = new AMSRoad(vams_panel, wxID_ANY, m_vams_info, -1, -1, wxDefaultPosition, AMS_CAN_ROAD_SIZE);
m_vams_lib->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& e) { m_vams_lib->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& e) {
@@ -1202,7 +1202,7 @@ void AMSControl::SwitchAms(std::string ams_id)
{ {
if(ams_id == m_current_show_ams){return;} if(ams_id == m_current_show_ams){return;}
if (ams_id != std::to_string(VIRTUAL_TRAY_ID)) { if (ams_id != std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
if (m_current_show_ams != ams_id) { if (m_current_show_ams != ams_id) {
m_current_show_ams = ams_id; m_current_show_ams = ams_id;
m_extruder->OnAmsLoading(false); m_extruder->OnAmsLoading(false);
@@ -1229,7 +1229,7 @@ void AMSControl::SwitchAms(std::string ams_id)
} }
if (!ready_selected) { if (!ready_selected) {
m_current_ams = std::to_string(VIRTUAL_TRAY_ID); m_current_ams = std::to_string(VIRTUAL_TRAY_MAIN_ID);
m_vams_lib->OnSelected(); m_vams_lib->OnSelected();
} }
else { else {