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;
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; }
}
if (obj->is_enable_np && obj->amsList.size() > 0){
ams_mode = AMSModel(obj->amsList[0]->type);
}
if (!obj
|| !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);
m_ams_control->show_auto_refill(false);
}
@ -2630,6 +2634,9 @@ void StatusPanel::update_ams(MachineObject *obj)
AMSinfo info;
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_mode == AMSModel::AMS_LITE) {
info.ams_type = AMSModel::AMS_LITE;
}
ams_info.push_back(info);
}
}
@ -3865,6 +3872,8 @@ void StatusPanel::on_ams_selected(wxCommandEvent &event)
{
if (obj) {
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) {
//update_ams_control_state(curr_ams_id, true);
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) {
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";
}
else {

View File

@ -2412,6 +2412,7 @@ Description:AMSControl
// WX_DEFINE_OBJARRAY(AmsItemsHash);
#define AMS_CANS_SIZE wxSize(FromDIP(284), -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)
: wxSimplebook(parent, wxID_ANY, pos, size)
, 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_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
//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_left->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_right->SetMinSize(wxSize(FromDIP(120), -1));
m_sizer_option_left->SetMinSize(wxSize(FromDIP(140), -1));
m_sizer_option_right->SetMinSize(wxSize(FromDIP(140), -1));
StateColor btn_bg_green(std::pair<wxColour, int>(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled),
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_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_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_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->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*/
@ -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(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_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, 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, 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(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_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_option, 0, wxEXPAND, 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();
});
Bind(EVT_AMS_ON_SELECTED, &AMSControl::AmsSelectedSwitch, this);
/* m_button_guide->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) {
@ -2968,13 +2970,8 @@ AMSControl::~AMSControl() {
m_simplebook_ams_right->DeleteAllPages();*/
}
std::string AMSControl::GetCurentAms(bool right_panel) {
if (right_panel){
return m_current_ams_right;
}
else{
return m_current_ams_left;
}
std::string AMSControl::GetCurentAms() {
return m_current_ams;
}
std::string AMSControl::GetCurentShowAms(bool 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 col = *wxWHITE;
@ -3044,7 +3072,7 @@ void AMSControl::SetActionState(bool button_status[])
void AMSControl::EnterNoneAMSMode()
{
//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_simplebook_ams_left->SetSelection(0);
@ -3058,7 +3086,7 @@ void AMSControl::EnterNoneAMSMode()
m_amswin->Layout();
m_amswin->Fit();
Layout();
m_is_none_ams_mode = AMSModel::NO_AMS;
m_is_none_ams_mode = AMSModel::EXT_AMS;
}
void AMSControl::EnterGenericAMSMode()
@ -3091,7 +3119,7 @@ void AMSControl::EnterGenericAMSMode()
void AMSControl::EnterExtraAMSMode()
{
//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();
@ -3114,7 +3142,7 @@ void AMSControl::EnterExtraAMSMode()
m_amswin->Fit();
Layout();
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_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)));
m_button_auto_refill->SetMinSize(wxSize(-1, FromDIP(24)));
m_button_ams_setting->SetMinSize(wxSize(FromDIP(25), FromDIP(24)));
m_button_guide->SetMinSize(wxSize(-1, FromDIP(24)));
m_button_retry->SetMinSize(wxSize(-1, FromDIP(24)));
m_vams_lib->msw_rescale();
if (m_button_extruder_feed) m_button_extruder_feed->SetMinSize(wxSize(-1, FromDIP(24)));
if (m_button_extruder_back) m_button_extruder_back->SetMinSize(wxSize(-1, FromDIP(24)));
if (m_button_auto_refill) m_button_auto_refill->SetMinSize(wxSize(-1, FromDIP(24)));
if (m_button_ams_setting) m_button_ams_setting->SetMinSize(wxSize(FromDIP(25), FromDIP(24)));
if (m_button_guide) m_button_guide->SetMinSize(wxSize(-1, FromDIP(24)));
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) {
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();
@ -3233,41 +3272,32 @@ void AMSControl::UpdateStepCtrl(bool is_extrusion)
void AMSControl::UpdatePassRoad(string ams_id, AMSPassRoadType type, AMSPassRoadSTEP step) {
bool left = false;
int len = -1;
for (auto id : m_item_ids[0])
{
if (ams_id == id)
{
for (auto id : m_item_ids[0]){
if (ams_id == id){
left = true;
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;
}
else
{
for (auto pairId : pair_id)
{
else{
for (auto pairId : pair_id){
if (pairId.first == ams_id) {
len = 72;
break;
}
if (pairId.second == ams_id)
{
if (pairId.second == ams_id){
len = 188;
break;
}
}
}
if (len == -1)
{
if (left)
{
if (len == -1){
if (left){
len = 213;
}
else
{
else{
len = 72;
}
}
@ -3349,7 +3379,6 @@ void AMSControl::CreateAmsNew()
Freeze();
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) {
first_left_page = false;
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) {
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) {
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);
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));
}
AddAmsPreview(ext_info, AMSModel::NO_AMS);
AddAmsPreview(ext_info, AMSModel::EXT_AMS);
AddAms(single_info_right);
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));
}
AddAmsPreview(ext_info, AMSModel::NO_AMS);
AddAmsPreview(ext_info, AMSModel::EXT_AMS);
AddAms(single_info_left);
single_info_left.clear();
@ -3448,6 +3477,7 @@ void AMSControl::CreateAmsNew()
m_simplebook_ams_left->Hide();
m_panel_items_left->Hide();
}
else if(m_nozzle_num > 1) {
m_sizer_items_left->Layout();
m_sizer_items_right->Layout();
@ -3462,8 +3492,24 @@ void AMSControl::CreateAmsNew()
}
m_extruder->update(2);
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_extruder->OnAmsLoading(false, 1);
m_down_road->UpdatePassRoad("0", false, -1, (++it)->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false);
//Refresh();
//Freeze();
Thaw();
@ -3482,13 +3528,13 @@ void AMSControl::CreateAmsSingleNozzle()
for (auto ams_info = m_ams_info.begin(); ams_info != m_ams_info.end(); ams_info++){
if (ams_info->cans.size() == 4){
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;
m_item_ids[0].push_back(ams_info->ams_id);
m_item_nums[0]++;
}
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;
m_item_ids[1].push_back(ams_info->ams_id);
m_item_nums[1]++;
@ -3526,6 +3572,11 @@ void AMSControl::CreateAmsSingleNozzle()
BOOST_LOG_TRIVIAL(trace) << "vt_slot empty!";
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]);
if (m_item_nums[0] <= m_item_nums[1]){
if (m_item_nums[0] == 0){
@ -3541,7 +3592,6 @@ void AMSControl::CreateAmsSingleNozzle()
m_item_ids[0].push_back(it.ams_id);
}
m_item_nums[0]++;
}
else{
if (m_item_nums[1] == 0){
@ -3562,7 +3612,7 @@ void AMSControl::CreateAmsSingleNozzle()
if (single_info.size() == 2){
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);
m_panel_items_left->Hide();
@ -3570,6 +3620,7 @@ void AMSControl::CreateAmsSingleNozzle()
/*m_simplebook_ams_right->Hide();
m_panel_items_right->Hide();*/
//m_simplebook_ams_left->Hide();
m_simplebook_ams_right->Hide();
m_panel_items_right->Hide();
m_simplebook_ams_left->SetSelection(0);
@ -3594,10 +3645,26 @@ void AMSControl::CreateAmsSingleNozzle()
m_down_road->UpdateLeft(1, left_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);
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);
}
@ -3810,7 +3877,7 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
if (ifo.ams_id == ams_id) {
cans->m_info = 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) {
cans->m_info = 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) {
cans->m_info = 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) {
cans->m_info = 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)
{
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->InsertPage(m_right_page_index, ams_item, wxEmptyString, true);
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)
{
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->InsertPage(m_left_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_left_page_index;
@ -4019,14 +4086,14 @@ void AMSControl::AddAms(AMSinfo info, bool 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->InsertPage(m_left_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_left_page_index;
m_left_page_index++;
}
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->InsertPage(m_right_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_right_page_index;
@ -4069,7 +4136,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
return;
}
else if (single_info.size() == 1){
mode = AMSModel::NO_AMS;
mode = AMSModel::EXT_AMS;
int w = 30;
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);
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));
book_panel->SetSize(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);
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));
book_panel->SetSize(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++;
}
}
else if (m_nozzle_num == 1)
{
if (!left)
{
else if (m_nozzle_num == 1){
if (!left){
wxPanel* book_panel = new wxPanel(m_simplebook_ams_right);
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));
book_panel->SetSize(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);
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));
book_panel->SetSize(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);
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
{
mode = AMSModel::SINGLE_AMS;
mode = AMSModel::N3S_AMS;
}
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->SetSize(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);
ext_item = new AmsItem(book_panel, single_info[1], mode);
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, AMSPanelPos::RIGHT_PANEL);
book_sizer->Add(ams_item);
book_sizer->Add(ext_item);
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->SetSize(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);
ext_item = new AmsItem(book_panel, single_info[1], mode);
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, AMSPanelPos::LEFT_PANEL);
book_sizer->Add(ams_item);
book_sizer->Add(ext_item);
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->SetSize(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);
ext_item = new AmsItem(book_panel, single_info[1], mode);
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, AMSPanelPos::RIGHT_PANEL);
book_sizer->Add(ams_item);
book_sizer->Add(ext_item);
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->SetSize(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);
ext_item = new AmsItem(book_panel, single_info[1], mode);
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, AMSPanelPos::LEFT_PANEL);
book_sizer->Add(ams_item);
book_sizer->Add(ext_item);
book_panel->SetSizer(book_sizer);
@ -4283,13 +4348,13 @@ void AMSControl::SwitchAms(std::string ams_id)
if (is_in_right){
if (m_current_show_ams_right != ams_id) {
m_current_show_ams_right = ams_id;
m_extruder->OnAmsLoading(false);
//m_extruder->OnAmsLoading(false);
}
}
else{
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){
m_current_ams_right = ams_id;
m_current_show_ams_right = ams_id;
}
else{
m_current_ams_left = ams_id;
m_current_show_ams_left = ams_id;
}
} else {
@ -4341,7 +4406,13 @@ void AMSControl::SwitchAms(std::string ams_id)
if (item->m_info.nozzle_id == 1){
m_simplebook_ams_left->SetSelection(item->m_selection);
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 {
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){
m_simplebook_ams_right->SetSelection(item->m_selection);
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 {
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){
m_simplebook_ams_left->SetSelection(item->m_selection);
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 {
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){
m_simplebook_ams_right->SetSelection(item->m_selection);
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 {
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;
}
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++) {
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 {
m_extruder->TurnOn(col);
if (item){
if (ams_now != GetCurentShowAms()) {
/*if (ams_now != GetCurentShowAms()) {
m_extruder->OnAmsLoading(false, item->m_info.nozzle_id, col);
}
else {
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);
}*/
}
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) {
m_extruder->TurnOff();
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_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);
int length = -1;
if (ams->m_info.cans.size() == 4){
length = left ? 135 : 149;
length = left ? 134 : 150;
model = ams->m_info.ams_type;
}
else if (ams->m_info.cans.size() == 1){
@ -4730,66 +4822,133 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
break;
}
}
model = AMSModel::SINGLE_AMS;
model = AMSModel::N3S_AMS;
}
if (model == AMSModel::EXTRA_AMS){
if (model == AMSModel::AMS_LITE){
length = left ? 150 : 50;
}
if (model == AMSModel::GENERIC_AMS || model == AMSModel::N3F_AMS || model == AMSModel::EXTRA_AMS) {
if (step == 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);
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));
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;
}
}
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) {
//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);
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) {
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);
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) {
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) {
if (ams_id_left == ams_id || ams_id_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));
}
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) {
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));
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)
{
m_button_extruder_back->Disable();
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));
}
@ -4857,7 +5004,7 @@ void AMSControl::on_filament_load(wxCommandEvent &event)
void AMSControl::on_extrusion_cali(wxCommandEvent &event)
{
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));
}
@ -4866,7 +5013,7 @@ void AMSControl::on_filament_unload(wxCommandEvent &event)
{
m_button_extruder_feed->Disable();
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));
}
@ -4879,7 +5026,7 @@ void AMSControl::auto_refill(wxCommandEvent& event)
void AMSControl::on_ams_setting_click(wxMouseEvent &event)
{
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));
}

