ENH: crash on clipper while open fuzziy skin

Jira: 8412

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I27d06f07baf91dd0f5947ebc2925df59f219a0c6
(cherry picked from commit a0a40462acdc52f22a1e49104e40b303a59b2f32)
This commit is contained in:
qing.zhang 2024-10-11 15:22:58 +08:00 committed by Lane.Wei
parent 29753be317
commit 3614033fdc
1 changed files with 16 additions and 0 deletions

View File

@ -525,6 +525,22 @@ static ExtrusionEntityCollection traverse_loops(const PerimeterGenerator &perime
bool detect_overhang_degree = perimeter_generator.config->enable_overhang_speed && perimeter_generator.config->fuzzy_skin == FuzzySkinType::None; bool detect_overhang_degree = perimeter_generator.config->enable_overhang_speed && perimeter_generator.config->fuzzy_skin == FuzzySkinType::None;
//BBS: fuzziy skin may generate a line that approximates a point, which can cause the clipper to get empty results
if (loop.fuzzify && remain_polines.empty() && inside_polines.empty()) {
bool inside_contour = false;
for (const Polygon cliped_polygon : lower_polygons_series_clipped) {
if (cliped_polygon.contains(polygon.first_point())) {
inside_contour = true;
break;
}
}
if (inside_contour)
inside_polines.push_back(to_polyline(polygon));
else
remain_polines.push_back(to_polyline(polygon));
}
if (!detect_overhang_degree) { if (!detect_overhang_degree) {
if (!inside_polines.empty()) if (!inside_polines.empty())
extrusion_paths_append( extrusion_paths_append(