diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 8d7ef59..b4cfe4e 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1093,8 +1093,10 @@ void PerimeterGenerator::add_infill_contour_for_arachne(ExPolygons infill_contou for (ExPolygon &ex : infill_contour) ex.simplify_p(params.scaled_resolution, &inner_pp); ExPolygons inner_union = union_ex(inner_pp); - infill_areas = offset_ex(inner_union, insert); - append(out_fill_expolygons, std::move(infill_areas)); + float offset1 = -min_perimeter_infill_spacing / 2.; + float offset2 = insert + min_perimeter_infill_spacing / 2.; + infill_areas = offset2_ex(inner_union, offset1, offset2); + append(out_fill_expolygons, offset2_ex(union_ex(inner_pp), float(-min_perimeter_infill_spacing / 2.), float(insert + min_perimeter_infill_spacing / 2.))); } @@ -1399,7 +1401,7 @@ void PerimeterGenerator::process_with_one_wall_arachne( } if (params.config.overhangs && upper_slices != nullptr && upper_slices_polygons_cache.empty()) { double upper_nozzle_diameter = params.print_config.nozzle_diameter.get_at(params.config.perimeter_extruder - 1); - upper_slices_polygons_cache = offset(*upper_slices, float(scale_(+upper_nozzle_diameter / 2))); + upper_slices_polygons_cache = offset(*upper_slices, float(scale_(EPSILON))); }