Fix AMS HT filament road rendering

(cherry picked from commit bambulab/BambuStudio@afbf3cf197)

---------

Co-authored-by: tao wang <tao.wang@bambulab.com>
This commit is contained in:
Noisyfox
2025-05-23 10:11:26 +08:00
parent 625a946e25
commit 56b6e0742e
2 changed files with 28 additions and 8 deletions

View File

@@ -713,24 +713,44 @@ bool MachineObject::is_extrusion_cali_finished()
void MachineObject::_parse_tray_now(std::string tray_now)
{
m_tray_now = tray_now;
if (tray_now.empty()) {
return;
} else {
try {
int tray_now_int = atoi(tray_now.c_str());
if (tray_now_int >= 0 && tray_now_int < 16) {
m_ams_id = std::to_string(tray_now_int >> 2);
m_tray_id = std::to_string(tray_now_int & 0x3);
}
else if (tray_now_int == 255) {
if (tray_now_int == 255) {
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);
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);
m_extder_data.extders[MAIN_NOZZLE_ID].snow.slot_id = "0";
}
else {
if (tray_now_int >= 0x80 && tray_now_int <= 0x87) {
m_ams_id = std::to_string(tray_now_int);
} else {
m_ams_id = std::to_string(tray_now_int >> 2);
}
m_tray_id = std::to_string(tray_now_int & 0x3);
m_extder_data.extders[MAIN_NOZZLE_ID].snow.ams_id = m_ams_id;
m_extder_data.extders[MAIN_NOZZLE_ID].snow.slot_id = m_tray_id;
}
}
catch(...) {
}
}
m_tray_now = tray_now;
}
Ams *MachineObject::get_curr_Ams()

View File

@@ -1608,7 +1608,7 @@ void AMSRoad::OnPassRoad(std::vector<AMSPassRoadMode> prord_list)
}
// left end
if (m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_END) {
if (m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_END || m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_END_ONLY) {
for (auto i = 0; i < prord_list.size(); i++) {
std::vector<AMSPassRoadMode>::iterator iter = std::find(end_types.begin(), end_types.end(), prord_list[i]);
if (iter != end_types.end()) m_pass_rode_mode.push_back(prord_list[i]);
@@ -2219,7 +2219,7 @@ void AmsItem::Update(AMSinfo info)
}
}
if (m_ams_model == AMSModel::GENERIC_AMS) {
if (m_ams_model != AMSModel::AMS_LITE) {
for (auto i = 0; i < m_can_road_list.size(); i++) {
AMSRoad* road = m_can_road_list[std::to_string(i)];
if (road != nullptr) {