diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 0616ac5da6..884c0652ca 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1445,7 +1445,8 @@ void PerimeterGenerator::process_classic() coord_t ext_perimeter_spacing = this->ext_perimeter_flow.scaled_spacing(); coord_t ext_perimeter_spacing2; - if(config->precise_outer_wall) + // Orca: ignore precise_outer_wall if wall_sequence is not InnerOuter + if(config->precise_outer_wall && this->config->wall_sequence == WallSequence::InnerOuter) ext_perimeter_spacing2 = scaled(0.5f * (this->ext_perimeter_flow.width() + this->perimeter_flow.width())); else ext_perimeter_spacing2 = scaled(0.5f * (this->ext_perimeter_flow.spacing() + this->perimeter_flow.spacing())); @@ -2173,9 +2174,11 @@ void PerimeterGenerator::process_arachne() const bool is_topmost_layer = (this->upper_slices == nullptr) ? true : false; if (is_topmost_layer && loop_number > 0 && config->only_one_wall_top) loop_number = 0; + + auto apply_precise_outer_wall = config->precise_outer_wall && this->config->wall_sequence == WallSequence::InnerOuter; // Orca: properly adjust offset for the outer wall if precise_outer_wall is enabled. ExPolygons last = offset_ex(surface.expolygon.simplify_p(surface_simplify_resolution), - config->precise_outer_wall ? -float(ext_perimeter_width - ext_perimeter_spacing ) + apply_precise_outer_wall? -float(ext_perimeter_width - ext_perimeter_spacing ) : -float(ext_perimeter_width / 2. - ext_perimeter_spacing / 2.)); Arachne::WallToolPathsParams input_params = Arachne::make_paths_params(this->layer_id, *object_config, *print_config); @@ -2183,7 +2186,7 @@ void PerimeterGenerator::process_arachne() input_params.is_top_or_bottom_layer = (is_bottom_layer || is_topmost_layer) ? true : false; coord_t wall_0_inset = 0; - if (config->precise_outer_wall) + if (apply_precise_outer_wall) wall_0_inset = -coord_t(ext_perimeter_width / 2 - ext_perimeter_spacing / 2); std::vector out_shell; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 128da3c75b..eac42ad70c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -895,9 +895,10 @@ void PrintConfigDef::init_fff_params() def = this->add("precise_outer_wall",coBool); - def->label = L("Precise wall(experimental)"); + def->label = L("Precise wall"); def->category = L("Quality"); - def->tooltip = L("Improve shell precision by adjusting outer wall spacing. This also improves layer consistency."); + def->tooltip = L("Improve shell precision by adjusting outer wall spacing. This also improves layer consistency.\nNote: This setting " + "will only take effect if the wall sequence is configured to Inner-Outer"); def->set_default_value(new ConfigOptionBool{false}); def = this->add("only_one_wall_top", coBool);