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 433bd46bee
commit 246392156d
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.gap_fill_speed == other_config.gap_fill_speed
&& config.infill_dense == other_config.infill_dense && config.infill_dense == other_config.infill_dense
&& config.infill_dense_algo == other_config.infill_dense_algo && 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.only_one_perimeter_top == other_config.only_one_perimeter_top
&& config.overhangs == other_config.overhangs && config.overhangs == other_config.overhangs
&& config.overhangs_width == other_config.overhangs_width && 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); unbridgeable = offset2_ex(unbridgeable, -ext_perimeter_width*2, ext_perimeter_width*2);
ExPolygons bridges_temp = intersection_ex(last, diff_ex(unsupported_filtered, unbridgeable)); ExPolygons bridges_temp = intersection_ex(last, diff_ex(unsupported_filtered, unbridgeable));
//remove the overhangs section form the surface polygons //remove the overhangs section form the surface polygons
ExPolygons reference = last;
last = diff_ex(last, unsupported_filtered); last = diff_ex(last, unsupported_filtered);
//ExPolygons no_bridge = diff_ex(offset_ex(unbridgeable, ext_perimeter_width * 3 / 2), last); //ExPolygons no_bridge = diff_ex(offset_ex(unbridgeable, ext_perimeter_width * 3 / 2), last);
//bridges_temp = diff_ex(bridges_temp, no_bridge); //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 = 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 { } else {
ExPolygons unbridgeable = intersection_ex(unsupported, diff_ex(unsupported_filtered, offset_ex(bridgeable_simplified, ext_perimeter_width / 2))); 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); unbridgeable = offset2_ex(unbridgeable, -ext_perimeter_width, ext_perimeter_width);

View File

@ -2261,7 +2261,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("Position of perimeters starting points."); def->tooltip = L("Position of perimeters starting points.");
def->enum_keys_map = &ConfigOptionEnum<SeamPosition>::get_enum_values(); def->enum_keys_map = &ConfigOptionEnum<SeamPosition>::get_enum_values();
def->enum_values.push_back("random"); 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("aligned");
def->enum_values.push_back("rear"); def->enum_values.push_back("rear");
def->enum_values.push_back("hidden"); 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("Nearest"));
def->enum_labels.push_back(L("Aligned")); def->enum_labels.push_back(L("Aligned"));
def->enum_labels.push_back(L("Rear")); 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->mode = comSimple;
def->set_default_value(new ConfigOptionEnum<SeamPosition>(spHidden)); def->set_default_value(new ConfigOptionEnum<SeamPosition>(spHidden));

View File

@ -191,7 +191,8 @@ template<> inline const t_config_enum_values& ConfigOptionEnum<SeamPosition>::ge
static t_config_enum_values keys_map; static t_config_enum_values keys_map;
if (keys_map.empty()) { if (keys_map.empty()) {
keys_map["random"] = spRandom; keys_map["random"] = spRandom;
keys_map["nearest"] = spNearest; keys_map["nearest"] = spHidden;
keys_map["near"] = spNearest;
keys_map["aligned"] = spAligned; keys_map["aligned"] = spAligned;
keys_map["rear"] = spRear; keys_map["rear"] = spRear;
keys_map["hidden"] = spHidden; keys_map["hidden"] = spHidden;

View File

@ -1060,7 +1060,7 @@ void PrintObject::detect_surfaces_type()
float offset = layerm->flow(frExternalPerimeter).scaled_width() / 10.f; float offset = layerm->flow(frExternalPerimeter).scaled_width() / 10.f;
Polygons layerm_slices_surfaces = to_polygons(layerm->slices().surfaces); 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) { if (layerm->region()->config().no_perimeter_unsupported_algo == npuaFilled) {
layerm_slices_surfaces = union_(layerm_slices_surfaces, to_polygons(layerm->fill_surfaces)); layerm_slices_surfaces = union_(layerm_slices_surfaces, to_polygons(layerm->fill_surfaces));
} }