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; continue;
} else if (narrow_expolygons_index.size() == expolygons_size) { } else if (narrow_expolygons_index.size() == expolygons_size) {
// w11 // w11
surface_fills[i].params.pattern = ipConcentric; surface_fills[i].params.pattern = ipConcentricInternal;
} else { } else {
params = surface_fills[i].params; params = surface_fills[i].params;
params.pattern = ipConcentric; params.pattern = ipConcentricInternal;
surface_fills.emplace_back(params); surface_fills.emplace_back(params);
surface_fills.back().region_id = surface_fills[i].region_id; surface_fills.back().region_id = surface_fills[i].region_id;
surface_fills.back().surface.surface_type = stInternalSolid; 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 = surface_fill.params.anchor_length;
params.anchor_length_max = surface_fill.params.anchor_length_max; params.anchor_length_max = surface_fill.params.anchor_length_max;
params.resolution = resolution; 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; params.layer_height = layerm.layer()->height;
for (ExPolygon &expoly : surface_fill.expolygons) { for (ExPolygon &expoly : surface_fill.expolygons) {
@@ -559,13 +559,14 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive:
try { try {
if (params.use_arachne) { if (params.use_arachne) {
//w14 //w14
if (surface_fill.surface.surface_type == stInternalSolid) { if (surface_fill.params.pattern == ipConcentricInternal) {
layerm.region().config().infill_overlap.percent ? layerm.region().config().infill_overlap.percent ?
f->overlap = layerm.region().config().perimeter_extrusion_width * layerm.region().config().infill_overlap.value / 100 *(-1): 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); f->overlap = float(layerm.region().config().infill_overlap.value);
}
} else
f->overlap = 0;
thick_polylines = f->fill_surface_arachne(&surface_fill.surface, params); thick_polylines = f->fill_surface_arachne(&surface_fill.surface, params);
f->overlap = 0;
} }
else else
polylines = f->fill_surface(&surface_fill.surface, params); 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 ipGyroid:
case ipHilbertCurve: case ipHilbertCurve:
case ipArchimedeanChords: case ipArchimedeanChords:
case ipOctagramSpiral: break; case ipOctagramSpiral:
case ipConcentricInternal: break;
} }
// Create the filler object. // Create the filler object.

View File

@@ -52,6 +52,8 @@ Fill* Fill::new_from_type(const InfillPattern type)
case ipSupportBase: return new FillSupportBase(); case ipSupportBase: return new FillSupportBase();
case ipLightning: return new FillLightning::Filler(); case ipLightning: return new FillLightning::Filler();
case ipEnsuring: return new FillEnsuring(); case ipEnsuring: return new FillEnsuring();
//w14
case ipConcentricInternal: return new FillConcentric();
default: throw Slic3r::InvalidArgument("unknown type"); default: throw Slic3r::InvalidArgument("unknown type");
} }
} }

View File

@@ -116,7 +116,9 @@ static const t_config_enum_values s_keys_map_InfillPattern {
{ "octagramspiral", ipOctagramSpiral }, { "octagramspiral", ipOctagramSpiral },
{ "adaptivecubic", ipAdaptiveCubic }, { "adaptivecubic", ipAdaptiveCubic },
{ "supportcubic", ipSupportCubic }, { "supportcubic", ipSupportCubic },
{ "lightning", ipLightning } { "lightning", ipLightning },
//w14
{ "concentricInternal", ipConcentricInternal }
}; };
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(InfillPattern) CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(InfillPattern)

View File

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