Better rectilinearWgapfill (now take into account bits that are left from the main fill)

This commit is contained in:
supermerill 2019-12-18 18:47:25 +01:00
parent ff779d0124
commit 69ed7ab1c0

View File

@ -1825,6 +1825,7 @@ FillRectilinear2WGapFill::fill_surface_extrusion(const Surface *surface, const F
printf("FillRectilinear2::fill_surface() failed to fill a region.\n"); printf("FillRectilinear2::fill_surface() failed to fill a region.\n");
} }
} }
ExPolygons unextruded_areas;
if (!polylines_rectilinear.empty()) { if (!polylines_rectilinear.empty()) {
double flow_mult_exact_volume = 1; double flow_mult_exact_volume = 1;
//check if not over-extruding //check if not over-extruding
@ -1878,9 +1879,15 @@ FillRectilinear2WGapFill::fill_surface_extrusion(const Surface *surface, const F
params.flow->height); params.flow->height);
coll_nosort->entities.push_back(eec); coll_nosort->entities.push_back(eec);
unextruded_areas = diff_ex(rectilinear_areas, union_ex(eec->polygons_covered_by_spacing(10), true));
} }
else
unextruded_areas = rectilinear_areas;
//gapfill //gapfill
gapfill_areas.insert(gapfill_areas.end(), unextruded_areas.begin(), unextruded_areas.end());
gapfill_areas = union_ex(gapfill_areas, true);
if (gapfill_areas.size() > 0) { if (gapfill_areas.size() > 0) {
FillParams params2{ params }; FillParams params2{ params };
params2.role = good_role; params2.role = good_role;