FIX: Ams control display

jira: NONE

Change-Id: I221eb4167dad894c9e7f32141d33c5c96934df96
This commit is contained in:
hang.xu 2024-07-24 16:13:46 +08:00 committed by lane.wei
parent 733cb96805
commit 065c8d029e
6 changed files with 973 additions and 550 deletions

View File

@ -0,0 +1,7 @@
<svg width="37" height="141" viewBox="0 0 37 141" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20.981 21.3223L36.981 22.8848V29.7598L20.981 31.3223V21.3223Z" fill="#ACACAC"/>
<path d="M20.981 121.322L36.981 122.885V129.76L20.981 131.322V121.322Z" fill="#ACACAC"/>
<path d="M7.98096 31.3223L7.98096 21.3223L0.980957 22.1035L0.980956 30.541L7.98096 31.3223Z" fill="#ACACAC"/>
<path d="M7.98096 131.322L7.98096 121.322L0.980957 122.104L0.980956 130.541L7.98096 131.322Z" fill="#ACACAC"/>
<rect x="7.98096" y="0.322266" width="19" height="140" rx="9.5" fill="#CECECE"/>
</svg>

After

Width:  |  Height:  |  Size: 586 B

View File

@ -2590,9 +2590,12 @@ void StatusPanel::update_ams(MachineObject *obj)
AMSModel ams_mode = AMSModel::GENERIC_AMS; AMSModel ams_mode = AMSModel::GENERIC_AMS;
if (obj) { if (obj) {
if (obj->get_printer_ams_type() == "f1") { ams_mode = AMSModel::EXTRA_AMS; } if (obj->get_printer_ams_type() == "f1") { ams_mode = AMSModel::AMS_LITE; }
else if(obj->get_printer_ams_type() == "generic") { ams_mode = AMSModel::GENERIC_AMS; } else if(obj->get_printer_ams_type() == "generic") { ams_mode = AMSModel::GENERIC_AMS; }
} }
if (obj->is_enable_np && obj->amsList.size() > 0){
ams_mode = AMSModel(obj->amsList[0]->type);
}
if (!obj if (!obj
|| !obj->is_connected() || !obj->is_connected()
@ -2609,7 +2612,8 @@ void StatusPanel::update_ams(MachineObject *obj)
} }
m_ams_control->SetAmsModel(AMSModel::NO_AMS, ams_mode); m_ams_control->SetAmsModel(AMSModel::EXT_AMS, ams_mode);
show_ams_group(false); show_ams_group(false);
m_ams_control->show_auto_refill(false); m_ams_control->show_auto_refill(false);
} }
@ -2630,6 +2634,9 @@ void StatusPanel::update_ams(MachineObject *obj)
AMSinfo info; AMSinfo info;
info.ams_id = ams->first; info.ams_id = ams->first;
if (ams->second->is_exists && info.parse_ams_info(obj, ams->second, obj->ams_calibrate_remain_flag, obj->is_support_ams_humidity)) { if (ams->second->is_exists && info.parse_ams_info(obj, ams->second, obj->ams_calibrate_remain_flag, obj->is_support_ams_humidity)) {
if (ams_mode == AMSModel::AMS_LITE) {
info.ams_type = AMSModel::AMS_LITE;
}
ams_info.push_back(info); ams_info.push_back(info);
} }
} }
@ -3865,6 +3872,8 @@ 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();
std::string curr_selected_ams_id = std::to_string(event.GetInt());
if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_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;
@ -3897,7 +3906,7 @@ void StatusPanel::on_ams_guide(wxCommandEvent& event)
if (m_ams_control && m_ams_control->m_is_none_ams_mode == AMSModel::GENERIC_AMS) { if (m_ams_control && m_ams_control->m_is_none_ams_mode == AMSModel::GENERIC_AMS) {
ams_wiki_url = "https://wiki.bambulab.com/en/software/bambu-studio/use-ams-on-bambu-studio"; ams_wiki_url = "https://wiki.bambulab.com/en/software/bambu-studio/use-ams-on-bambu-studio";
} }
else if (m_ams_control && m_ams_control->m_is_none_ams_mode == AMSModel::EXTRA_AMS) { else if (m_ams_control && m_ams_control->m_is_none_ams_mode == AMSModel::AMS_LITE) {
ams_wiki_url = "https://wiki.bambulab.com/en/ams-lite"; ams_wiki_url = "https://wiki.bambulab.com/en/ams-lite";
} }
else { else {

View File

@ -2412,6 +2412,7 @@ Description:AMSControl
// WX_DEFINE_OBJARRAY(AmsItemsHash); // WX_DEFINE_OBJARRAY(AmsItemsHash);
#define AMS_CANS_SIZE wxSize(FromDIP(284), -1) #define AMS_CANS_SIZE wxSize(FromDIP(284), -1)
#define AMS_CANS_WINDOW_SIZE wxSize(FromDIP(264), -1) #define AMS_CANS_WINDOW_SIZE wxSize(FromDIP(264), -1)
#define SINGLE_SLOT_AMS_PANEL_SIZE wxSize(FromDIP(264), (160))
AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size) AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size)
: wxSimplebook(parent, wxID_ANY, pos, size) : wxSimplebook(parent, wxID_ANY, pos, size)
, m_Humidity_tip_popup(AmsHumidityTipPopup(this)) , m_Humidity_tip_popup(AmsHumidityTipPopup(this))
@ -2528,7 +2529,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_panel_down_road->SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR); m_panel_down_road->SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR);
m_down_road = new AMSRoadDownPart(m_panel_down_road, wxID_ANY, wxDefaultPosition, AMS_DOWN_ROAD_SIZE); m_down_road = new AMSRoadDownPart(m_panel_down_road, wxID_ANY, wxDefaultPosition, AMS_DOWN_ROAD_SIZE);
m_sizer_down_road->Add(m_panel_down_road, 0, wxALIGN_CENTER, 0); m_sizer_down_road->Add(m_panel_down_road, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, 0);
// ams mode // ams mode
//m_simplebook_ams_left = new wxSimplebook(m_simplebook_ams_left, wxID_ANY, wxDefaultPosition, AMS_CANS_WINDOW_SIZE, 0); //m_simplebook_ams_left = new wxSimplebook(m_simplebook_ams_left, wxID_ANY, wxDefaultPosition, AMS_CANS_WINDOW_SIZE, 0);
@ -2562,8 +2563,8 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_sizer_option_right->SetMinSize( wxSize( AMS_CANS_SIZE.x,-1 ) );*/ m_sizer_option_right->SetMinSize( wxSize( AMS_CANS_SIZE.x,-1 ) );*/
/*m_sizer_option_left->SetMinSize(wxSize(FromDIP(239), -1)); /*m_sizer_option_left->SetMinSize(wxSize(FromDIP(239), -1));
m_sizer_option_right->SetMinSize(wxSize(FromDIP(239), -1));*/ m_sizer_option_right->SetMinSize(wxSize(FromDIP(239), -1));*/
m_sizer_option_left->SetMinSize(wxSize(FromDIP(180), -1)); m_sizer_option_left->SetMinSize(wxSize(FromDIP(140), -1));
//m_sizer_option_right->SetMinSize(wxSize(FromDIP(120), -1)); m_sizer_option_right->SetMinSize(wxSize(FromDIP(140), -1));
StateColor btn_bg_green(std::pair<wxColour, int>(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled), StateColor btn_bg_green(std::pair<wxColour, int>(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled),
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
@ -2599,7 +2600,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
// m_img_ams_backup->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); }); // m_img_ams_backup->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
// m_img_ams_backup->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); }); // m_img_ams_backup->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
// m_img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {post_event(SimpleEvent(EVT_AMS_FILAMENT_BACKUP)); }); // m_img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {post_event(SimpleEvent(EVT_AMS_FILAMENT_BACKUP)); });
m_sizer_option_left->Add(m_button_auto_refill, 0, wxLEFT, 0); m_sizer_option_left->Add(m_button_auto_refill, 0, wxALIGN_CENTER, 0);
m_button_ams_setting_normal = ScalableBitmap(this, "ams_setting_normal", 24); m_button_ams_setting_normal = ScalableBitmap(this, "ams_setting_normal", 24);
m_button_ams_setting_hover = ScalableBitmap(this, "ams_setting_hover", 24); m_button_ams_setting_hover = ScalableBitmap(this, "ams_setting_hover", 24);
@ -2607,7 +2608,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_button_ams_setting = new wxStaticBitmap(m_amswin, wxID_ANY, m_button_ams_setting_normal.bmp(), wxDefaultPosition, wxSize(FromDIP(24), FromDIP(24))); m_button_ams_setting = new wxStaticBitmap(m_amswin, wxID_ANY, m_button_ams_setting_normal.bmp(), wxDefaultPosition, wxSize(FromDIP(24), FromDIP(24)));
m_button_ams_setting->SetBackgroundColour(m_amswin->GetBackgroundColour()); m_button_ams_setting->SetBackgroundColour(m_amswin->GetBackgroundColour());
m_sizer_option_left->Add(m_button_ams_setting, 0, wxLEFT, FromDIP(5)); m_sizer_option_left->Add(m_button_ams_setting, 0, wxALIGN_CENTER|wxLEFT, FromDIP(5));
/*option mid*/ /*option mid*/
@ -2657,15 +2658,15 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
//m_sizer_option_right->Add(0, 0, 1, wxEXPAND, 0); //m_sizer_option_right->Add(0, 0, 1, wxEXPAND, 0);
m_sizer_option_right->Add(m_button_extruder_back, 0, wxLEFT, FromDIP(60)); m_sizer_option_right->Add(m_button_extruder_back, 0, wxLEFT, FromDIP(0));
m_sizer_option_right->Add(m_button_extruder_feed, 0, wxLEFT, FromDIP(5)); m_sizer_option_right->Add(m_button_extruder_feed, 0, wxLEFT, FromDIP(5));
m_sizer_ams_option->Add(m_sizer_option_left, 0, wxEXPAND, 0); m_sizer_ams_option->Add(m_sizer_option_left, 0, wxLEFT, 0);
//m_sizer_ams_option->Add(m_sizer_option_mid, 1, wxEXPAND, 0); //m_sizer_ams_option->Add(m_sizer_option_mid, 1, wxEXPAND, 0);
m_sizer_ams_option->Add(m_sizer_option_mid, 1, wxEXPAND, 0); m_sizer_ams_option->Add(m_sizer_option_mid, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, FromDIP(60));
//m_sizer_ams_option->Add(m_sizer_option_right, 0, wxEXPAND, 0); //m_sizer_ams_option->Add(m_sizer_option_right, 0, wxEXPAND, 0);
m_sizer_ams_option->Add(m_sizer_option_right, 0, wxLEFT, 0); m_sizer_ams_option->Add(m_sizer_option_right, 0, wxALIGN_CENTER, 0);
@ -2890,7 +2891,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_sizer_body->Add(m_sizer_ams_items, 0, wxALIGN_CENTER, 0); m_sizer_body->Add(m_sizer_ams_items, 0, wxALIGN_CENTER, 0);
m_sizer_body->Add(0, 0, 1, wxEXPAND | wxTOP, FromDIP(10)); m_sizer_body->Add(0, 0, 1, wxEXPAND | wxTOP, FromDIP(10));
m_sizer_body->Add(m_sizer_ams_body, 0, wxALIGN_CENTER, 0); m_sizer_body->Add(m_sizer_ams_body, 0, wxALIGN_CENTER, 0);
m_sizer_body->Add(m_sizer_down_road, 0, wxALIGN_CENTER, 0); m_sizer_body->Add(m_sizer_down_road, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, 0);
//m_sizer_body->Add(m_sizer_ams_body, 0, wxEXPAND, 0); //m_sizer_body->Add(m_sizer_ams_body, 0, wxEXPAND, 0);
//m_sizer_body->Add(m_sizer_ams_option, 0, wxEXPAND, 0); //m_sizer_body->Add(m_sizer_ams_option, 0, wxEXPAND, 0);
m_sizer_body->Add(m_sizer_ams_option, 0, wxALIGN_CENTER, 0); m_sizer_body->Add(m_sizer_ams_option, 0, wxALIGN_CENTER, 0);
@ -2943,6 +2944,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
} }
m_Humidity_tip_popup.Popup(); m_Humidity_tip_popup.Popup();
}); });
Bind(EVT_AMS_ON_SELECTED, &AMSControl::AmsSelectedSwitch, this);
/* m_button_guide->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { /* m_button_guide->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) {
@ -2968,13 +2970,8 @@ AMSControl::~AMSControl() {
m_simplebook_ams_right->DeleteAllPages();*/ m_simplebook_ams_right->DeleteAllPages();*/
} }
std::string AMSControl::GetCurentAms(bool right_panel) { std::string AMSControl::GetCurentAms() {
if (right_panel){ return m_current_ams;
return m_current_ams_right;
}
else{
return m_current_ams_left;
}
} }
std::string AMSControl::GetCurentShowAms(bool right_panel) { std::string AMSControl::GetCurentShowAms(bool right_panel) {
if (right_panel){ if (right_panel){
@ -3017,6 +3014,37 @@ bool AMSControl::IsAmsInRightPanel(std::string ams_id) {
} }
} }
void AMSControl::AmsSelectedSwitch(wxCommandEvent& event) {
std::string ams_id_selected = std::to_string(event.GetInt());
if (m_current_ams != ams_id_selected){
m_current_ams = ams_id_selected;
}
if (m_current_show_ams_left != ams_id_selected){
auto item = m_ams_item_list[m_current_show_ams_left];
if (!item) return;
try{
for (auto can : item->m_can_lib_list){
can.second->UnSelected();
}
}
catch (...){
;
}
}
else if (m_current_show_ams_right != ams_id_selected){
auto item = m_ams_item_list[m_current_show_ams_right];
if (!item) return;
try {
for (auto can : item->m_can_lib_list) {
can.second->UnSelected();
}
}
catch (...) {
;
}
}
}
wxColour AMSControl::GetCanColour(std::string amsid, std::string canid) wxColour AMSControl::GetCanColour(std::string amsid, std::string canid)
{ {
wxColour col = *wxWHITE; wxColour col = *wxWHITE;
@ -3044,7 +3072,7 @@ void AMSControl::SetActionState(bool button_status[])
void AMSControl::EnterNoneAMSMode() void AMSControl::EnterNoneAMSMode()
{ {
//m_vams_lib->m_ams_model = m_ext_model; //m_vams_lib->m_ams_model = m_ext_model;
if(m_is_none_ams_mode == AMSModel::NO_AMS) return; if(m_is_none_ams_mode == AMSModel::EXT_AMS) return;
m_panel_items_left->Hide(); m_panel_items_left->Hide();
m_simplebook_ams_left->SetSelection(0); m_simplebook_ams_left->SetSelection(0);
@ -3058,7 +3086,7 @@ void AMSControl::EnterNoneAMSMode()
m_amswin->Layout(); m_amswin->Layout();
m_amswin->Fit(); m_amswin->Fit();
Layout(); Layout();
m_is_none_ams_mode = AMSModel::NO_AMS; m_is_none_ams_mode = AMSModel::EXT_AMS;
} }
void AMSControl::EnterGenericAMSMode() void AMSControl::EnterGenericAMSMode()
@ -3091,7 +3119,7 @@ void AMSControl::EnterGenericAMSMode()
void AMSControl::EnterExtraAMSMode() void AMSControl::EnterExtraAMSMode()
{ {
//m_vams_lib->m_ams_model = m_ext_model; //m_vams_lib->m_ams_model = m_ext_model;
if(m_is_none_ams_mode == AMSModel::EXTRA_AMS) return; if(m_is_none_ams_mode == AMSModel::AMS_LITE) return;
m_panel_items_left->Hide(); m_panel_items_left->Hide();
@ -3114,7 +3142,7 @@ void AMSControl::EnterExtraAMSMode()
m_amswin->Fit(); m_amswin->Fit();
Layout(); Layout();
Refresh(true); Refresh(true);
m_is_none_ams_mode = AMSModel::EXTRA_AMS; m_is_none_ams_mode = AMSModel::AMS_LITE;
} }
@ -3146,19 +3174,30 @@ void AMSControl::msw_rescale()
m_button_ams_setting->SetBitmap(m_button_ams_setting_normal.bmp()); m_button_ams_setting->SetBitmap(m_button_ams_setting_normal.bmp());
m_extruder->msw_rescale(); m_extruder->msw_rescale();
m_vams_extra_road->msw_rescale(); if (m_vams_extra_road) m_vams_extra_road->msw_rescale();
m_button_extruder_feed->SetMinSize(wxSize(-1, FromDIP(24)));
m_button_extruder_back->SetMinSize(wxSize(-1, FromDIP(24))); if (m_button_extruder_feed) m_button_extruder_feed->SetMinSize(wxSize(-1, FromDIP(24)));
m_button_auto_refill->SetMinSize(wxSize(-1, FromDIP(24))); if (m_button_extruder_back) m_button_extruder_back->SetMinSize(wxSize(-1, FromDIP(24)));
m_button_ams_setting->SetMinSize(wxSize(FromDIP(25), FromDIP(24))); if (m_button_auto_refill) m_button_auto_refill->SetMinSize(wxSize(-1, FromDIP(24)));
m_button_guide->SetMinSize(wxSize(-1, FromDIP(24))); if (m_button_ams_setting) m_button_ams_setting->SetMinSize(wxSize(FromDIP(25), FromDIP(24)));
m_button_retry->SetMinSize(wxSize(-1, FromDIP(24))); if (m_button_guide) m_button_guide->SetMinSize(wxSize(-1, FromDIP(24)));
m_vams_lib->msw_rescale(); if (m_button_retry) m_button_retry->SetMinSize(wxSize(-1, FromDIP(24)));
if (m_vams_lib) m_vams_lib->msw_rescale();
for (auto ams_item : m_ams_item_list) { for (auto ams_item : m_ams_item_list) {
ams_item.second->msw_rescale(); if (ams_item.second){
ams_item.second->msw_rescale();
}
}
for (auto ams_prv : m_ams_preview_list) {
if (ams_prv.second){
ams_prv.second->msw_rescale();
}
}
if (m_down_road){
m_down_road->msw_rescale();
} }
Layout(); Layout();
@ -3233,41 +3272,32 @@ void AMSControl::UpdateStepCtrl(bool is_extrusion)
void AMSControl::UpdatePassRoad(string ams_id, AMSPassRoadType type, AMSPassRoadSTEP step) { void AMSControl::UpdatePassRoad(string ams_id, AMSPassRoadType type, AMSPassRoadSTEP step) {
bool left = false; bool left = false;
int len = -1; int len = -1;
for (auto id : m_item_ids[0]) for (auto id : m_item_ids[0]){
{ if (ams_id == id){
if (ams_id == id)
{
left = true; left = true;
break; break;
} }
} }
if (m_ams_item_list[ams_id]->m_info.cans.size() == 4) if (m_ams_item_list[ams_id]->m_info.cans.size() == 4){
{
len = 133; len = 133;
} }
else else{
{ for (auto pairId : pair_id){
for (auto pairId : pair_id)
{
if (pairId.first == ams_id) { if (pairId.first == ams_id) {
len = 72; len = 72;
break; break;
} }
if (pairId.second == ams_id) if (pairId.second == ams_id){
{
len = 188; len = 188;
break; break;
} }
} }
} }
if (len == -1) if (len == -1){
{ if (left){
if (left)
{
len = 213; len = 213;
} }
else else{
{
len = 72; len = 72;
} }
} }
@ -3349,7 +3379,6 @@ void AMSControl::CreateAmsNew()
Freeze(); Freeze();
for (auto ams_info = m_ams_info.begin(); ams_info != m_ams_info.end(); ams_info++) for (auto ams_info = m_ams_info.begin(); ams_info != m_ams_info.end(); ams_info++)
{ {
if (first_left_page && ams_info->nozzle_id == 1) { if (first_left_page && ams_info->nozzle_id == 1) {
first_left_page = false; first_left_page = false;
left_init_mode = ams_info->cans.size() == 4 ? AMSRoadShowMode::AMS_ROAD_MODE_FOUR : AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; left_init_mode = ams_info->cans.size() == 4 ? AMSRoadShowMode::AMS_ROAD_MODE_FOUR : AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
@ -3358,11 +3387,11 @@ void AMSControl::CreateAmsNew()
{ {
if (first_right_page && ams_info->nozzle_id == 0) { if (first_right_page && ams_info->nozzle_id == 0) {
first_right_page = false; first_right_page = false;
right_init_mode = AMSRoadShowMode::AMS_ROAD_MODE_FOUR; right_init_mode = ams_info->ams_type == AMSModel::AMS_LITE ? AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS : AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
} }
if (first_left_page && ams_info->nozzle_id == 1) { if (first_left_page && ams_info->nozzle_id == 1) {
first_left_page = false; first_left_page = false;
left_init_mode = AMSRoadShowMode::AMS_ROAD_MODE_FOUR; left_init_mode = ams_info->ams_type == AMSModel::AMS_LITE ? AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS : AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
} }
AddAmsPreview(*ams_info, ams_info->ams_type); AddAmsPreview(*ams_info, ams_info->ams_type);
AddAms(*ams_info); AddAms(*ams_info);
@ -3420,7 +3449,7 @@ void AMSControl::CreateAmsNew()
} }
pair_id.push_back(std::make_pair(single_info_right[0].ams_id, 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));
} }
AddAmsPreview(ext_info, AMSModel::NO_AMS); AddAmsPreview(ext_info, AMSModel::EXT_AMS);
AddAms(single_info_right); AddAms(single_info_right);
single_info_right.clear(); single_info_right.clear();
@ -3439,7 +3468,7 @@ void AMSControl::CreateAmsNew()
} }
pair_id.push_back(std::make_pair(single_info_left[0].ams_id, 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(ext_info, AMSModel::NO_AMS); AddAmsPreview(ext_info, AMSModel::EXT_AMS);
AddAms(single_info_left); AddAms(single_info_left);
single_info_left.clear(); single_info_left.clear();
@ -3448,6 +3477,7 @@ void AMSControl::CreateAmsNew()
m_simplebook_ams_left->Hide(); m_simplebook_ams_left->Hide();
m_panel_items_left->Hide(); m_panel_items_left->Hide();
} }
else if(m_nozzle_num > 1) { else if(m_nozzle_num > 1) {
m_sizer_items_left->Layout(); m_sizer_items_left->Layout();
m_sizer_items_right->Layout(); m_sizer_items_right->Layout();
@ -3462,8 +3492,24 @@ void AMSControl::CreateAmsNew()
} }
m_extruder->update(2); m_extruder->update(2);
auto it = m_ams_item_list.begin(); auto it = m_ams_item_list.begin();
m_current_show_ams_left = "-1";
m_current_show_ams_right = "-1";
for (auto it = m_ams_item_list.begin(); it != m_ams_item_list.end(); it++)
{
if (it->second->m_info.nozzle_id == 1 && m_current_show_ams_left == "-1"){
m_current_show_ams_left = it->second->m_info.ams_id;
}
if (it->second->m_info.nozzle_id == 0 && m_current_show_ams_right == "-1"){
m_current_show_ams_right = it->second->m_info.ams_id;
}
}
m_current_ams = "-1";
m_down_road->UpdatePassRoad("0", true, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); m_down_road->UpdatePassRoad("0", true, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false, 1);
m_down_road->UpdatePassRoad("0", false, -1, (++it)->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); m_down_road->UpdatePassRoad("0", false, -1, (++it)->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false);
//Refresh(); //Refresh();
//Freeze(); //Freeze();
Thaw(); Thaw();
@ -3482,13 +3528,13 @@ void AMSControl::CreateAmsSingleNozzle()
for (auto ams_info = m_ams_info.begin(); ams_info != m_ams_info.end(); ams_info++){ for (auto ams_info = m_ams_info.begin(); ams_info != m_ams_info.end(); ams_info++){
if (ams_info->cans.size() == 4){ if (ams_info->cans.size() == 4){
if (m_item_nums[0] <= m_item_nums[1]){ if (m_item_nums[0] <= m_item_nums[1]){
if (m_item_nums[0] == 0) left_init_mode = AMSRoadShowMode::AMS_ROAD_MODE_FOUR; if (m_item_nums[0] == 0) left_init_mode = ams_info->ams_type == AMSModel::AMS_LITE ? AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS : AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
left = true; left = true;
m_item_ids[0].push_back(ams_info->ams_id); m_item_ids[0].push_back(ams_info->ams_id);
m_item_nums[0]++; m_item_nums[0]++;
} }
else{ else{
if (m_item_nums[1] == 0) right_init_mode = AMSRoadShowMode::AMS_ROAD_MODE_FOUR; if (m_item_nums[1] == 0) right_init_mode = ams_info->ams_type == AMSModel::AMS_LITE ? AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS : AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
left = false; left = false;
m_item_ids[1].push_back(ams_info->ams_id); m_item_ids[1].push_back(ams_info->ams_id);
m_item_nums[1]++; m_item_nums[1]++;
@ -3526,6 +3572,11 @@ void AMSControl::CreateAmsSingleNozzle()
BOOST_LOG_TRIVIAL(trace) << "vt_slot empty!"; BOOST_LOG_TRIVIAL(trace) << "vt_slot empty!";
return; return;
} }
if (m_ams_info.size() > 0 && m_ams_info[0].ams_type == AMSModel::AMS_LITE){
for (auto ext = m_ext_info.begin(); ext != m_ext_info.end(); ext++){
ext->ext_type = AMSModelOriginType::LITE_EXT;
}
}
single_info.push_back(m_ext_info[0]); single_info.push_back(m_ext_info[0]);
if (m_item_nums[0] <= m_item_nums[1]){ if (m_item_nums[0] <= m_item_nums[1]){
if (m_item_nums[0] == 0){ if (m_item_nums[0] == 0){
@ -3541,7 +3592,6 @@ void AMSControl::CreateAmsSingleNozzle()
m_item_ids[0].push_back(it.ams_id); m_item_ids[0].push_back(it.ams_id);
} }
m_item_nums[0]++; m_item_nums[0]++;
} }
else{ else{
if (m_item_nums[1] == 0){ if (m_item_nums[1] == 0){
@ -3562,7 +3612,7 @@ void AMSControl::CreateAmsSingleNozzle()
if (single_info.size() == 2){ if (single_info.size() == 2){
pair_id.push_back(std::make_pair(single_info[0].ams_id, single_info[1].ams_id)); pair_id.push_back(std::make_pair(single_info[0].ams_id, single_info[1].ams_id));
} }
AddAmsPreview(m_ext_info[0], AMSModel::NO_AMS); AddAmsPreview(m_ext_info[0], AMSModel::EXT_AMS);
AddAms(single_info, left); AddAms(single_info, left);
m_panel_items_left->Hide(); m_panel_items_left->Hide();
@ -3570,6 +3620,7 @@ void AMSControl::CreateAmsSingleNozzle()
/*m_simplebook_ams_right->Hide(); /*m_simplebook_ams_right->Hide();
m_panel_items_right->Hide();*/ m_panel_items_right->Hide();*/
//m_simplebook_ams_left->Hide(); //m_simplebook_ams_left->Hide();
m_simplebook_ams_right->Hide(); m_simplebook_ams_right->Hide();
m_panel_items_right->Hide(); m_panel_items_right->Hide();
m_simplebook_ams_left->SetSelection(0); m_simplebook_ams_left->SetSelection(0);
@ -3594,10 +3645,26 @@ void AMSControl::CreateAmsSingleNozzle()
m_down_road->UpdateLeft(1, left_init_mode); m_down_road->UpdateLeft(1, left_init_mode);
m_down_road->UpdateRight(1, right_init_mode); m_down_road->UpdateRight(1, right_init_mode);
} }
m_current_show_ams_left = "-1";
m_current_show_ams_right = "-1";
for (auto it = m_ams_item_list.begin(); it != m_ams_item_list.end(); it++)
{
if (!IsAmsInRightPanel(it->second->m_info.ams_id) && m_current_show_ams_left == "-1"){
m_current_show_ams_left = it->second->m_info.ams_id;
}
if (IsAmsInRightPanel(it->second->m_info.ams_id) && m_current_show_ams_right == "-1"){
m_current_show_ams_right = it->second->m_info.ams_id;
}
}
m_current_ams = "-1";
m_extruder->update(1); m_extruder->update(1);
auto it = m_ams_item_list.begin(); auto it = m_ams_item_list.begin();
m_down_road->UpdatePassRoad("0", true, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); if (it != m_ams_item_list.end()){
if ((++it) != m_ams_item_list.end()){ m_down_road->UpdatePassRoad("0", true, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
if ((++it) != m_ams_item_list.end()) {
m_down_road->UpdatePassRoad("0", false, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); m_down_road->UpdatePassRoad("0", false, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
} }
@ -3810,7 +3877,7 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
if (ifo.ams_id == ams_id) { if (ifo.ams_id == ams_id) {
cans->m_info = ifo; cans->m_info = ifo;
cans->Update(ifo); cans->Update(ifo);
cans->show_sn_value(m_ams_model == AMSModel::EXTRA_AMS ? false : true); cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true);
} }
} }
} }
@ -3819,7 +3886,7 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
if (ifo.ams_id == ams_id) { if (ifo.ams_id == ams_id) {
cans->m_info = ifo; cans->m_info = ifo;
cans->Update(ifo); cans->Update(ifo);
cans->show_sn_value(m_ams_model == AMSModel::EXTRA_AMS ? false : true); cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true);
} }
} }
} }
@ -3944,7 +4011,7 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
if (ifo.ams_id == ams_id) { if (ifo.ams_id == ams_id) {
cans->m_info = ifo; cans->m_info = ifo;
cans->Update(ifo); cans->Update(ifo);
cans->show_sn_value(m_ams_model == AMSModel::EXTRA_AMS ? false : true); cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true);
} }
} }
} }
@ -3953,7 +4020,7 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
if (ifo.ams_id == ams_id) { if (ifo.ams_id == ams_id) {
cans->m_info = ifo; cans->m_info = ifo;
cans->Update(ifo); cans->Update(ifo);
cans->show_sn_value(m_ams_model == AMSModel::EXTRA_AMS ? false : true); cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true);
} }
} }
} }
@ -4000,7 +4067,7 @@ void AMSControl::AddAms(AMSinfo info, bool left)
{ {
if (info.nozzle_id == 0) if (info.nozzle_id == 0)
{ {
ams_item = new AmsItem(m_simplebook_ams_right, info, info.ams_type); ams_item = new AmsItem(m_simplebook_ams_right, info, info.ams_type, AMSPanelPos::RIGHT_PANEL);
//m_simplebook_ams_right->RemovePage(m_right_page_index); //m_simplebook_ams_right->RemovePage(m_right_page_index);
m_simplebook_ams_right->InsertPage(m_right_page_index, ams_item, wxEmptyString, true); m_simplebook_ams_right->InsertPage(m_right_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_right_page_index; ams_item->m_selection = m_right_page_index;
@ -4008,7 +4075,7 @@ void AMSControl::AddAms(AMSinfo info, bool left)
} }
else if (info.nozzle_id == 1) else if (info.nozzle_id == 1)
{ {
ams_item = new AmsItem(m_simplebook_ams_left, info, info.ams_type); ams_item = new AmsItem(m_simplebook_ams_left, info, info.ams_type, AMSPanelPos::LEFT_PANEL);
//m_simplebook_ams_left->RemovePage(m_left_page_index); //m_simplebook_ams_left->RemovePage(m_left_page_index);
m_simplebook_ams_left->InsertPage(m_left_page_index, ams_item, wxEmptyString, true); m_simplebook_ams_left->InsertPage(m_left_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_left_page_index; ams_item->m_selection = m_left_page_index;
@ -4019,14 +4086,14 @@ void AMSControl::AddAms(AMSinfo info, bool left)
{ {
if (left) if (left)
{ {
ams_item = new AmsItem(m_simplebook_ams_left, info, info.ams_type); ams_item = new AmsItem(m_simplebook_ams_left, info, info.ams_type, AMSPanelPos::LEFT_PANEL);
//m_simplebook_ams_left->RemovePage(m_left_page_index); //m_simplebook_ams_left->RemovePage(m_left_page_index);
m_simplebook_ams_left->InsertPage(m_left_page_index, ams_item, wxEmptyString, true); m_simplebook_ams_left->InsertPage(m_left_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_left_page_index; ams_item->m_selection = m_left_page_index;
m_left_page_index++; m_left_page_index++;
} }
else { else {
ams_item = new AmsItem(m_simplebook_ams_right, info, info.ams_type); ams_item = new AmsItem(m_simplebook_ams_right, info, info.ams_type, AMSPanelPos::RIGHT_PANEL);
//m_simplebook_ams_right->RemovePage(m_right_page_index); //m_simplebook_ams_right->RemovePage(m_right_page_index);
m_simplebook_ams_right->InsertPage(m_right_page_index, ams_item, wxEmptyString, true); m_simplebook_ams_right->InsertPage(m_right_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_right_page_index; ams_item->m_selection = m_right_page_index;
@ -4069,7 +4136,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
return; return;
} }
else if (single_info.size() == 1){ else if (single_info.size() == 1){
mode = AMSModel::NO_AMS; mode = AMSModel::EXT_AMS;
int w = 30; int w = 30;
if (m_nozzle_num == 2) if (m_nozzle_num == 2)
{ {
@ -4077,7 +4144,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
{ {
wxPanel* book_panel = new wxPanel(m_simplebook_ams_right); wxPanel* book_panel = new wxPanel(m_simplebook_ams_right);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR); book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
ams_item = new AmsItem(book_panel, single_info[0], mode); ams_item = new AmsItem(book_panel, single_info[0], mode, AMSPanelPos::RIGHT_PANEL);
sizer->Add(ams_item, 0, wxLEFT, FromDIP(30)); sizer->Add(ams_item, 0, wxLEFT, FromDIP(30));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
@ -4093,7 +4160,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
{ {
wxPanel* book_panel = new wxPanel(m_simplebook_ams_left); wxPanel* book_panel = new wxPanel(m_simplebook_ams_left);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR); book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
ams_item = new AmsItem(book_panel, single_info[0], mode); ams_item = new AmsItem(book_panel, single_info[0], mode, AMSPanelPos::LEFT_PANEL);
sizer->Add(ams_item, 0, wxLEFT, FromDIP(30)); sizer->Add(ams_item, 0, wxLEFT, FromDIP(30));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
@ -4106,13 +4173,11 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
m_left_page_index++; m_left_page_index++;
} }
} }
else if (m_nozzle_num == 1) else if (m_nozzle_num == 1){
{ if (!left){
if (!left)
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_right); wxPanel* book_panel = new wxPanel(m_simplebook_ams_right);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR); book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
ams_item = new AmsItem(book_panel, single_info[0], mode); ams_item = new AmsItem(book_panel, single_info[0], mode, AMSPanelPos::RIGHT_PANEL);
sizer->Add(ams_item, 0, wxLEFT, FromDIP(30)); sizer->Add(ams_item, 0, wxLEFT, FromDIP(30));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
@ -4128,7 +4193,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
{ {
wxPanel* book_panel = new wxPanel(m_simplebook_ams_left); wxPanel* book_panel = new wxPanel(m_simplebook_ams_left);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR); book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
ams_item = new AmsItem(book_panel, single_info[0], mode); ams_item = new AmsItem(book_panel, single_info[0], mode, AMSPanelPos::LEFT_PANEL);
sizer->Add(ams_item, 0, wxLEFT, FromDIP(30)); sizer->Add(ams_item, 0, wxLEFT, FromDIP(30));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
@ -4151,11 +4216,11 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
wxBoxSizer* book_sizer = new wxBoxSizer(wxVERTICAL); wxBoxSizer* book_sizer = new wxBoxSizer(wxVERTICAL);
if (single_info[1].ams_id == std::to_string(VIRTUAL_TRAY_MAIN_ID) || single_info[1].ams_id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) if (single_info[1].ams_id == std::to_string(VIRTUAL_TRAY_MAIN_ID) || single_info[1].ams_id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID))
{ {
mode = AMSModel::NO_AMS; mode = AMSModel::EXT_AMS;
} }
else else
{ {
mode = AMSModel::SINGLE_AMS; mode = AMSModel::N3S_AMS;
} }
if (m_nozzle_num == 2) if (m_nozzle_num == 2)
{ {
@ -4165,8 +4230,8 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR); book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
ams_item = new AmsItem(book_panel, single_info[0], AMSModel::SINGLE_AMS); ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::RIGHT_PANEL);
ext_item = new AmsItem(book_panel, single_info[1], mode); ext_item = new AmsItem(book_panel, single_info[1], mode, AMSPanelPos::RIGHT_PANEL);
book_sizer->Add(ams_item); book_sizer->Add(ams_item);
book_sizer->Add(ext_item); book_sizer->Add(ext_item);
book_panel->SetSizer(book_sizer); book_panel->SetSizer(book_sizer);
@ -4184,8 +4249,8 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR); book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
ams_item = new AmsItem(book_panel, single_info[0], AMSModel::SINGLE_AMS); ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::LEFT_PANEL);
ext_item = new AmsItem(book_panel, single_info[1], mode); ext_item = new AmsItem(book_panel, single_info[1], mode, AMSPanelPos::LEFT_PANEL);
book_sizer->Add(ams_item); book_sizer->Add(ams_item);
book_sizer->Add(ext_item); book_sizer->Add(ext_item);
book_panel->SetSizer(book_sizer); book_panel->SetSizer(book_sizer);
@ -4203,8 +4268,8 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR); book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
ams_item = new AmsItem(book_panel, single_info[0], AMSModel::SINGLE_AMS); ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::RIGHT_PANEL);
ext_item = new AmsItem(book_panel, single_info[1], mode); ext_item = new AmsItem(book_panel, single_info[1], mode, AMSPanelPos::RIGHT_PANEL);
book_sizer->Add(ams_item); book_sizer->Add(ams_item);
book_sizer->Add(ext_item); book_sizer->Add(ext_item);
book_panel->SetSizer(book_sizer); book_panel->SetSizer(book_sizer);
@ -4222,8 +4287,8 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR); book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150))); book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
ams_item = new AmsItem(book_panel, single_info[0], AMSModel::SINGLE_AMS); ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::LEFT_PANEL);
ext_item = new AmsItem(book_panel, single_info[1], mode); ext_item = new AmsItem(book_panel, single_info[1], mode, AMSPanelPos::LEFT_PANEL);
book_sizer->Add(ams_item); book_sizer->Add(ams_item);
book_sizer->Add(ext_item); book_sizer->Add(ext_item);
book_panel->SetSizer(book_sizer); book_panel->SetSizer(book_sizer);
@ -4283,13 +4348,13 @@ void AMSControl::SwitchAms(std::string ams_id)
if (is_in_right){ if (is_in_right){
if (m_current_show_ams_right != ams_id) { if (m_current_show_ams_right != ams_id) {
m_current_show_ams_right = ams_id; m_current_show_ams_right = ams_id;
m_extruder->OnAmsLoading(false); //m_extruder->OnAmsLoading(false);
} }
} }
else{ else{
m_current_show_ams_left = ams_id; m_current_show_ams_left = ams_id;
m_extruder->OnAmsLoading(false); /*if (m_nozzle_num > 1) m_extruder->OnAmsLoading(false, 1);
if (m_nozzle_num > 1) m_extruder->OnAmsLoading(false, 1); else m_extruder->OnAmsLoading(false);*/
} }
@ -4312,10 +4377,10 @@ void AMSControl::SwitchAms(std::string ams_id)
} }
} }
if (is_in_right){ if (is_in_right){
m_current_ams_right = ams_id; m_current_show_ams_right = ams_id;
} }
else{ else{
m_current_ams_left = ams_id; m_current_show_ams_left = ams_id;
} }
} else { } else {
@ -4341,7 +4406,13 @@ void AMSControl::SwitchAms(std::string ams_id)
if (item->m_info.nozzle_id == 1){ if (item->m_info.nozzle_id == 1){
m_simplebook_ams_left->SetSelection(item->m_selection); m_simplebook_ams_left->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4){ if (item->m_info.cans.size() == 4){
m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR); if (item->m_info.ams_type == AMSModel::AMS_LITE){
m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS);
}
else{
m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
}
} }
else { else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
@ -4358,7 +4429,13 @@ void AMSControl::SwitchAms(std::string ams_id)
else if (item->m_info.nozzle_id == 0){ else if (item->m_info.nozzle_id == 0){
m_simplebook_ams_right->SetSelection(item->m_selection); m_simplebook_ams_right->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4){ if (item->m_info.cans.size() == 4){
m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR); if (item->m_info.ams_type == AMSModel::AMS_LITE){
m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS);
}
else{
m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
}
} }
else { else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
@ -4379,7 +4456,13 @@ void AMSControl::SwitchAms(std::string ams_id)
if (id == item->m_info.ams_id){ if (id == item->m_info.ams_id){
m_simplebook_ams_left->SetSelection(item->m_selection); m_simplebook_ams_left->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4){ if (item->m_info.cans.size() == 4){
m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR); if (item->m_info.ams_type == AMSModel::AMS_LITE){
m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS);
}
else{
m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
}
} }
else { else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
@ -4399,7 +4482,13 @@ void AMSControl::SwitchAms(std::string ams_id)
if (id == item->m_info.ams_id){ if (id == item->m_info.ams_id){
m_simplebook_ams_right->SetSelection(item->m_selection); m_simplebook_ams_right->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4){ if (item->m_info.cans.size() == 4){
m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR); if (item->m_info.ams_type == AMSModel::AMS_LITE){
m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS);
}
else{
m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
}
} }
else { else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
@ -4431,12 +4520,12 @@ void AMSControl::SwitchAms(std::string ams_id)
case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3: m_extruder->TurnOn(GetCanColour(ams_id, m_ams_info[i].current_can_id)); break; case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3: m_extruder->TurnOn(GetCanColour(ams_id, m_ams_info[i].current_can_id)); break;
} }
SetAmsStep(ams_id, m_ams_info[i].current_can_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, m_ams_info[i].current_step); //SetAmsStep(ams_id, m_ams_info[i].current_can_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, m_ams_info[i].current_step);
} }
} }
for (auto i = 0; i < m_ext_info.size(); i++) { for (auto i = 0; i < m_ext_info.size(); i++) {
if (m_ext_info[i].ams_id == ams_id) { if (m_ext_info[i].ams_id == ams_id) {
SetAmsStep(ams_id, "0", AMSPassRoadType::AMS_ROAD_TYPE_LOAD, m_ext_info[i].current_step); //SetAmsStep(ams_id, "0", AMSPassRoadType::AMS_ROAD_TYPE_LOAD, m_ext_info[i].current_step);
} }
} }
} }
@ -4567,12 +4656,12 @@ void AMSControl::SetExtruder(bool on_off, bool is_vams, std::string ams_now, wxC
else { else {
m_extruder->TurnOn(col); m_extruder->TurnOn(col);
if (item){ if (item){
if (ams_now != GetCurentShowAms()) { /*if (ams_now != GetCurentShowAms()) {
m_extruder->OnAmsLoading(false, item->m_info.nozzle_id, col); m_extruder->OnAmsLoading(false, item->m_info.nozzle_id, col);
} }
else { else {
m_extruder->OnAmsLoading(true, item->m_info.nozzle_id, col); m_extruder->OnAmsLoading(true, item->m_info.nozzle_id, col);
} }*/
} }
} }
@ -4588,7 +4677,7 @@ void AMSControl::SetExtruder(bool on_off, bool is_vams, std::string ams_now, wxC
m_vams_road->OnVamsLoading(false); m_vams_road->OnVamsLoading(false);
}*/ }*/
} }
else if (m_ams_model == AMSModel::EXTRA_AMS || m_ext_model == AMSModel::EXTRA_AMS) { else if (m_ams_model == AMSModel::AMS_LITE || m_ext_model == AMSModel::AMS_LITE) {
if (!on_off) { if (!on_off) {
m_extruder->TurnOff(); m_extruder->TurnOff();
m_extruder->OnAmsLoading(false); m_extruder->OnAmsLoading(false);
@ -4709,14 +4798,17 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
m_last_ams_id = ams_id; m_last_ams_id = ams_id;
m_last_tray_id = canid; m_last_tray_id = canid;
auto model = AMSModel::EXTRA_AMS; int can_index = atoi(canid.c_str());
std::string ams_id_left = GetCurentShowAms(false);
std::string ams_id_right = GetCurentShowAms(true);
auto model = AMSModel::AMS_LITE;
bool left = !IsAmsInRightPanel(ams_id); bool left = !IsAmsInRightPanel(ams_id);
int length = -1; int length = -1;
if (ams->m_info.cans.size() == 4){ if (ams->m_info.cans.size() == 4){
length = left ? 135 : 149; length = left ? 134 : 150;
model = ams->m_info.ams_type; model = ams->m_info.ams_type;
} }
else if (ams->m_info.cans.size() == 1){ else if (ams->m_info.cans.size() == 1){
@ -4730,66 +4822,133 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
break; break;
} }
} }
model = AMSModel::SINGLE_AMS; model = AMSModel::N3S_AMS;
} }
if (model == AMSModel::EXTRA_AMS){ if (model == AMSModel::AMS_LITE){
length = left ? 150 : 50; length = left ? 150 : 50;
} }
for (auto i = 0; i < m_ams_info.size(); i++) {
if (model == AMSModel::GENERIC_AMS || model == AMSModel::N3F_AMS || model == AMSModel::EXTRA_AMS) { if (m_ams_info[i].ams_id == ams_id) {
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) { m_ams_info[i].current_step = step;
//cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); m_ams_info[i].current_can_id = canid;
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id);
}
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id);
}
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
if (m_current_show_ams_left == ams_id || m_current_show_ams_right == ams_id) {
m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
}
}
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
} }
} }
else if(model == AMSModel::NO_AMS || model == AMSModel::SINGLE_AMS) { for (auto i = 0; i < m_ext_info.size(); i++) {
if (m_ext_info[i].ams_id == ams_id) {
m_ext_info[i].current_step = step;
m_ext_info[i].current_can_id = canid;
}
}
AMSinfo info;
if (m_ams_item_list[ams_id] != nullptr) {
info = m_ams_item_list[ams_id]->m_info;
}
else
{
return;
}
if (can_index >= 0 && can_index < info.cans.size())
{
m_down_road->SetPassRoadColour(left, info.cans[can_index].material_colour);
}
if (model == AMSModel::GENERIC_AMS || model == AMSModel::N3F_AMS || model == AMSModel::AMS_LITE) {
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
//cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); //cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false); if (ams_id_left == ams_id || ams_id_right == ams_id){
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id);
}
} }
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1); ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
m_extruder->OnAmsLoading(false); if (ams_id_left == ams_id || ams_id_right == ams_id){
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id);
}
else
{
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
}
}
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
if (ams_id_left == ams_id || ams_id_right == ams_id) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
}
else
{
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
}
}
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
if (ams_id_left == ams_id || ams_id_right == ams_id)
{
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
}
else
{
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
}
}
}
else if(model == AMSModel::EXT_AMS || model == AMSModel::N3S_AMS) {
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
//cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
if (ams_id_left == ams_id || ams_id_right == ams_id) {
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false);
}
else
{
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
}
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) {
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
if (ams_id_left == ams_id || ams_id_right == ams_id) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
m_extruder->OnAmsLoading(false);
}
else
{
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
}
} }
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2); m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2); if (ams_id_left == ams_id || ams_id_right == ams_id) {
if (m_current_show_ams_left == ams_id || m_current_show_ams_right == ams_id) { ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid)); m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
} }
else
{
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
}
} }
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3); ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid)); if (ams_id_left == ams_id || ams_id_right == ams_id) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
}
else
{
m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
}
} }
} }
@ -4831,25 +4990,13 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
// } // }
//} //}
for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == ams_id) {
m_ams_info[i].current_step = step;
m_ams_info[i].current_can_id = canid;
}
}
for (auto i = 0; i < m_ext_info.size(); i++) {
if (m_ext_info[i].ams_id == ams_id) {
m_ext_info[i].current_step = step;
m_ext_info[i].current_can_id = canid;
}
}
} }
void AMSControl::on_filament_load(wxCommandEvent &event) void AMSControl::on_filament_load(wxCommandEvent &event)
{ {
m_button_extruder_back->Disable(); m_button_extruder_back->Disable();
for (auto i = 0; i < m_ams_info.size(); i++) { for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_LOAD; } if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_LOAD; }
} }
post_event(SimpleEvent(EVT_AMS_LOAD)); post_event(SimpleEvent(EVT_AMS_LOAD));
} }
@ -4857,7 +5004,7 @@ void AMSControl::on_filament_load(wxCommandEvent &event)
void AMSControl::on_extrusion_cali(wxCommandEvent &event) void AMSControl::on_extrusion_cali(wxCommandEvent &event)
{ {
for (auto i = 0; i < m_ams_info.size(); i++) { for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; } if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; }
} }
post_event(SimpleEvent(EVT_AMS_EXTRUSION_CALI)); post_event(SimpleEvent(EVT_AMS_EXTRUSION_CALI));
} }
@ -4866,7 +5013,7 @@ void AMSControl::on_filament_unload(wxCommandEvent &event)
{ {
m_button_extruder_feed->Disable(); m_button_extruder_feed->Disable();
for (auto i = 0; i < m_ams_info.size(); i++) { for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_UNLOAD; } if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_UNLOAD; }
} }
post_event(SimpleEvent(EVT_AMS_UNLOAD)); post_event(SimpleEvent(EVT_AMS_UNLOAD));
} }
@ -4879,7 +5026,7 @@ void AMSControl::auto_refill(wxCommandEvent& event)
void AMSControl::on_ams_setting_click(wxMouseEvent &event) void AMSControl::on_ams_setting_click(wxMouseEvent &event)
{ {
for (auto i = 0; i < m_ams_info.size(); i++) { for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; } if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; }
} }
post_event(SimpleEvent(EVT_AMS_SETTINGS)); post_event(SimpleEvent(EVT_AMS_SETTINGS));
} }

