FIX: Ams road display

jira: [Ams road display]

Change-Id: I1669bb588c969fe1cee7149d0d900cda3758deb3
This commit is contained in:
hang.xu 2024-07-22 16:54:48 +08:00 committed by lane.wei
parent f722334f3b
commit 3e8fe435e3
4 changed files with 180 additions and 143 deletions

View File

@ -2935,7 +2935,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_Humidity_tip_popup.Position(popup_pos, wxSize(0, 0));
if (m_ams_info.size() > 0) {
for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_show_ams) {
if (m_ams_info[i].ams_id == m_current_show_ams_left || m_ams_info[i].ams_id == m_current_show_ams_right) {
m_Humidity_tip_popup.set_humidity_level(m_ams_info[i].ams_humidity);
}
}
@ -2968,8 +2968,22 @@ AMSControl::~AMSControl() {
m_simplebook_ams_right->DeleteAllPages();*/
}
std::string AMSControl::GetCurentAms() { return m_current_ams; }
std::string AMSControl::GetCurentShowAms() { return m_current_show_ams; }
std::string AMSControl::GetCurentAms(bool right_panel) {
if (right_panel){
return m_current_ams_right;
}
else{
return m_current_ams_left;
}
}
std::string AMSControl::GetCurentShowAms(bool right_panel) {
if (right_panel){
return m_current_show_ams_right;
}
else{
return m_current_show_ams_left;
}
}
std::string AMSControl::GetCurrentCan(std::string amsid)
{
@ -2984,6 +2998,24 @@ std::string AMSControl::GetCurrentCan(std::string amsid)
return current_can;
}
bool AMSControl::IsAmsInRightPanel(std::string ams_id) {
if (m_nozzle_num == 2){
if (m_ams_item_list[ams_id]->m_info.nozzle_id == 0){
return true;
}
else{
return false;
}
}
else{
for (auto id : m_item_ids[1]){
if (id == ams_id){
return true;
}
}
return false;
}
}
wxColour AMSControl::GetCanColour(std::string amsid, std::string canid)
{
@ -3429,6 +3461,9 @@ void AMSControl::CreateAmsNew()
m_down_road->UpdateRight(2, right_init_mode);
}
m_extruder->update(2);
auto it = m_ams_item_list.begin();
m_down_road->UpdatePassRoad(0, true, -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);
//Refresh();
//Freeze();
Thaw();
@ -3560,6 +3595,12 @@ void AMSControl::CreateAmsSingleNozzle()
m_down_road->UpdateRight(1, right_init_mode);
}
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()){
m_down_road->UpdatePassRoad("0", false, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
//Refresh();
Thaw();
}
@ -3619,7 +3660,7 @@ void AMSControl::show_vams(bool show)
//m_panel_virtual->Show(show);
//m_vams_sizer->Show(show);
//m_vams_extra_road->Show(show);
m_extruder->has_ams(show);
/*m_extruder->has_ams(show);
show_vams_kn_value(show);
Layout();
@ -3629,7 +3670,7 @@ void AMSControl::show_vams(bool show)
event.SetEventObject(m_vams_lib);
wxPostEvent(m_vams_lib, event);
}
}
}*/
}
void AMSControl::show_vams_kn_value(bool show)
@ -3710,8 +3751,8 @@ void AMSControl::ReadExtInfo(MachineObject* obj) {
void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ext_info, std::string dev_id, bool is_reset, bool test)
{
if (!test){
std::string curr_ams_id = GetCurentAms();
std::string curr_can_id = GetCurrentCan(curr_ams_id);
/*std::string curr_ams_id = GetCurentAms();
std::string curr_can_id = GetCurrentCan(curr_ams_id);*/
int nozzle_num = ext_info.size();
@ -3784,11 +3825,11 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
}
}
if (m_current_show_ams.empty() && !is_reset) {
/*if (m_current_show_ams.empty() && !is_reset) {
if (ext_info.size() > 0) {
SwitchAms(ext_info[0].ams_id);
}
}
}*/
//m_simplebook_ams_left->SetSelection(m_simplebook_ams_left->m_first);
}
@ -3909,11 +3950,11 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
}
}
if (m_current_show_ams.empty() && !is_reset) {
/*if (m_current_show_ams.empty() && !is_reset) {
if (ams_info.size() > 0) {
SwitchAms(ams_info[0].ams_id);
}
}
}*/
}
@ -4226,23 +4267,25 @@ void AMSControl::AddAmsPreview(std::vector<AMSinfo>single_info) {
void AMSControl::SwitchAms(std::string ams_id)
{
if(ams_id == m_current_show_ams){return;}
if(ams_id == m_current_show_ams_left || ams_id == m_current_show_ams_right){return;}
if (m_current_show_ams != ams_id) {
m_current_show_ams = ams_id;
m_extruder->OnAmsLoading(false);
}
/*if (ams_id != std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
if (m_current_show_ams != ams_id) {
m_current_show_ams = ams_id;
bool is_in_right = IsAmsInRightPanel(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);
}
}*/
}
else{
m_current_show_ams_left = ams_id;
m_extruder->OnAmsLoading(false);
if (m_nozzle_num > 1) m_extruder->OnAmsLoading(false, 1);
}
for (auto prv_it : m_ams_preview_list) {
AMSPreview* prv = prv_it.second;
if (prv->m_amsinfo.ams_id == m_current_show_ams) {
if (prv->m_amsinfo.ams_id == m_current_show_ams_left || prv->m_amsinfo.ams_id == m_current_show_ams_right) {
prv->OnSelected();
m_current_select = ams_id;
@ -4258,16 +4301,12 @@ void AMSControl::SwitchAms(std::string ams_id)
}
}
}
//if (!ready_selected) {
// m_current_ams = std::to_string(VIRTUAL_TRAY_MAIN_ID);
// //m_vams_lib->OnSelected();
//}
//else {
// m_current_ams = ams_id;
// //m_vams_lib->UnSelected();
//}
m_current_ams = ams_id;
if (is_in_right){
m_current_ams_right = ams_id;
}
else{
m_current_ams_left = ams_id;
}
} else {
prv->UnSelected();
@ -4288,130 +4327,106 @@ void AMSControl::SwitchAms(std::string ams_id)
for (auto ams_item : m_ams_item_list) {
AmsItem* item = ams_item.second;
if (item->m_info.ams_id == ams_id) {
/*if (m_ams_model == AMSModel::GENERIC_AMS) {
if (item->m_info.nozzle_id == 1)
{
m_simplebook_ams_left->SetSelection(item->m_selection);
}
else if (item->m_info.nozzle_id == 0)
{
m_simplebook_ams_right->SetSelection(item->m_selection);
}
}*/
if (m_nozzle_num == 2) {
if (item->m_info.nozzle_id == 1)
{
if (item->m_info.nozzle_id == 1){
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);
}
else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
for (auto it : pair_id)
{
if (it.first == ams_id || it.second == ams_id)
{
for (auto it : pair_id){
if (it.first == ams_id || it.second == ams_id){
mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE;
break;
}
}
m_down_road->UpdateLeft(m_nozzle_num, mode);
m_down_road->UpdatePassRoad(item->m_info.current_can_id, true, -1, item->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
}
else if (item->m_info.nozzle_id == 0)
{
else if (item->m_info.nozzle_id == 0){
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);
}
else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
for (auto it : pair_id)
{
if (it.first == ams_id || it.second == ams_id)
{
for (auto it : pair_id){
if (it.first == ams_id || it.second == ams_id){
mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE;
break;
}
}
m_down_road->UpdateRight(m_nozzle_num, mode);
m_down_road->UpdatePassRoad(item->m_info.current_can_id, false, -1, item->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
}
}
else if (m_nozzle_num == 1) {
for (auto id : m_item_ids[0])
{
if (id == item->m_info.ams_id)
{
for (auto id : m_item_ids[0]){
if (id == item->m_info.ams_id){
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);
}
else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
for (auto it : pair_id)
{
if (it.first == ams_id || it.second == ams_id)
{
for (auto it : pair_id){
if (it.first == ams_id || it.second == ams_id){
mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE;
break;
}
}
m_down_road->UpdateLeft(m_nozzle_num, mode);
m_down_road->UpdatePassRoad(item->m_info.current_can_id, true, -1, item->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
}
}
for (auto id : m_item_ids[1])
{
if (id == item->m_info.ams_id)
{
if (id == item->m_info.ams_id){
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);
}
else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
for (auto it : pair_id)
{
if (it.first == ams_id || it.second == ams_id)
{
if (it.first == ams_id || it.second == ams_id){
mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE;
break;
}
}
m_down_road->UpdateRight(m_nozzle_num, mode);
m_down_road->UpdatePassRoad(item->m_info.current_can_id, false, -1, item->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
}
}
}
}
}
//update extruder
for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_ams) {
if (m_ams_info[i].ams_id == ams_id) {
switch (m_ams_info[i].current_step) {
case AMSPassRoadSTEP::AMS_ROAD_STEP_NONE: m_extruder->TurnOff(); break;
case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1: m_extruder->TurnOff(); break;
case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2: m_extruder->TurnOn(GetCanColour(m_current_ams, m_ams_info[i].current_can_id)); break;
case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2: 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(m_current_ams, 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);
}
}
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);
}
}
}
@ -4660,7 +4675,6 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
auto amsit = m_ams_item_list.find(ams_id);
bool notfound = false;
if (amsit != m_ams_item_list.end()) {
ams = amsit->second;
}
@ -4684,15 +4698,9 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
m_last_tray_id = canid;
auto model = AMSModel::EXTRA_AMS;
bool left = false;
for (auto id : m_item_ids[0]){
if (id == ams_id){
left = true;
break;
}
}
int length = -1;
bool left = !IsAmsInRightPanel(ams_id);
int length = -1;
if (ams->m_info.cans.size() == 4){
length = left ? 135 : 149;
@ -4719,26 +4727,24 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
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, true, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_down_road->UpdatePassRoad(canid, false, -1, ams->m_info, 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);
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);
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 == ams_id) {
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);
@ -4748,8 +4754,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
else if(model == AMSModel::NO_AMS || model == AMSModel::SINGLE_AMS) {
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
//cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_down_road->UpdatePassRoad(canid, true, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_down_road->UpdatePassRoad(canid, false, -1, ams->m_info, 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);
}
@ -4763,7 +4768,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
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 == ams_id) {
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));
}
}
@ -4819,13 +4824,19 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
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) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_LOAD; }
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; }
}
post_event(SimpleEvent(EVT_AMS_LOAD));
}
@ -4833,7 +4844,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) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; }
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; }
}
post_event(SimpleEvent(EVT_AMS_EXTRUSION_CALI));
}
@ -4842,7 +4853,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) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_UNLOAD; }
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; }
}
post_event(SimpleEvent(EVT_AMS_UNLOAD));
}
@ -4855,7 +4866,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) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; }
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; }
}
post_event(SimpleEvent(EVT_AMS_SETTINGS));
}

