nearest is now near (Nearest), hidden is now hidden (Corners).

Seam position default to corners (hidden) from "nearest", to avoid confusion when migrating from a prusaslicer config.
fix for modifiers with no_perimeter_unsupported_algo
npuaBridges surface fix
This commit is contained in:
supermerill 2020-01-15 17:21:38 +01:00
parent cb8aa11ac2
commit eecf28c00c
5 changed files with 8 additions and 4 deletions

View File

@ -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

View File

@ -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);

View File

@ -2259,7 +2259,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("Position of perimeters starting points.");
def->enum_keys_map = &ConfigOptionEnum<SeamPosition>::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");
@ -2267,7 +2267,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<SeamPosition>(spHidden));

View File

@ -190,7 +190,8 @@ template<> inline const t_config_enum_values& ConfigOptionEnum<SeamPosition>::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;

View File

@ -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));
}