diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index c67f0cf3f3..421cdd48b6 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1129,7 +1129,7 @@ void PerimeterGenerator::process_classic() coord_t ext_perimeter_spacing = this->ext_perimeter_flow.scaled_spacing(); coord_t ext_perimeter_spacing2; // Orca: ignore precise_outer_wall if wall_sequence is not InnerOuter - if(config->precise_outer_wall) + if(config->precise_outer_wall && 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())); @@ -2124,7 +2124,7 @@ void PerimeterGenerator::process_arachne() if (is_topmost_layer && loop_number > 0 && config->only_one_wall_top) loop_number = 0; - auto apply_precise_outer_wall = config->precise_outer_wall; + auto apply_precise_outer_wall = config->precise_outer_wall && 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), apply_precise_outer_wall? -float(ext_perimeter_width - ext_perimeter_spacing ) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index e76b95eca1..9f6e8f6a8b 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1600,6 +1600,12 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* // } // } + // check wall sequence and precise outer wall + if (m_default_region_config.precise_outer_wall && m_default_region_config.wall_sequence != WallSequence::InnerOuter) { + warning->string = L("Precise outer wall will be ignored when wall sequence is InnerOuter."); + warning->opt_key = "precise_outer_wall"; + } + } catch (std::exception& e) { BOOST_LOG_TRIVIAL(warning) << "Orca: validate motion ability failed: " << e.what() << std::endl; } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 2d491a2f92..e8d954ff99 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1085,7 +1085,7 @@ void PrintConfigDef::init_fff_params() def = this->add("precise_outer_wall",coBool); 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. NOTE: This option will be ignored unless the wall sequence is InnerOuter."); def->set_default_value(new ConfigOptionBool{true}); def = this->add("only_one_wall_top", coBool); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 1c0e8b95cc..c76e1e2520 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1145,7 +1145,6 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "overhang_reverse_internal_only" || opt_key == "overhang_reverse_threshold" || opt_key == "wall_direction" - //BBS || opt_key == "enable_overhang_speed" || opt_key == "detect_thin_wall" || opt_key == "precise_outer_wall") {