update infill overlap

This commit is contained in:
Wang YB
2024-01-03 08:59:10 +08:00
parent 38ddeff65b
commit c6f7bed17e
4 changed files with 16 additions and 8 deletions

View File

@@ -340,10 +340,10 @@ std::vector<SurfaceFill> 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.

View File

@@ -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");
}
}

View File

@@ -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)

View File

@@ -66,6 +66,8 @@ enum InfillPattern : int {
ipLightning,
ipEnsuring,
ipCount,
//w14
ipConcentricInternal,
};
enum class IroningType {