diff --git a/src/libslic3r/Layer.cpp b/src/libslic3r/Layer.cpp index cd8dfa6a3..b88f47880 100644 --- a/src/libslic3r/Layer.cpp +++ b/src/libslic3r/Layer.cpp @@ -138,6 +138,7 @@ void Layer::make_perimeters() && config.gap_fill_speed == other_config.gap_fill_speed && config.infill_dense == other_config.infill_dense && config.infill_dense_algo == other_config.infill_dense_algo + && config.no_perimeter_unsupported_algo == other_config.no_perimeter_unsupported_algo && config.only_one_perimeter_top == other_config.only_one_perimeter_top && config.overhangs == other_config.overhangs && config.overhangs_width == other_config.overhangs_width diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 2b4e42cd0..08ffb02a6 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -210,10 +210,12 @@ void PerimeterGenerator::process() unbridgeable = offset2_ex(unbridgeable, -ext_perimeter_width*2, ext_perimeter_width*2); ExPolygons bridges_temp = intersection_ex(last, diff_ex(unsupported_filtered, unbridgeable)); //remove the overhangs section form the surface polygons + ExPolygons reference = last; last = diff_ex(last, unsupported_filtered); //ExPolygons no_bridge = diff_ex(offset_ex(unbridgeable, ext_perimeter_width * 3 / 2), last); //bridges_temp = diff_ex(bridges_temp, no_bridge); unsupported_filtered = diff_ex(offset_ex(bridges_temp, ext_perimeter_width * 3 / 2), offset_ex(unbridgeable, ext_perimeter_width*2, jtSquare)); + unsupported_filtered = intersection_ex(unsupported_filtered, reference); } else { ExPolygons unbridgeable = intersection_ex(unsupported, diff_ex(unsupported_filtered, offset_ex(bridgeable_simplified, ext_perimeter_width / 2))); unbridgeable = offset2_ex(unbridgeable, -ext_perimeter_width, ext_perimeter_width); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index ac5484353..a07106fba 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2261,7 +2261,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Position of perimeters starting points."); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("random"); - def->enum_values.push_back("nearest"); + def->enum_values.push_back("near"); def->enum_values.push_back("aligned"); def->enum_values.push_back("rear"); def->enum_values.push_back("hidden"); @@ -2269,7 +2269,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Nearest")); def->enum_labels.push_back(L("Aligned")); def->enum_labels.push_back(L("Rear")); - def->enum_labels.push_back(L("Hidden")); + def->enum_labels.push_back(L("Corners")); def->mode = comSimple; def->set_default_value(new ConfigOptionEnum(spHidden)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 1f242e788..8134928c7 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -191,7 +191,8 @@ template<> inline const t_config_enum_values& ConfigOptionEnum::ge static t_config_enum_values keys_map; if (keys_map.empty()) { keys_map["random"] = spRandom; - keys_map["nearest"] = spNearest; + keys_map["nearest"] = spHidden; + keys_map["near"] = spNearest; keys_map["aligned"] = spAligned; keys_map["rear"] = spRear; keys_map["hidden"] = spHidden; diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 366b6b71c..e7d77a909 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1060,7 +1060,7 @@ void PrintObject::detect_surfaces_type() float offset = layerm->flow(frExternalPerimeter).scaled_width() / 10.f; Polygons layerm_slices_surfaces = to_polygons(layerm->slices().surfaces); - // no_perimeter_full_bridge allow to put bridges where there are nothing, hence adding area to silce, that's why we need to start from the result of PerimeterGenerator. + // no_perimeter_full_bridge allow to put bridges where there are nothing, hence adding area to slice, that's why we need to start from the result of PerimeterGenerator. if (layerm->region()->config().no_perimeter_unsupported_algo == npuaFilled) { layerm_slices_surfaces = union_(layerm_slices_surfaces, to_polygons(layerm->fill_surfaces)); }