diff --git a/src/libslic3r/ExtrusionEntity.cpp b/src/libslic3r/ExtrusionEntity.cpp index d5d09a3e9..39e3f63ab 100644 --- a/src/libslic3r/ExtrusionEntity.cpp +++ b/src/libslic3r/ExtrusionEntity.cpp @@ -68,7 +68,8 @@ void ExtrusionPath::polygons_covered_by_spacing(Polygons &out, const float scale { // Instantiating the Flow class to get the line spacing. // Don't know the nozzle diameter, setting to zero. It shall not matter it shall be optimized out by the compiler. - Flow flow(this->width, this->height, 0.f, is_bridge(this->role())); + // if the spacing is negative, use the width instead. can happen on ironing second pass. + Flow flow(this->width, this->height, 0.f, (this->width*4 < this->height)?true:is_bridge(this->role())); polygons_append(out, offset(this->polyline, 0.5f * double(flow.scaled_spacing()) + scaled_epsilon)); } diff --git a/src/libslic3r/Fill/FillSmooth.cpp b/src/libslic3r/Fill/FillSmooth.cpp index b8abadf71..7c21fc5b7 100644 --- a/src/libslic3r/Fill/FillSmooth.cpp +++ b/src/libslic3r/Fill/FillSmooth.cpp @@ -132,7 +132,8 @@ namespace Slic3r { // first infill FillParams first_pass_params = params; - first_pass_params.role = ExtrusionRole::erSolidInfill; + if(first_pass_params.role != ExtrusionRole::erSupportMaterial && first_pass_params.role != ExtrusionRole::erSupportMaterialInterface) + first_pass_params.role = ExtrusionRole::erSolidInfill; perform_single_fill(0, *eecroot, *surface, first_pass_params, volumeToOccupy); //use monotonic for ironing pass