diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 82c0f9c4c8..10a931684a 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -798,19 +798,19 @@ void MachineObject::_parse_tray_now(std::string tray_now) try { int tray_now_int = atoi(tray_now.c_str()); - if (tray_now_int == 255) { + if (tray_now_int == VIRTUAL_TRAY_MAIN_ID) { m_ams_id = "0"; m_tray_id = "0"; m_extder_data.extders[MAIN_NOZZLE_ID].snow.ams_id = ""; m_extder_data.extders[MAIN_NOZZLE_ID].snow.slot_id = ""; - if (m_tray_now == std::to_string(255)) { - m_extder_data.extders[MAIN_NOZZLE_ID].snow.ams_id = std::to_string(255); + if (m_tray_now == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) { + m_extder_data.extders[MAIN_NOZZLE_ID].snow.ams_id = std::to_string(VIRTUAL_TRAY_MAIN_ID); m_extder_data.extders[MAIN_NOZZLE_ID].snow.slot_id = "0"; } } - else if (tray_now_int == 254) { - m_extder_data.extders[MAIN_NOZZLE_ID].snow.ams_id = std::to_string(254); + else if (tray_now_int == VIRTUAL_TRAY_DEPUTY_ID) { + m_extder_data.extders[MAIN_NOZZLE_ID].snow.ams_id = std::to_string(VIRTUAL_TRAY_MAIN_ID); m_extder_data.extders[MAIN_NOZZLE_ID].snow.slot_id = "0"; } else { @@ -3669,7 +3669,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) } /*the param is invalid in np for Yeshu*/ - if (!check_enable_np(jj) && jj.contains("hw_switch_state")) { + if (jj.contains("hw_switch_state")) { hw_switch_state = jj["hw_switch_state"].get(); m_extder_data.extders[MAIN_NOZZLE_ID].ext_has_filament = hw_switch_state; } diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index b1c11dc927..e29939569a 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -1130,6 +1130,7 @@ AMSRoadShowMode AMSControl::findFirstMode(AMSPanelPos pos) { } } if (item->second->get_ams_model() == AMSModel::EXT_AMS && item->second->get_ext_type() == AMSModelOriginType::LITE_EXT) return AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE; + if (item->second->get_ams_model() == AMSModel::N3S_AMS) return AMSRoadShowMode::AMS_ROAD_MODE_SINGLE_N3S; return AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; } } @@ -1400,6 +1401,10 @@ void AMSControl::SwitchAms(std::string ams_id) } else { AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; + + if (item->get_ams_model() == AMSModel::N3S_AMS) + mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE_N3S; + for (auto it : pair_id) { if (it.first == ams_id || it.second == ams_id) { mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE; @@ -1521,9 +1526,10 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy } //Set path length in different case - if (ams->get_can_count() == GENERIC_AMS_SLOT_NUM){ + model = ams->get_ams_model(); + + if (ams->get_can_count() == GENERIC_AMS_SLOT_NUM) { length = left ? 129 : 145; - model = ams->get_ams_model(); } else if (ams->get_can_count() == 1) { for (auto it : pair_id){ if (it.first == ams_id){ @@ -1537,8 +1543,12 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy break; } } - model = ams->get_ams_model(); + + if (!in_pair && model == N3S_AMS) { + length = left ? 129 : 232; + } } + if (model == AMSModel::AMS_LITE){ length = left ? 145 : 45; } diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp index 51b42e3ab2..70a6881b6a 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.cpp +++ b/src/slic3r/GUI/Widgets/AMSItem.cpp @@ -2328,6 +2328,10 @@ void AMSRoadDownPart::doRender(wxDC& dc) dc.DrawLine(left_nozzle_pos.x - FromDIP(218), 0, left_nozzle_pos.x - FromDIP(218), (size.y / 2)); break; case AMSRoadShowMode::AMS_ROAD_MODE_SINGLE: + dc.DrawLine(left_nozzle_pos.x - FromDIP(192), (size.y / 2), left_nozzle_pos.x, (size.y / 2)); + dc.DrawLine(left_nozzle_pos.x - FromDIP(192), 0, left_nozzle_pos.x - FromDIP(192), (size.y / 2)); + break; + case AMSRoadShowMode::AMS_ROAD_MODE_SINGLE_N3S: dc.DrawLine(left_nozzle_pos.x - FromDIP((129)), (size.y / 2), left_nozzle_pos.x, (size.y / 2)); dc.DrawLine(left_nozzle_pos.x - FromDIP((129)), 0, left_nozzle_pos.x - FromDIP((129)), (size.y / 2)); break; @@ -2353,6 +2357,10 @@ void AMSRoadDownPart::doRender(wxDC& dc) dc.DrawLine(right_nozzle_pos.x, (size.y / 2), right_nozzle_pos.x + FromDIP(68), (size.y / 2)); dc.DrawLine(right_nozzle_pos.x + FromDIP(68), 0, right_nozzle_pos.x + FromDIP(68), (size.y / 2)); break; + case AMSRoadShowMode::AMS_ROAD_MODE_SINGLE_N3S: + dc.DrawLine(left_nozzle_pos.x - FromDIP((129)), (size.y / 2), left_nozzle_pos.x, (size.y / 2)); + dc.DrawLine(left_nozzle_pos.x - FromDIP((129)), 0, left_nozzle_pos.x - FromDIP((129)), (size.y / 2)); + break; case AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE: dc.DrawLine(left_nozzle_pos.x, (size.y / 2), left_nozzle_pos.x + FromDIP(145), (size.y / 2)); dc.DrawLine(left_nozzle_pos.x + FromDIP(145), 0, left_nozzle_pos.x + FromDIP(145), (size.y / 2)); diff --git a/src/slic3r/GUI/Widgets/AMSItem.hpp b/src/slic3r/GUI/Widgets/AMSItem.hpp index 233e9b4768..0383a6e862 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.hpp +++ b/src/slic3r/GUI/Widgets/AMSItem.hpp @@ -72,6 +72,7 @@ enum class AMSRoadShowMode : int { AMS_ROAD_MODE_FOUR, AMS_ROAD_MODE_DOUBLE, AMS_ROAD_MODE_SINGLE, + AMS_ROAD_MODE_SINGLE_N3S, AMS_ROAD_MODE_AMS_LITE, AMS_ROAD_MODE_NONE };