From ba99ca275af0506a3c6ce719c093dffd14942c93 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Thu, 27 Jun 2024 16:35:07 +0800 Subject: [PATCH] ENH: 3mf: limit the identify_id's hight bits to 0 JIRA: no jira Change-Id: Id57be2e53c411a1397e26dda3cb3b31721cb0df2 (cherry picked from commit e5341c39f2cfe8a4aabd366f4a55115a42b9cc2c) --- src/libslic3r/Format/bbs_3mf.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 5c240cced..0309ee30d 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -7324,8 +7324,13 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } else if (obj){ inst = obj->instances[inst_id]; - if (use_loaded_id && (inst->loaded_id > 0)) + if (use_loaded_id && (inst->loaded_id > 0)) { identify_id = inst->loaded_id; + if (identify_id & 0xFF000000) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format(", identify_id %1%, too big, limit the high bits to 0\n") % identify_id; + identify_id = identify_id & 0x00FFFFFF; + } + } else identify_id = inst->id().id; } @@ -7514,8 +7519,13 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) continue; } inst = obj->instances[inst_id]; - if (m_use_loaded_id && (inst->loaded_id > 0)) + if (m_use_loaded_id && (inst->loaded_id > 0)) { identify_id = inst->loaded_id; + if (identify_id & 0xFF000000) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format(", identify_id %1%, too big, limit the high bits to 0\n") % identify_id; + identify_id = identify_id & 0x00FFFFFF; + } + } else identify_id = inst->id().id; bool skipped = std::find(plate_data->skipped_objects.begin(), plate_data->skipped_objects.end(), identify_id) !=