View File

@ -26,9 +26,12 @@ public:
void on_retry();
protected:
std::string m_current_ams;
std::string m_current_slot;
std::string m_current_show_ams;
std::string m_current_ams_left;
std::string m_current_ams_right;
std::string m_current_slot_left;
std::string m_current_slot_right;
std::string m_current_show_ams_left;
std::string m_current_show_ams_right;
std::map<std::string, int> m_ams_selection;
std::map<std::string, AMSPreview*> m_ams_preview_list;
@ -127,9 +130,10 @@ protected:
std::string m_last_tray_id = "-1";
public:
std::string GetCurentAms();
std::string GetCurentShowAms();
std::string GetCurentAms(bool right_panel = true);
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};

View File

@ -600,14 +600,13 @@ void AMSextruder::OnVamsLoading(bool load, wxColour col)
void AMSextruder::OnAmsLoading(bool load, int nozzle_id, wxColour col /*= AMS_CONTROL_GRAY500*/)
{
m_ams_loading = load;
if (load)m_current_colur = col;
if (nozzle_id == 0){
m_left_extruder->OnAmsLoading(load, col);
m_right_extruder->OnAmsLoading(false, col);
if (load) m_current_colur = col;
}
else{
m_right_extruder->OnAmsLoading(load, col);
m_left_extruder->OnAmsLoading(false, col);
if (load) m_current_colur_deputy = col;
}
Refresh();
}
@ -631,6 +630,7 @@ void AMSextruder::render(wxDC& dc)
wxGCDC dc2(memdc);
//doRender(dc2);
}
m_left_extruder->update(true);
if (m_nozzle_num >= 2) {
m_right_extruder->update(true);
}
@ -1301,9 +1301,10 @@ void AMSLib::render_generic_lib(wxDC &dc)
// selected
if (m_selected) {
dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID));
dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 3, wxSOLID));
//dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID));
if (tmp_lib_colour.Alpha() == 0) {
dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(), tmp_lib_colour.Blue(), 128), 2, wxSOLID));
dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(), tmp_lib_colour.Blue(), 128), 3, wxSOLID));
}
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
if (m_radius == 0) {
@ -1500,9 +1501,10 @@ void AMSLib::render_generic_lib(wxDC &dc)
#endif
if (m_selected) {
dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID));
dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 3, wxSOLID));
//dc.SetPen(wxPen(tmp_lib_colour, 3, wxSOLID));
if (tmp_lib_colour.Alpha() == 0) {
dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(), tmp_lib_colour.Blue(), 128), 2, wxSOLID));
dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(), tmp_lib_colour.Blue(), 128), 3, wxSOLID));
}
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
if (m_radius == 0) {
@ -1517,7 +1519,7 @@ void AMSLib::render_generic_lib(wxDC &dc)
}
if (!m_selected && m_hover) {
dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 2, wxSOLID));
dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 3, wxSOLID));
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
if (m_radius == 0) {
dc.DrawRectangle(0, 0, size.x, size.y);
@ -2225,42 +2227,60 @@ void AMSRoadDownPart::doRender(wxDC& dc)
dc.DrawLine(left_nozzle_pos.x, left_nozzle_pos.y, FromDIP(left_nozzle_pos.x + 30), left_nozzle_pos.y);
}*/
//dc.SetBrush(wxBrush(*wxBLUE));
if (m_pass_road_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_pass_road_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3){
if (m_pass_road_left_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_pass_road_left_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3){
dc.SetPen(wxPen(m_amsinfo.cans[m_canindex].material_colour, 4, wxSOLID));
if (m_left_road_length > 0){
dc.DrawLine((FromDIP(left_nozzle_pos.x - m_left_road_length)), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2));
dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y));
dc.DrawLine(FromDIP(left_nozzle_pos.x - m_left_road_length), FromDIP(0), FromDIP(left_nozzle_pos.x - m_left_road_length), FromDIP(size.y / 2));
}
else if (m_right_road_length > 0){
dc.DrawLine((FromDIP(left_nozzle_pos.x)), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x + m_right_road_length), FromDIP(size.y / 2));
dc.DrawLine(FromDIP(left_nozzle_pos.x + m_right_road_length), FromDIP(0), FromDIP(left_nozzle_pos.x + m_right_road_length), FromDIP(size.y / 2));
if (m_nozzle_num == 1){
dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(right_nozzle_pos.x), FromDIP(size.y / 2));
dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y));
}
else{
dc.DrawLine(FromDIP(right_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(right_nozzle_pos.x), FromDIP(size.y));
}
if (m_pass_road_right_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_pass_road_right_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3) {
dc.SetPen(wxPen(m_amsinfo.cans[m_canindex].material_colour, 4, wxSOLID));
if (m_right_road_length > 0) {
int x = left_nozzle_pos.x;
int len = m_right_road_length;
if (m_nozzle_num == 2){
x = right_nozzle_pos.x;
len = len - 14;
}
dc.DrawLine((FromDIP(x)), FromDIP(size.y / 2), FromDIP(x + len), FromDIP(size.y / 2));
dc.DrawLine(FromDIP(x + len), FromDIP(0), FromDIP(left_nozzle_pos.x + len), FromDIP(size.y / 2));
dc.DrawLine(FromDIP(x), FromDIP(size.y / 2), FromDIP(x), FromDIP(size.y));
}
}
}
void AMSRoadDownPart::UpdatePassRoad(string can_id, bool left, int len, AMSinfo info, AMSPassRoadSTEP step) {
m_pass_road_step = step;
if (len == -1){
m_left_road_length = -1;
m_right_road_length = -1;
return;
if (m_nozzle_num >= 2){
if (left) {
m_left_road_length = len;
m_pass_road_left_step = step;
}
else {
m_right_road_length = len;
m_pass_road_right_step = step;
}
}
else{
if (left) {
m_left_road_length = len;
m_right_road_length = -1;
m_pass_road_left_step = step;
}
else {
m_right_road_length = len;
m_left_road_length = -1;
m_pass_road_right_step = step;
}
}
m_canindex = atoi(can_id.c_str());
if (m_canindex == -1){
return;
}
m_amsinfo = info;
m_left_road_length = left ? len : -1;
m_right_road_length = left ? -1 : len;
m_pass_road_step = step;
}
@ -2851,9 +2871,9 @@ void AmsItem::Update(AMSinfo info)
}
i = 0;
for (auto lib_it : m_can_lib_list) {
AMSLib* lib = lib_it.second;
if (i < m_can_count) {
for (int i = 0; i < m_can_lib_list.size(); i++) {
AMSLib* lib = m_can_lib_list[std::to_string(i)];
if (i < m_can_count && lib != nullptr) {
lib->Update(info.cans[i], info.ams_id);
lib->Show();
}

View File

@ -173,7 +173,7 @@ public:
std::vector<Caninfo> cans;
int nozzle_id = 0;
std::string current_can_id;
AMSPassRoadSTEP current_step;
AMSPassRoadSTEP current_step = AMSPassRoadSTEP::AMS_ROAD_STEP_NONE;
AMSAction current_action;
int curreent_filamentstep;
int ams_humidity = 0;
@ -313,6 +313,7 @@ public:
bool m_vams_loading{false};
bool m_ams_loading{false};
wxColour m_current_colur;
wxColour m_current_colur_deputy;
int m_nozzle_num{ 1 };
wxBoxSizer * m_bitmap_sizer{nullptr};
@ -543,7 +544,8 @@ public:
double m_radius = { 4 };
wxColour m_road_def_color;
AMSPassRoadType m_pass_road_type = { AMSPassRoadType::AMS_ROAD_TYPE_NONE };
AMSPassRoadSTEP m_pass_road_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 };
wxColour m_road_color;
//void Update(AMSRoadDownPartMode nozzle, AMSRoadShowMode left_mode, AMSRoadShowMode right_mode, int left_len, int right_len);