From 04b1c22cc6df20197fbda140515198eb172457a0 Mon Sep 17 00:00:00 2001 From: Wang YB <94800665+Gradbb@users.noreply.github.com> Date: Tue, 27 Feb 2024 13:51:25 +0800 Subject: [PATCH] add mix_wall revert infill_overlap --- src/libslic3r/Fill/Fill.cpp | 14 +++++++++----- src/libslic3r/PrintConfig.cpp | 8 ++++++-- src/libslic3r/PrintConfig.hpp | 4 +++- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 660b6e6..cc7ee79 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -549,7 +549,11 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: params.anchor_length_max = surface_fill.params.anchor_length_max; params.resolution = resolution; //w14 - params.use_arachne = (perimeter_generator == PerimeterGeneratorType::Arachne && surface_fill.params.pattern == ipConcentricInternal) || surface_fill.params.pattern == ipEnsuring; + //w20 + if (perimeter_generator == PerimeterGeneratorType::Mix_wall) + params.use_arachne = (perimeter_generator == PerimeterGeneratorType::Arachne && surface_fill.params.pattern == ipConcentricInternal) || surface_fill.params.pattern == ipEnsuring || surface_fill.params.pattern == ipConcentricInternal; + else + 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) { @@ -561,25 +565,25 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: try { if (params.use_arachne) { //w14 - if (surface_fill.params.pattern == ipConcentricInternal) { + /* 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; + f->overlap = 0;*/ thick_polylines = f->fill_surface_arachne(&surface_fill.surface, params); } //w14 else { - if (surface_fill.params.pattern == ipConcentricInternal) { + /* 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; + f->overlap = 0;*/ polylines = f->fill_surface(&surface_fill.surface, params); } } catch (InfillFailedException &) { diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 962ed0b..3b5b44b 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -230,9 +230,11 @@ static const t_config_enum_values s_keys_map_ForwardCompatibilitySubstitutionRul }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(ForwardCompatibilitySubstitutionRule) +//w20 static t_config_enum_values s_keys_map_PerimeterGeneratorType { { "classic", int(PerimeterGeneratorType::Classic) }, - { "arachne", int(PerimeterGeneratorType::Arachne) } + { "arachne", int(PerimeterGeneratorType::Arachne) }, + { "mix_wall", int(PerimeterGeneratorType::Mix_wall) } }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(PerimeterGeneratorType) @@ -3531,6 +3533,7 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0)); + //w20 def = this->add("perimeter_generator", coEnum); def->label = L("Perimeter generator"); def->category = L("Layers and Perimeters"); @@ -3540,7 +3543,8 @@ void PrintConfigDef::init_fff_params() "This setting also affects the Concentric infill."); def->set_enum({ { "classic", L("Classic") }, - { "arachne", L("Arachne") } + { "arachne", L("Arachne") }, + { "mix_wall", L("Mix_wall")} }); def->mode = comAdvanced; def->set_default_value(new ConfigOptionEnum(PerimeterGeneratorType::Arachne)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index e3af18e..4e30a60 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -133,13 +133,15 @@ enum DraftShield { enum class LabelObjectsStyle { Disabled, Octoprint, Firmware }; +//w20 enum class PerimeterGeneratorType { // Classic perimeter generator using Clipper offsets with constant extrusion width. Classic, // Perimeter generator with variable extrusion width based on the paper // "A framework for adaptive width control of dense contour-parallel toolpaths in fused deposition modeling" ported from Cura. - Arachne + Arachne, + Mix_wall }; //B3 enum class GCodeThumbnailsFormat { QIDI,PNG, JPG, QOI };