FIX: fix the error path when it is bridge & top

if the region is top surface as well as bridge
use bridge path

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Ia23910e4c49daeacf12d2f40d21a7ca319ddcfb7
This commit is contained in:
qing.zhang 2022-11-03 15:29:07 +08:00 committed by Lane.Wei
parent 9795cb8d0e
commit 6bc580930e

View file

@ -576,7 +576,17 @@ void PerimeterGenerator::process()
//set the clip to a virtual "second perimeter"
fill_clip = offset_ex(last, -double(ext_perimeter_spacing));
// get the real top surface
ExPolygons top_polygons = diff_ex(last, grown_upper_slices, ApplySafetyOffset::Yes);
ExPolygons grown_lower_slices;
ExPolygons bridge_checker;
// BBS: check whether surface be bridge or not
if (this->lower_slices != NULL) {
grown_lower_slices =*this->lower_slices;
double bridge_offset = std::max(double(ext_perimeter_spacing), (double(perimeter_width)));
bridge_checker = offset_ex(diff_ex(last, grown_lower_slices, ApplySafetyOffset::Yes), 1.5 * bridge_offset);
}
ExPolygons delete_bridge = diff_ex(last, bridge_checker, ApplySafetyOffset::Yes);
ExPolygons top_polygons = diff_ex(delete_bridge, grown_upper_slices, ApplySafetyOffset::Yes);
//get the not-top surface, from the "real top" but enlarged by external_infill_margin (and the min_width_top_surface we removed a bit before)
ExPolygons inner_polygons = diff_ex(last,