diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index d60b2d505..7bdaedd64 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -47,8 +47,6 @@ struct SurfaceFillParams float anchor_length = 1000.f; float anchor_length_max = 1000.f; //BBS - bool with_loop = false; - // width, height of extrusion, nozzle diameter, is bridge // For the output, for fill generator. Flow flow; @@ -82,7 +80,6 @@ struct SurfaceFillParams // RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, dont_adjust); RETURN_COMPARE_NON_EQUAL(anchor_length); RETURN_COMPARE_NON_EQUAL(anchor_length_max); - RETURN_COMPARE_NON_EQUAL(with_loop); RETURN_COMPARE_NON_EQUAL(flow.width()); RETURN_COMPARE_NON_EQUAL(flow.height()); RETURN_COMPARE_NON_EQUAL(flow.nozzle_diameter()); @@ -107,7 +104,6 @@ struct SurfaceFillParams // this->dont_adjust == rhs.dont_adjust && this->anchor_length == rhs.anchor_length && this->anchor_length_max == rhs.anchor_length_max && - this->with_loop == rhs.with_loop && this->flow == rhs.flow && this->extrusion_role == rhs.extrusion_role && this->sparse_infill_speed == rhs.sparse_infill_speed && @@ -161,8 +157,6 @@ std::vector group_fills(const Layer &layer) params.extruder = layerm.region().extruder(extrusion_role); params.pattern = region_config.sparse_infill_pattern.value; params.density = float(region_config.sparse_infill_density); - //BBS - params.with_loop = surface.surface_type == stInternalWithLoop; if (surface.is_solid()) { params.density = 100.f; @@ -193,7 +187,7 @@ std::vector group_fills(const Layer &layer) layerm.bridging_flow(extrusion_role, (surface.is_bridge() && !surface.is_external()) || object_config.thick_bridges) : layerm.flow(extrusion_role, (surface.thickness == -1) ? layer.height : surface.thickness); //BBS: record speed params - if (!params.with_loop && !params.bridge) { + if (!params.bridge) { if (params.extrusion_role == erInternalInfill) params.sparse_infill_speed = region_config.sparse_infill_speed; else if (params.extrusion_role == erTopSolidInfill) @@ -497,7 +491,6 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: params.extrusion_role = surface_fill.params.extrusion_role; params.using_internal_flow = using_internal_flow; params.no_extrusion_overlap = surface_fill.params.overlap; - params.with_loop = surface_fill.params.with_loop; if (surface_fill.params.pattern == ipGrid) params.can_reverse = false; LayerRegion* layerm = this->m_regions[surface_fill.region_id]; @@ -774,7 +767,7 @@ void Layer::make_ironing() // Check whether there is any non-solid hole in the regions. bool internal_infill_solid = region_config.sparse_infill_density.value > 95.; for (const Surface &surface : ironing_params.layerm->fill_surfaces.surfaces) - if ((!internal_infill_solid && surface.surface_type == stInternal) || surface.surface_type == stInternalBridge || surface.surface_type == stInternalVoid || surface.surface_type==stInternalWithLoop) { + if ((!internal_infill_solid && surface.surface_type == stInternal) || surface.surface_type == stInternalBridge || surface.surface_type == stInternalVoid) { // Some fill region is not quite solid. Don't iron over the whole surface. iron_completely = false; break; diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index baa426c49..49a715c43 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -115,57 +115,14 @@ void Fill::fill_surface_extrusion(const Surface* surface, const FillParams& para { Polylines polylines; ThickPolylines thick_polylines; - if (!params.with_loop) { - try { - if (params.use_arachne) - thick_polylines = this->fill_surface_arachne(surface, params); - else - polylines = this->fill_surface(surface, params); - } - catch (InfillFailedException&) {} - } - //BBS: add handling for infill pattern with loop - else { - Slic3r::ExPolygons expp = offset_ex(surface->expolygon, float(scale_(this->overlap - 0.5 * this->spacing))); - Polylines loop_polylines = to_polylines(expp); - { - //BBS: clip the loop - size_t j = 0; - for (size_t i = 0; i < loop_polylines.size(); ++i) { - loop_polylines[i].clip_end(this->loop_clipping); - if (loop_polylines[i].is_valid()) { - if (j < i) - loop_polylines[j] = std::move(loop_polylines[i]); - ++j; - } - } - if (j < loop_polylines.size()) - loop_polylines.erase(loop_polylines.begin() + int(j), loop_polylines.end()); - } - if (!loop_polylines.empty()) { - if (params.use_arachne) - append(thick_polylines, to_thick_polylines(std::move(loop_polylines), scaled(this->spacing))); - else - append(polylines, std::move(loop_polylines)); - expp = offset_ex(expp, float(scale_(0 - 0.5 * this->spacing))); - } else { - //BBS: the area is too narrow to place a loop, return to original expolygon - expp = { surface->expolygon }; - } - - Surface temp_surface = *surface; - for (ExPolygon& ex : expp) { - temp_surface.expolygon = ex; - try { - if (params.use_arachne) - append(thick_polylines, std::move(this->fill_surface_arachne(&temp_surface, params))); - else - append(polylines, std::move(this->fill_surface(&temp_surface, params))); - } - catch (InfillFailedException&) {} - } + try { + if (params.use_arachne) + thick_polylines = this->fill_surface_arachne(surface, params); + else + polylines = this->fill_surface(surface, params); } + catch (InfillFailedException&) {} if (!polylines.empty() || !thick_polylines.empty()) { // calculate actual flow from spacing (which might have been adjusted by the infill diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 732e55706..5672d55e4 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -67,8 +67,6 @@ struct FillParams bool use_arachne{ false }; // Layer height for Concentric infill with Arachne. coordf_t layer_height { 0.f }; - //BBS - bool with_loop { false }; // BBS Flow flow; diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index a7266aedc..56214eaa0 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -848,14 +848,7 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "initial_layer_line_width") { steps.emplace_back(posInfill); } else if (opt_key == "sparse_infill_pattern") { - steps.emplace_back(posInfill); - const auto *old_fill_pattern = old_config.option>(opt_key); - const auto *new_fill_pattern = new_config.option>(opt_key); - assert(old_fill_pattern && new_fill_pattern); - // We need to recalculate infill surfaces when infill_only_where_needed is enabled, and we are switching from - // the Lightning infill to another infill or vice versa. - if (PrintObject::infill_only_where_needed && (new_fill_pattern->value == ipLightning || old_fill_pattern->value == ipLightning)) - steps.emplace_back(posPrepareInfill); + steps.emplace_back(posPrepareInfill); } else if (opt_key == "sparse_infill_density") { // One likely wants to reslice only when switching between zero infill to simulate boolean difference (subtracting volumes), // normal infill and 100% (solid) infill. diff --git a/src/libslic3r/Surface.hpp b/src/libslic3r/Surface.hpp index 84bbbfb35..96b4e7b8c 100644 --- a/src/libslic3r/Surface.hpp +++ b/src/libslic3r/Surface.hpp @@ -15,8 +15,6 @@ enum SurfaceType { stBottomBridge, // Normal sparse infill. stInternal, - // Normal sparse infill. - stInternalWithLoop, // Full infill, supporting the top surfaces and/or defining the verticall wall thickness. stInternalSolid, // 1st layer of dense infill over sparse infill, printed with a bridging extrusion flow. diff --git a/src/libslic3r/SurfaceCollection.cpp b/src/libslic3r/SurfaceCollection.cpp index 7d0b10b3f..728f1a3e0 100644 --- a/src/libslic3r/SurfaceCollection.cpp +++ b/src/libslic3r/SurfaceCollection.cpp @@ -45,9 +45,9 @@ void SurfaceCollection::group(std::vector *retval) SurfacesPtr SurfaceCollection::filter_by_type(const SurfaceType type) { SurfacesPtr ss; - for (Surfaces::iterator surface = this->surfaces.begin(); surface != this->surfaces.end(); ++surface) { - if (surface->surface_type == type) ss.push_back(&*surface); - } + for (Surface &surface : this->surfaces) + if (surface.surface_type == type) + ss.push_back(&surface); return ss; }