View File

@ -26,8 +26,7 @@ public:
void on_retry();
protected:
std::string m_current_ams_left;
std::string m_current_ams_right;
std::string m_current_ams;
std::string m_current_slot_left;
std::string m_current_slot_right;
std::string m_current_show_ams_left;
@ -130,18 +129,19 @@ protected:
std::string m_last_tray_id = "-1";
public:
std::string GetCurentAms(bool right_panel = true);
std::string GetCurentAms();
std::string GetCurentShowAms(bool right_panel = true);
std::string GetCurrentCan(std::string amsid);
bool IsAmsInRightPanel(std::string ams_id);
wxColour GetCanColour(std::string amsid, std::string canid);
AMSModel m_ams_model{AMSModel::NO_AMS};
AMSModel m_ext_model{AMSModel::NO_AMS};
AMSModel m_is_none_ams_mode{AMSModel::NO_AMS};
AMSModel m_ams_model{AMSModel::EXT_AMS};
AMSModel m_ext_model{AMSModel::EXT_AMS};
AMSModel m_is_none_ams_mode{AMSModel::EXT_AMS};
bool m_single_nozzle_no_ams = { true };
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 EnterNoneAMSMode();

File diff suppressed because it is too large Load Diff

View File

@ -33,11 +33,16 @@
namespace Slic3r { namespace GUI {
enum AMSModel {
NO_AMS = 0, //ext
EXT_AMS = 0, //ext
GENERIC_AMS = 1,
EXTRA_AMS = 2, //ams-lite
AMS_LITE = 2, //ams-lite
N3F_AMS = 3,
SINGLE_AMS = 4 //n3s
N3S_AMS = 4 //n3s single_ams
};
enum AMSModelOriginType {
GENERIC_EXT,
LITE_EXT
};
enum ActionButton {
@ -57,16 +62,17 @@ enum class AMSRoadMode : int {
AMS_ROAD_MODE_VIRTUAL_TRAY
};
enum class AMSRoadDownPartLoad : int {
AMS_ROAD_MODE_LEFT,
AMS_ROAD_MODE_RIGHT,
AMS_ROAD_MODE_NONE
enum class AMSPanelPos : int {
SINGLE_PANEL,
LEFT_PANEL,
RIGHT_PANEL,
};
enum class AMSRoadShowMode : int {
AMS_ROAD_MODE_FOUR,
AMS_ROAD_MODE_DOUBLE,
AMS_ROAD_MODE_SINGLE,
AMS_ROAD_MODE_EXTRA_AMS,
AMS_ROAD_MODE_NONE
};
@ -141,6 +147,7 @@ enum FilamentStepType {
#define AMS_ITEM_SINGLE_SIZE wxSize(FromDIP(20), FromDIP(24))
#define AMS_ITEM_HUMIDITY_SIZE wxSize(FromDIP(120), FromDIP(27))
#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_ITEMS_PANEL_SIZE wxSize(FromDIP(264), FromDIP(27))
//#define AMS_CANS_SIZE wxSize(FromDIP(284), FromDIP(184))
@ -178,6 +185,7 @@ public:
int curreent_filamentstep;
int ams_humidity = 0;
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);
void ReadExtInfo(AmsTray tray);
@ -352,7 +360,7 @@ Description:AMSLib
class AMSLib : public wxWindow
{
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();
void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
public:
@ -366,6 +374,7 @@ public:
int m_can_index = 0;
bool transparent_changed = { false };
AMSModel m_ams_model;
AMSModelOriginType m_ext_type = { AMSModelOriginType::GENERIC_EXT };
void Update(Caninfo info, std::string ams_idx, bool refresh = true);
void UnableSelected() { m_unable_selected = true; };
@ -482,7 +491,7 @@ public:
public:
AMSinfo m_amsinfo;
Caninfo m_info;
//Caninfo m_info;
int m_load_slot_index = { 0 };
int m_load_ams_index = { 0 };
//AMSRoadMode m_rode_mode = { AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT };
@ -495,7 +504,7 @@ public:
double m_radius = { 4 };
wxColour m_road_def_color;
wxColour m_road_color;
void Update(AMSinfo amsinfo, Caninfo info);
void Update(AMSinfo amsinfo);
std::vector<ScalableBitmap> ams_humidity_img;
@ -514,6 +523,8 @@ public:
void paintEvent(wxPaintEvent& evt);
void render(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);
public:
AMSinfo m_amsinfo;
Caninfo m_info;
int m_canindex = { 0 };
int m_nozzle_num = { 1 };
AMSRoadShowMode m_single_ext_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 };
bool m_selected = { false };
bool m_single_nozzle_no_ams = { false };
int m_left_road_length = { -1 };
int m_right_road_length = { -1 };
int m_passroad_width = { 6 };
double m_radius = { 4 };
wxColour m_road_def_color;
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_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 UpdateLeft(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 };
AMSModel m_ams_model;
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void SetPassRoadColour(wxColour col);
void SetMode(AMSRoadDownPartLoad mode);
void SetPassRoadColour(bool left, wxColour col);
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 paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
void msw_rescale();
};
/*************************************************
@ -594,6 +596,7 @@ public:
void OnSelected();
void UnSelected();
virtual bool Enable(bool enable = true);
void msw_rescale();
AMSinfo m_amsinfo;
@ -606,10 +609,10 @@ protected:
bool m_selected = {false};
AMSModel m_ams_item_type = AMSModel::GENERIC_AMS;
ScalableBitmap* m_ts_bitmap_cube;
ScalableBitmap* m_four_slot_bitmap;
ScalableBitmap* m_single_slot_bitmap;
ScalableBitmap* m_ext_bitmap;
ScalableBitmap m_ts_bitmap_cube;
ScalableBitmap m_four_slot_bitmap;
ScalableBitmap m_single_slot_bitmap;
ScalableBitmap m_ext_bitmap;
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
@ -647,6 +650,7 @@ public:
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
void msw_rescale();
};
@ -657,12 +661,13 @@ class AmsItem : public wxWindow
{
public:
AmsItem();
AmsItem(wxWindow *parent, AMSinfo info, AMSModel model);
AmsItem(wxWindow *parent, AMSinfo info, AMSModel model, AMSPanelPos pos);
~AmsItem();
void Update(AMSinfo info);
void create(wxWindow *parent);
void AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* sizer);
void AddExtraCan(Caninfo caninfo, int canindex, int maxcan, wxGridSizer* sizer);
void SetDefSelectCan();
void SelectCan(std::string canid);
void PlayRridLoading(wxString canid);
@ -675,6 +680,7 @@ public:
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
void RenderExtraRoad(wxDC& dc, wxSize size);
wxColour GetTagColr(wxString canid);
std::string GetCurrentCan();
@ -685,6 +691,7 @@ public:
int m_can_count = { 0 };
AMSModel m_ams_model;
AMSPanelPos m_panel_pos;
std::string m_canlib_id;
std::string m_road_canid;
@ -692,12 +699,13 @@ public:
std::map<std::string, AMSLib*> m_can_lib_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;
AMSHumidity* m_humidity;
AMSinfo m_info;
wxBoxSizer * sizer_can = {nullptr};
wxGridSizer* sizer_can_extra = { nullptr };
wxBoxSizer * sizer_humidity = { nullptr };
wxBoxSizer * sizer_item = { 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_SHOW_HUMIDITY_TIPS, 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_VAMS_ON_FILAMENT_EDIT, wxCommandEvent);