From aef6bec1b43b138b853662a46aed463c9eabe1a0 Mon Sep 17 00:00:00 2001 From: supermerill Date: Tue, 8 Dec 2020 17:01:28 +0100 Subject: [PATCH] #744 fix for extrusion width: they can be a % in superslicer --- src/libslic3r/Fill/FillAdaptive.cpp | 2 +- src/libslic3r/PerimeterGenerator.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 7e71e5643..a8b898ae6 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -305,7 +305,7 @@ std::pair adaptive_fill_line_spacing(const PrintObject &print_ob has_adaptive_infill ? Tristate::Maybe : Tristate::No, has_support_infill ? Tristate::Maybe : Tristate::No, config.fill_density, - config.infill_extrusion_width != 0. ? config.infill_extrusion_width : default_infill_extrusion_width + config.infill_extrusion_width != 0. ? config.infill_extrusion_width.get_abs_value(max_nozzle_diameter) : default_infill_extrusion_width })); build_octree |= has_adaptive_infill || has_support_infill; } diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 7c32c1009..602190b5d 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -625,8 +625,10 @@ void PerimeterGenerator::process() const ExPolygons top_polygons = diff_ex(fill_clip, inner_polygons, true); // increase by half peri the inner space to fill the frontier between last and stored. top_fills = union_ex(top_fills, top_polygons); - //set the clip to the external wall but go bacjk inside by infill_extrusion_width/2 to be sure the extrusion won't go outside even with a 100% overlap. - fill_clip = offset_ex(last, double(ext_perimeter_spacing / 2) - this->config->infill_extrusion_width.get_abs_value(nozzle_diameter)/2); + //set the clip to the external wall but go back inside by infill_extrusion_width/2 to be sure the extrusion won't go outside even with a 100% overlap. + double infill_spacing_unscaled = this->config->infill_extrusion_width.get_abs_value(nozzle_diameter); + if (infill_spacing_unscaled == 0) infill_spacing_unscaled = Flow::auto_extrusion_width(frInfill, nozzle_diameter); + fill_clip = offset_ex(last, double(ext_perimeter_spacing / 2) - scale_d(infill_spacing_unscaled / 2)); // ExPolygons oldLast = last; last = intersection_ex(inner_polygons, last); //{