Allow generating brims for objects inside other object's hole (#8914)

* Allow generating brims for objects inside other object's hole

* Make sure inner brim stays inside holes

(cherry picked from commit 4afbc5bf340835727344bae77572595a4aa2c7ba)

* Merge branch 'main' into bugfox/nested-brim
This commit is contained in:
Noisyfox 2025-03-16 20:07:41 +08:00 committed by GitHub
parent 9e2054278f
commit 69154652ba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1010,16 +1010,14 @@ static ExPolygons outer_inner_brim_area(const Print& print,
}else { }else {
outerExpoly = offset_ex(ex_poly_holes_reversed, -brim_offset); outerExpoly = offset_ex(ex_poly_holes_reversed, -brim_offset);
} }
append(brim_area_object, diff_ex(outerExpoly, innerExpoly)); append(brim_area_object, intersection_ex(diff_ex(outerExpoly, innerExpoly), ex_poly_holes_reversed));
} }
if (!has_inner_brim) { if (!has_inner_brim) {
// BBS: brim should be apart from holes // BBS: brim should be apart from holes
append(no_brim_area_object, diff_ex(ex_poly_holes_reversed, offset_ex(ex_poly_holes_reversed, -scale_(5.)))); append(no_brim_area_object, diff_ex(ex_poly_holes_reversed, offset_ex(ex_poly_holes_reversed, -no_brim_offset)));
} }
if (!has_outer_brim) if (!has_outer_brim)
append(no_brim_area_object, diff_ex(offset(ex_poly.contour, no_brim_offset), ex_poly_holes_reversed)); append(no_brim_area_object, diff_ex(offset(ex_poly.contour, no_brim_offset), ex_poly_holes_reversed));
if (!has_inner_brim && !has_outer_brim)
append(no_brim_area_object, offset_ex(ex_poly_holes_reversed, -no_brim_offset));
append(holes_object, ex_poly_holes_reversed); append(holes_object, ex_poly_holes_reversed);
} }
} }