diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 27ab032..b81f028 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -340,10 +340,10 @@ std::vector group_fills(const Layer &layer) continue; } else if (narrow_expolygons_index.size() == expolygons_size) { // w11 - surface_fills[i].params.pattern = ipConcentric; + surface_fills[i].params.pattern = ipConcentricInternal; } else { params = surface_fills[i].params; - params.pattern = ipConcentric; + params.pattern = ipConcentricInternal; surface_fills.emplace_back(params); surface_fills.back().region_id = surface_fills[i].region_id; surface_fills.back().surface.surface_type = stInternalSolid; @@ -547,7 +547,7 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: params.anchor_length = surface_fill.params.anchor_length; params.anchor_length_max = surface_fill.params.anchor_length_max; params.resolution = resolution; - params.use_arachne = (perimeter_generator == PerimeterGeneratorType::Arachne && surface_fill.params.pattern == ipConcentric) || surface_fill.params.pattern == ipEnsuring; + params.use_arachne = (perimeter_generator == PerimeterGeneratorType::Arachne && surface_fill.params.pattern == ipConcentricInternal) || surface_fill.params.pattern == ipEnsuring; params.layer_height = layerm.layer()->height; for (ExPolygon &expoly : surface_fill.expolygons) { @@ -559,13 +559,14 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: try { if (params.use_arachne) { //w14 - if (surface_fill.surface.surface_type == stInternalSolid) { + if (surface_fill.params.pattern == ipConcentricInternal) { layerm.region().config().infill_overlap.percent ? f->overlap = layerm.region().config().perimeter_extrusion_width * layerm.region().config().infill_overlap.value / 100 *(-1): f->overlap = float(layerm.region().config().infill_overlap.value); - } + + } else + f->overlap = 0; thick_polylines = f->fill_surface_arachne(&surface_fill.surface, params); - f->overlap = 0; } else polylines = f->fill_surface(&surface_fill.surface, params); @@ -696,7 +697,8 @@ Polylines Layer::generate_sparse_infill_polylines_for_anchoring(FillAdaptive::Oc case ipGyroid: case ipHilbertCurve: case ipArchimedeanChords: - case ipOctagramSpiral: break; + case ipOctagramSpiral: + case ipConcentricInternal: break; } // Create the filler object. diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index f55420c..b51da28 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -52,6 +52,8 @@ Fill* Fill::new_from_type(const InfillPattern type) case ipSupportBase: return new FillSupportBase(); case ipLightning: return new FillLightning::Filler(); case ipEnsuring: return new FillEnsuring(); + //w14 + case ipConcentricInternal: return new FillConcentric(); default: throw Slic3r::InvalidArgument("unknown type"); } } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 90cc955..b198eee 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -116,7 +116,9 @@ static const t_config_enum_values s_keys_map_InfillPattern { { "octagramspiral", ipOctagramSpiral }, { "adaptivecubic", ipAdaptiveCubic }, { "supportcubic", ipSupportCubic }, - { "lightning", ipLightning } + { "lightning", ipLightning }, + //w14 + { "concentricInternal", ipConcentricInternal } }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(InfillPattern) diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 4ddd4eb..28293a1 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -66,6 +66,8 @@ enum InfillPattern : int { ipLightning, ipEnsuring, ipCount, + //w14 + ipConcentricInternal, }; enum class IroningType {