ENH: Add limited filament maps to slice info

jira: none
Change-Id: I7b08943ba5f4e7fa9be18ba3f64caee182888d45
(cherry picked from commit 85ebb469959499d5c2d7fe349e0d8e92045c9fab)
This commit is contained in:
zhimin.zeng 2024-09-10 16:40:49 +08:00 committed by Noisyfox
parent 71b4962b83
commit 444d7fa81a
5 changed files with 31 additions and 1 deletions

View file

@ -699,8 +699,11 @@ GCodeProcessor::GCodeProcessor()
bool GCodeProcessor::check_multi_extruder_gcode_valid(const std::vector<Polygons> &unprintable_areas, const std::vector<int> &filament_map)
{
m_result.limit_filament_maps.clear();
m_result.gcode_check_result.reset();
m_result.limit_filament_maps.resize(filament_map.size(), 0);
auto to_2d = [](const Vec3d &pos) -> Point {
Point ps(scale_(pos.x()), scale_(pos.y()));
return ps;
@ -735,6 +738,15 @@ bool GCodeProcessor::check_multi_extruder_gcode_valid(const std::vector<Polygons
}
}
for (int i = 0; i < unprintable_areas.size(); ++i) {
for (const Polygon &poly : unprintable_areas[i]) {
if (!poly.bounding_box().overlap(bbox))
continue;
m_result.limit_filament_maps[iter->first] |= (1 << i);
}
}
/*
// Accurate calculation is not efficient
for (const Polygon& poly : unprintable_areas[extruder_id]) {