View File

@ -26,8 +26,7 @@ public:
void on_retry(); void on_retry();
protected: protected:
std::string m_current_ams_left; std::string m_current_ams;
std::string m_current_ams_right;
std::string m_current_slot_left; std::string m_current_slot_left;
std::string m_current_slot_right; std::string m_current_slot_right;
std::string m_current_show_ams_left; std::string m_current_show_ams_left;
@ -130,18 +129,19 @@ protected:
std::string m_last_tray_id = "-1"; std::string m_last_tray_id = "-1";
public: public:
std::string GetCurentAms(bool right_panel = true); std::string GetCurentAms();
std::string GetCurentShowAms(bool right_panel = true); std::string GetCurentShowAms(bool right_panel = true);
std::string GetCurrentCan(std::string amsid); std::string GetCurrentCan(std::string amsid);
bool IsAmsInRightPanel(std::string ams_id); bool IsAmsInRightPanel(std::string ams_id);
wxColour GetCanColour(std::string amsid, std::string canid); wxColour GetCanColour(std::string amsid, std::string canid);
AMSModel m_ams_model{AMSModel::NO_AMS}; AMSModel m_ams_model{AMSModel::EXT_AMS};
AMSModel m_ext_model{AMSModel::NO_AMS}; AMSModel m_ext_model{AMSModel::EXT_AMS};
AMSModel m_is_none_ams_mode{AMSModel::NO_AMS}; AMSModel m_is_none_ams_mode{AMSModel::EXT_AMS};
bool m_single_nozzle_no_ams = { true }; bool m_single_nozzle_no_ams = { true };
void SetAmsModel(AMSModel mode, AMSModel ext_mode) {m_ams_model = mode; m_ext_model = ext_mode;}; void SetAmsModel(AMSModel mode, AMSModel ext_mode) {m_ams_model = mode; m_ext_model = ext_mode;};
void AmsSelectedSwitch(wxCommandEvent& event);
void SetActionState(bool button_status[]); void SetActionState(bool button_status[]);
void EnterNoneAMSMode(); void EnterNoneAMSMode();

