#539 fix Concentric (filled) interface support dumps core

This commit is contained in:
supermerill 2020-10-17 01:03:56 +02:00
parent da2fc1e7af
commit 2291bd76de
2 changed files with 4 additions and 2 deletions

View File

@ -595,7 +595,8 @@ Fill::do_gap_fill(const ExPolygons &gapfill_areas, const FillParams &params, Ext
// offset2_ex(gapfill_areas, double(-max / 2), double(+max / 2)), // offset2_ex(gapfill_areas, double(-max / 2), double(+max / 2)),
// true); // true);
ExPolygons gapfill_areas_collapsed = offset2_ex(gapfill_areas, double(-min / 2), double(+min / 2)); ExPolygons gapfill_areas_collapsed = offset2_ex(gapfill_areas, double(-min / 2), double(+min / 2));
const double minarea = scale_(params.config->gap_fill_min_area.get_abs_value(params.flow->width) ) * params.flow->scaled_width(); double minarea = params.flow->scaled_width() * params.flow->scaled_width();
if (params.config != nullptr) minarea = scale_(params.config->gap_fill_min_area.get_abs_value(params.flow->width)) * params.flow->scaled_width();
for (const ExPolygon &ex : gapfill_areas_collapsed) { for (const ExPolygon &ex : gapfill_areas_collapsed) {
//remove too small gaps that are too hard to fill. //remove too small gaps that are too hard to fill.
//ie one that are smaller than an extrusion with width of min and a length of max. //ie one that are smaller than an extrusion with width of min and a length of max.

View File

@ -174,7 +174,8 @@ FillConcentricWGapFill::fill_surface_extrusion(
ExPolygons gapfill_areas = diff_ex({ surface->expolygon }, offset_ex(expp, double(scale_(0.5 * this->spacing)))); ExPolygons gapfill_areas = diff_ex({ surface->expolygon }, offset_ex(expp, double(scale_(0.5 * this->spacing))));
gapfill_areas = union_ex(gapfill_areas, true); gapfill_areas = union_ex(gapfill_areas, true);
if (gapfill_areas.size() > 0) { if (gapfill_areas.size() > 0) {
const double minarea = scale_(params.config->gap_fill_min_area.get_abs_value(params.flow->width)) * params.flow->scaled_width(); double minarea = params.flow->scaled_width() * params.flow->scaled_width();
if (params.config != nullptr) minarea = scale_(params.config->gap_fill_min_area.get_abs_value(params.flow->width)) * params.flow->scaled_width();
for (int i = 0; i < gapfill_areas.size(); i++) { for (int i = 0; i < gapfill_areas.size(); i++) {
if (gapfill_areas[i].area() < minarea) { if (gapfill_areas[i].area() < minarea) {
gapfill_areas.erase(gapfill_areas.begin() + i); gapfill_areas.erase(gapfill_areas.begin() + i);