Refactored PerimeterGenerator to output out_fill_surfaces as ExPolygons,

not SurfaceCollection.

Reworked combineinfill.t, 07_extrusionpath.t, 08_extrusionloop.t to c++.
Removed Layer / ExtrusionPath / ExtrusionLoop / ExtrusionEntityCollection
from Perl bindings.
This commit is contained in:
Vojtech Bubnik 2022-10-27 19:08:43 +02:00
parent 237e56c7ce
commit d041fa6c0c
24 changed files with 422 additions and 852 deletions

View file

@ -611,7 +611,7 @@ void PerimeterGenerator::process_arachne(
// Gaps without the thin walls
ExtrusionEntityCollection &out_gap_fill,
// Infills without the gap fills
SurfaceCollection &out_fill_surfaces)
ExPolygons &out_fill_expolygons)
{
// other perimeters
coord_t perimeter_spacing = params.perimeter_flow.scaled_spacing();
@ -817,12 +817,11 @@ void PerimeterGenerator::process_arachne(
// collapse too narrow infill areas
const auto min_perimeter_infill_spacing = coord_t(solid_infill_spacing * (1. - INSET_OVERLAP_TOLERANCE));
// append infill areas to fill_surfaces
out_fill_surfaces.append(
append(out_fill_expolygons,
offset2_ex(
union_ex(pp),
float(- min_perimeter_infill_spacing / 2.),
float(inset + min_perimeter_infill_spacing / 2.)),
stInternal);
float(inset + min_perimeter_infill_spacing / 2.)));
}
}
@ -839,7 +838,7 @@ void PerimeterGenerator::process_classic(
// Gaps without the thin walls
ExtrusionEntityCollection &out_gap_fill,
// Infills without the gap fills
SurfaceCollection &out_fill_surfaces)
ExPolygons &out_fill_expolygons)
{
// other perimeters
coord_t perimeter_width = params.perimeter_flow.scaled_width();
@ -1094,12 +1093,11 @@ void PerimeterGenerator::process_classic(
// collapse too narrow infill areas
coord_t min_perimeter_infill_spacing = coord_t(solid_infill_spacing * (1. - INSET_OVERLAP_TOLERANCE));
// append infill areas to fill_surfaces
out_fill_surfaces.append(
append(out_fill_expolygons,
offset2_ex(
union_ex(pp),
float(- inset - min_perimeter_infill_spacing / 2.),
float(min_perimeter_infill_spacing / 2.)),
stInternal);
float(min_perimeter_infill_spacing / 2.)));
} // for each island
}