File diff suppressed because it is too large Load Diff

View File

@ -33,11 +33,16 @@
namespace Slic3r { namespace GUI { namespace Slic3r { namespace GUI {
enum AMSModel { enum AMSModel {
NO_AMS = 0, //ext EXT_AMS = 0, //ext
GENERIC_AMS = 1, GENERIC_AMS = 1,
EXTRA_AMS = 2, //ams-lite AMS_LITE = 2, //ams-lite
N3F_AMS = 3, N3F_AMS = 3,
SINGLE_AMS = 4 //n3s N3S_AMS = 4 //n3s single_ams
};
enum AMSModelOriginType {
GENERIC_EXT,
LITE_EXT
}; };
enum ActionButton { enum ActionButton {
@ -57,16 +62,17 @@ enum class AMSRoadMode : int {
AMS_ROAD_MODE_VIRTUAL_TRAY AMS_ROAD_MODE_VIRTUAL_TRAY
}; };
enum class AMSRoadDownPartLoad : int { enum class AMSPanelPos : int {
AMS_ROAD_MODE_LEFT, SINGLE_PANEL,
AMS_ROAD_MODE_RIGHT, LEFT_PANEL,
AMS_ROAD_MODE_NONE RIGHT_PANEL,
}; };
enum class AMSRoadShowMode : int { enum class AMSRoadShowMode : int {
AMS_ROAD_MODE_FOUR, AMS_ROAD_MODE_FOUR,
AMS_ROAD_MODE_DOUBLE, AMS_ROAD_MODE_DOUBLE,
AMS_ROAD_MODE_SINGLE, AMS_ROAD_MODE_SINGLE,
AMS_ROAD_MODE_EXTRA_AMS,
AMS_ROAD_MODE_NONE AMS_ROAD_MODE_NONE
}; };
@ -141,6 +147,7 @@ enum FilamentStepType {
#define AMS_ITEM_SINGLE_SIZE wxSize(FromDIP(20), FromDIP(24)) #define AMS_ITEM_SINGLE_SIZE wxSize(FromDIP(20), FromDIP(24))
#define AMS_ITEM_HUMIDITY_SIZE wxSize(FromDIP(120), FromDIP(27)) #define AMS_ITEM_HUMIDITY_SIZE wxSize(FromDIP(120), FromDIP(27))
#define AMS_CAN_LIB_SIZE wxSize(FromDIP(52), FromDIP(80)) #define AMS_CAN_LIB_SIZE wxSize(FromDIP(52), FromDIP(80))
#define AMS_LITE_CAN_LIB_SIZE wxSize(FromDIP(49), FromDIP(72))
#define AMS_CAN_ROAD_SIZE wxSize(FromDIP(264), FromDIP(50)) #define AMS_CAN_ROAD_SIZE wxSize(FromDIP(264), FromDIP(50))
#define AMS_ITEMS_PANEL_SIZE wxSize(FromDIP(264), FromDIP(27)) #define AMS_ITEMS_PANEL_SIZE wxSize(FromDIP(264), FromDIP(27))
//#define AMS_CANS_SIZE wxSize(FromDIP(284), FromDIP(184)) //#define AMS_CANS_SIZE wxSize(FromDIP(284), FromDIP(184))
@ -178,6 +185,7 @@ public:
int curreent_filamentstep; int curreent_filamentstep;
int ams_humidity = 0; int ams_humidity = 0;
AMSModel ams_type = AMSModel::GENERIC_AMS; AMSModel ams_type = AMSModel::GENERIC_AMS;
AMSModelOriginType ext_type = AMSModelOriginType::GENERIC_EXT;
bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false); bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false);
void ReadExtInfo(AmsTray tray); void ReadExtInfo(AmsTray tray);
@ -352,7 +360,7 @@ Description:AMSLib
class AMSLib : public wxWindow class AMSLib : public wxWindow
{ {
public: public:
AMSLib(wxWindow *parent, std::string ams_idx, Caninfo info); AMSLib(wxWindow *parent, std::string ams_idx, Caninfo info, AMSModelOriginType ext_type = AMSModelOriginType::GENERIC_EXT);
~AMSLib(); ~AMSLib();
void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize); void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
public: public:
@ -366,6 +374,7 @@ public:
int m_can_index = 0; int m_can_index = 0;
bool transparent_changed = { false }; bool transparent_changed = { false };
AMSModel m_ams_model; AMSModel m_ams_model;
AMSModelOriginType m_ext_type = { AMSModelOriginType::GENERIC_EXT };
void Update(Caninfo info, std::string ams_idx, bool refresh = true); void Update(Caninfo info, std::string ams_idx, bool refresh = true);
void UnableSelected() { m_unable_selected = true; }; void UnableSelected() { m_unable_selected = true; };
@ -482,7 +491,7 @@ public:
public: public:
AMSinfo m_amsinfo; AMSinfo m_amsinfo;
Caninfo m_info; //Caninfo m_info;
int m_load_slot_index = { 0 }; int m_load_slot_index = { 0 };
int m_load_ams_index = { 0 }; int m_load_ams_index = { 0 };
//AMSRoadMode m_rode_mode = { AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT }; //AMSRoadMode m_rode_mode = { AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT };
@ -495,7 +504,7 @@ public:
double m_radius = { 4 }; double m_radius = { 4 };
wxColour m_road_def_color; wxColour m_road_def_color;
wxColour m_road_color; wxColour m_road_color;
void Update(AMSinfo amsinfo, Caninfo info); void Update(AMSinfo amsinfo);
std::vector<ScalableBitmap> ams_humidity_img; std::vector<ScalableBitmap> ams_humidity_img;
@ -514,6 +523,8 @@ public:
void paintEvent(wxPaintEvent& evt); void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc); void render(wxDC& dc);
void doRender(wxDC& dc); void doRender(wxDC& dc);
void msw_rescale();
}; };
@ -528,49 +539,40 @@ public:
void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize); void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
public: public:
AMSinfo m_amsinfo;
Caninfo m_info;
int m_canindex = { 0 };
int m_nozzle_num = { 1 }; int m_nozzle_num = { 1 };
AMSRoadShowMode m_single_ext_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR }; AMSRoadShowMode m_single_ext_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR };
AMSRoadShowMode m_left_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR }; AMSRoadShowMode m_left_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR };
AMSRoadShowMode m_right_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR }; AMSRoadShowMode m_right_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR };
bool m_selected = { false }; bool m_selected = { false };
bool m_single_nozzle_no_ams = { false };
int m_left_road_length = { -1 }; int m_left_road_length = { -1 };
int m_right_road_length = { -1 }; int m_right_road_length = { -1 };
int m_passroad_width = { 6 }; int m_passroad_width = { 6 };
double m_radius = { 4 }; double m_radius = { 4 };
wxColour m_road_def_color;
AMSPassRoadType m_pass_road_type = { AMSPassRoadType::AMS_ROAD_TYPE_NONE }; AMSPassRoadType m_pass_road_type = { AMSPassRoadType::AMS_ROAD_TYPE_NONE };
AMSPassRoadSTEP m_pass_road_left_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE }; AMSPassRoadSTEP m_pass_road_left_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE };
AMSPassRoadSTEP m_pass_road_right_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE }; AMSPassRoadSTEP m_pass_road_right_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE };
wxColour m_road_color; std::map<int, wxColour> m_road_color;
//void Update(AMSRoadDownPartMode nozzle, AMSRoadShowMode left_mode, AMSRoadShowMode right_mode, int left_len, int right_len); //void Update(AMSRoadDownPartMode nozzle, AMSRoadShowMode left_mode, AMSRoadShowMode right_mode, int left_len, int right_len);
void UpdateLeft(int nozzle_num, AMSRoadShowMode mode); void UpdateLeft(int nozzle_num, AMSRoadShowMode mode);
void UpdateRight(int nozzle_num, AMSRoadShowMode mode); void UpdateRight(int nozzle_num, AMSRoadShowMode mode);
std::vector<ScalableBitmap> ams_humidity_img;
int m_humidity = { 0 };
bool m_show_humidity = { false };
bool m_vams_loading{ false }; bool m_vams_loading{ false };
AMSModel m_ams_model; AMSModel m_ams_model;
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500); void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void SetPassRoadColour(wxColour col); void SetPassRoadColour(bool left, wxColour col);
void SetMode(AMSRoadDownPartLoad mode);
void SetShowMode(AMSRoadShowMode left_mode, AMSRoadShowMode right_mode); void SetShowMode(AMSRoadShowMode left_mode, AMSRoadShowMode right_mode);
void OnPassRoad(std::vector<AMSPassRoadMode> prord_list);
void UpdatePassRoad(string can_id, bool left, int len, AMSinfo info, AMSPassRoadSTEP step); void UpdatePassRoad(string can_id, bool left, int len, AMSinfo info, AMSPassRoadSTEP step);
void paintEvent(wxPaintEvent& evt); void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc); void render(wxDC& dc);
void doRender(wxDC& dc); void doRender(wxDC& dc);
void msw_rescale();
}; };
/************************************************* /*************************************************
@ -594,6 +596,7 @@ public:
void OnSelected(); void OnSelected();
void UnSelected(); void UnSelected();
virtual bool Enable(bool enable = true); virtual bool Enable(bool enable = true);
void msw_rescale();
AMSinfo m_amsinfo; AMSinfo m_amsinfo;
@ -606,10 +609,10 @@ protected:
bool m_selected = {false}; bool m_selected = {false};
AMSModel m_ams_item_type = AMSModel::GENERIC_AMS; AMSModel m_ams_item_type = AMSModel::GENERIC_AMS;
ScalableBitmap* m_ts_bitmap_cube; ScalableBitmap m_ts_bitmap_cube;
ScalableBitmap* m_four_slot_bitmap; ScalableBitmap m_four_slot_bitmap;
ScalableBitmap* m_single_slot_bitmap; ScalableBitmap m_single_slot_bitmap;
ScalableBitmap* m_ext_bitmap; ScalableBitmap m_ext_bitmap;
void paintEvent(wxPaintEvent &evt); void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc); void render(wxDC &dc);
@ -647,6 +650,7 @@ public:
void paintEvent(wxPaintEvent& evt); void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc); void render(wxDC& dc);
void doRender(wxDC& dc); void doRender(wxDC& dc);
void msw_rescale();
}; };
@ -657,12 +661,13 @@ class AmsItem : public wxWindow
{ {
public: public:
AmsItem(); AmsItem();
AmsItem(wxWindow *parent, AMSinfo info, AMSModel model); AmsItem(wxWindow *parent, AMSinfo info, AMSModel model, AMSPanelPos pos);
~AmsItem(); ~AmsItem();
void Update(AMSinfo info); void Update(AMSinfo info);
void create(wxWindow *parent); void create(wxWindow *parent);
void AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* sizer); void AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* sizer);
void AddExtraCan(Caninfo caninfo, int canindex, int maxcan, wxGridSizer* sizer);
void SetDefSelectCan(); void SetDefSelectCan();
void SelectCan(std::string canid); void SelectCan(std::string canid);
void PlayRridLoading(wxString canid); void PlayRridLoading(wxString canid);
@ -675,6 +680,7 @@ public:
void paintEvent(wxPaintEvent& evt); void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc); void render(wxDC& dc);
void doRender(wxDC& dc); void doRender(wxDC& dc);
void RenderExtraRoad(wxDC& dc, wxSize size);
wxColour GetTagColr(wxString canid); wxColour GetTagColr(wxString canid);
std::string GetCurrentCan(); std::string GetCurrentCan();
@ -685,6 +691,7 @@ public:
int m_can_count = { 0 }; int m_can_count = { 0 };
AMSModel m_ams_model; AMSModel m_ams_model;
AMSPanelPos m_panel_pos;
std::string m_canlib_id; std::string m_canlib_id;
std::string m_road_canid; std::string m_road_canid;
@ -692,12 +699,13 @@ public:
std::map<std::string, AMSLib*> m_can_lib_list; std::map<std::string, AMSLib*> m_can_lib_list;
//std::map<std::string, AMSRoad*> m_can_road_list; //std::map<std::string, AMSRoad*> m_can_road_list;
AMSRoadUpPart* m_panel_road; AMSRoadUpPart* m_panel_road = { nullptr };
std::map<std::string, AMSrefresh*> m_can_refresh_list; std::map<std::string, AMSrefresh*> m_can_refresh_list;
AMSHumidity* m_humidity; AMSHumidity* m_humidity;
AMSinfo m_info; AMSinfo m_info;
wxBoxSizer * sizer_can = {nullptr}; wxBoxSizer * sizer_can = {nullptr};
wxGridSizer* sizer_can_extra = { nullptr };
wxBoxSizer * sizer_humidity = { nullptr }; wxBoxSizer * sizer_humidity = { nullptr };
wxBoxSizer * sizer_item = { nullptr }; wxBoxSizer * sizer_item = { nullptr };
wxBoxSizer * sizer_can_middle = {nullptr}; wxBoxSizer * sizer_can_middle = {nullptr};
@ -720,6 +728,7 @@ wxDECLARE_EVENT(EVT_AMS_GUIDE_WIKI, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_RETRY, wxCommandEvent); wxDECLARE_EVENT(EVT_AMS_RETRY, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_SHOW_HUMIDITY_TIPS, wxCommandEvent); wxDECLARE_EVENT(EVT_AMS_SHOW_HUMIDITY_TIPS, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_UNSELETED_VAMS, wxCommandEvent); wxDECLARE_EVENT(EVT_AMS_UNSELETED_VAMS, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_UNSELETED_AMS, wxCommandEvent);
wxDECLARE_EVENT(EVT_CLEAR_SPEED_CONTROL, wxCommandEvent); wxDECLARE_EVENT(EVT_CLEAR_SPEED_CONTROL, wxCommandEvent);
wxDECLARE_EVENT(EVT_VAMS_ON_FILAMENT_EDIT, wxCommandEvent); wxDECLARE_EVENT(EVT_VAMS_ON_FILAMENT_EDIT, wxCommandEvent);