diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp index 29f4098273..0c704b65ce 100644 --- a/src/libslic3r/ExtrusionEntity.hpp +++ b/src/libslic3r/ExtrusionEntity.hpp @@ -298,7 +298,6 @@ class ExtrusionLoop : public ExtrusionEntity { public: ExtrusionPaths paths; - Point seam{Point::Zero()}; ExtrusionLoop() = default; ExtrusionLoop(ExtrusionLoopRole role) : m_loop_role(role) {} diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 8e2b996539..111b43df7e 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2324,7 +2324,6 @@ struct SmoothPathGenerator { } else if (auto path = dynamic_cast(extrusion_entity)) { result = GCode::SmoothPath{GCode::SmoothPathElement{path->attributes(), smooth_path_caches.layer_local().resolve_or_fit(*path, extrusion_reference.flipped(), scaled_resolution)}}; } - using GCode::SmoothPathElement; for (auto it{result.rbegin()}; it != result.rend(); ++it) { if (!it->path.empty()) { previous_position = InstancePoint{it->path.back().point}; @@ -2565,7 +2564,7 @@ LayerResult GCodeGenerator::process_layer( } const Vec3crd point{to_3d(first_point, scaled(print_z))}; - gcode += this->travel_to_first_position(point, print_z, ExtrusionRole::Mixed, [&](){ + gcode += this->travel_to_first_position(point, print_z, ExtrusionRole::Mixed, [this](){ return m_writer.multiple_extruders ? "" : m_label_objects.maybe_change_instance(m_writer); }); @@ -3132,7 +3131,7 @@ std::string GCodeGenerator::_extrude( comment += description; comment += description_bridge; comment += " point"; - const std::string travel_gcode{this->travel_to(*this->last_position, path.front().point, path_attr.role, comment, [&](){ + const std::string travel_gcode{this->travel_to(*this->last_position, path.front().point, path_attr.role, comment, [this](){ return m_writer.multiple_extruders ? "" : m_label_objects.maybe_change_instance(m_writer); })}; gcode += travel_gcode; diff --git a/src/libslic3r/GCode/ExtrusionOrder.cpp b/src/libslic3r/GCode/ExtrusionOrder.cpp index 143868013f..45724cced5 100644 --- a/src/libslic3r/GCode/ExtrusionOrder.cpp +++ b/src/libslic3r/GCode/ExtrusionOrder.cpp @@ -57,7 +57,7 @@ ExtrusionEntitiesPtr extract_infill_extrusions( const ExtrusionEntityCollection &fills, const LayerExtrusionRanges::const_iterator& begin, const LayerExtrusionRanges::const_iterator& end, - const ExtractEntityPredicate &predicate + const ExtractEntityPredicate &should_pick_extrusion ) { ExtrusionEntitiesPtr result; for (auto it = begin; it != end; ++ it) { @@ -67,7 +67,7 @@ ExtrusionEntitiesPtr extract_infill_extrusions( assert(dynamic_cast(fills.entities[fill_id])); auto *eec{static_cast(fills.entities[fill_id])}; - if (eec == nullptr || eec->empty() || !predicate(*eec, region)) { + if (eec == nullptr || eec->empty() || !should_pick_extrusion(*eec, region)) { continue; } @@ -88,7 +88,7 @@ std::vector extract_perimeter_extrusions( const Print &print, const Layer &layer, const LayerIsland &island, - const ExtractEntityPredicate &predicate, + const ExtractEntityPredicate &should_pick_extrusion, const unsigned extruder_id, const Point &offset, std::optional &previous_position, @@ -104,7 +104,7 @@ std::vector extract_perimeter_extrusions( // Don't reorder them. assert(dynamic_cast(layerm.perimeters().entities[perimeter_id])); auto *eec = static_cast(layerm.perimeters().entities[perimeter_id]); - if (eec == nullptr || eec->empty() || !predicate(*eec, region)) { + if (eec == nullptr || eec->empty() || !should_pick_extrusion(*eec, region)) { continue; } @@ -152,7 +152,7 @@ std::vector extract_infill_ranges( const LayerIsland &island, const Point &offset, std::optional &previous_position, - const ExtractEntityPredicate &predicate, + const ExtractEntityPredicate &should_pick_extrusion, const PathSmoothingFunction &smooth_path, const unsigned extruder_id ) { @@ -171,7 +171,7 @@ std::vector extract_infill_ranges( layerm.fills(), it, it_end, - predicate + should_pick_extrusion )}; const std::optional previous_instance_point{get_instance_point(previous_position, offset)}; @@ -199,7 +199,7 @@ std::vector extract_island_extrusions( const LayerSlice &lslice, const Print &print, const Layer &layer, - const ExtractEntityPredicate &predicate, + const ExtractEntityPredicate &should_pick_extrusion, const PathSmoothingFunction &smooth_path, const Point &offset, const unsigned extruder_id, @@ -213,8 +213,8 @@ std::vector extract_island_extrusions( // accross the whole print uniquely. Translate to a Print specific PrintRegion. const PrintRegion ®ion = print.get_print_region(layerm.region().print_region_id()); - const auto infill_predicate = [&](const ExtrusionEntityCollection &eec, const PrintRegion ®ion) { - return predicate(eec, region) && eec.role() != ExtrusionRole::Ironing; + const auto should_pick_infill = [&should_pick_extrusion](const ExtrusionEntityCollection &eec, const PrintRegion ®ion) { + return should_pick_extrusion(eec, region) && eec.role() != ExtrusionRole::Ironing; }; result.push_back(IslandExtrusions{®ion}); @@ -223,15 +223,15 @@ std::vector extract_island_extrusions( if (print.config().infill_first) { island_extrusions.infill_ranges = extract_infill_ranges( - print, layer, island, offset, previous_position, infill_predicate, smooth_path, extruder_id + print, layer, island, offset, previous_position, should_pick_infill, smooth_path, extruder_id ); - island_extrusions.perimeters = extract_perimeter_extrusions(print, layer, island, predicate, extruder_id, offset, previous_position, smooth_path); + island_extrusions.perimeters = extract_perimeter_extrusions(print, layer, island, should_pick_extrusion, extruder_id, offset, previous_position, smooth_path); } else { - island_extrusions.perimeters = extract_perimeter_extrusions(print, layer, island, predicate, extruder_id, offset, previous_position, smooth_path); + island_extrusions.perimeters = extract_perimeter_extrusions(print, layer, island, should_pick_extrusion, extruder_id, offset, previous_position, smooth_path); island_extrusions.infill_ranges = {extract_infill_ranges( - print, layer, island, offset, previous_position, infill_predicate, smooth_path, extruder_id + print, layer, island, offset, previous_position, should_pick_infill, smooth_path, extruder_id )}; } } @@ -242,7 +242,7 @@ std::vector extract_ironing_extrusions( const LayerSlice &lslice, const Print &print, const Layer &layer, - const ExtractEntityPredicate &predicate, + const ExtractEntityPredicate &should_pick_extrusion, const PathSmoothingFunction &smooth_path, const Point &offset, const unsigned extruder_id, @@ -251,12 +251,12 @@ std::vector extract_ironing_extrusions( std::vector result; for (const LayerIsland &island : lslice.islands) { - const auto ironing_predicate = [&](const auto &eec, const auto ®ion) { - return predicate(eec, region) && eec.role() == ExtrusionRole::Ironing; + const auto should_pick_ironing = [&should_pick_extrusion](const auto &eec, const auto ®ion) { + return should_pick_extrusion(eec, region) && eec.role() == ExtrusionRole::Ironing; }; const std::vector ironing_ranges{extract_infill_ranges( - print, layer, island, offset, previous_position, ironing_predicate, smooth_path, extruder_id + print, layer, island, offset, previous_position, should_pick_ironing, smooth_path, extruder_id )}; result.insert( result.end(), ironing_ranges.begin(), ironing_ranges.end() @@ -268,7 +268,7 @@ std::vector extract_ironing_extrusions( std::vector get_slices_extrusions( const Print &print, const Layer &layer, - const ExtractEntityPredicate &predicate, + const ExtractEntityPredicate &should_pick_extrusion, const PathSmoothingFunction &smooth_path, const Point &offset, const unsigned extruder_id, @@ -285,10 +285,10 @@ std::vector get_slices_extrusions( for (size_t idx : layer.lslice_indices_sorted_by_print_order) { const LayerSlice &lslice = layer.lslices_ex[idx]; std::vector island_extrusions{extract_island_extrusions( - lslice, print, layer, predicate, smooth_path, offset, extruder_id, previous_position + lslice, print, layer, should_pick_extrusion, smooth_path, offset, extruder_id, previous_position )}; std::vector ironing_extrusions{extract_ironing_extrusions( - lslice, print, layer, predicate, smooth_path, offset, extruder_id, previous_position + lslice, print, layer, should_pick_extrusion, smooth_path, offset, extruder_id, previous_position )}; if (!island_extrusions.empty() || !ironing_extrusions.empty()) { result.emplace_back( @@ -388,7 +388,7 @@ std::vector get_overriden_extrusions( for (const InstanceToPrint &instance : instances_to_print) { if (const Layer *layer = layers[instance.object_layer_to_print_id].object_layer; layer) { - const auto predicate = [&](const ExtrusionEntityCollection &entity_collection, + const auto should_pick_extrusion = [&layer_tools, &instance, &extruder_id](const ExtrusionEntityCollection &entity_collection, const PrintRegion ®ion) { if (!is_overriden(entity_collection, layer_tools, instance.instance_id)) { return false; @@ -402,11 +402,11 @@ std::vector get_overriden_extrusions( return true; }; - const PrintObject &print_object = instance.print_object; - const Point &offset = print_object.instances()[instance.instance_id].shift; + const PrintObject &print_object{instance.print_object}; + const Point &offset{print_object.instances()[instance.instance_id].shift}; std::vector slices_extrusions{get_slices_extrusions( - print, *layer, predicate, smooth_path, offset, extruder_id, previous_position + print, *layer, should_pick_extrusion, smooth_path, offset, extruder_id, previous_position )}; if (!slices_extrusions.empty()) { result.push_back({offset, std::move(slices_extrusions)}); @@ -447,7 +447,7 @@ std::vector get_normal_extrusions( } if (const Layer *layer = layers[instance.object_layer_to_print_id].object_layer; layer) { - const auto predicate = [&](const ExtrusionEntityCollection &entity_collection, const PrintRegion ®ion){ + const auto should_pick_extrusion{[&layer_tools, &instance, &extruder_id](const ExtrusionEntityCollection &entity_collection, const PrintRegion ®ion){ if (is_overriden(entity_collection, layer_tools, instance.instance_id)) { return false; } @@ -456,12 +456,12 @@ std::vector get_normal_extrusions( return false; } return true; - }; + }}; result.back().slices_extrusions = get_slices_extrusions( print, *layer, - predicate, + should_pick_extrusion, smooth_path, offset, extruder_id,