From 409900a4c9787a4bf653487f944c6ec22c31911e Mon Sep 17 00:00:00 2001 From: Filip Sykala - NTB T15p Date: Mon, 10 Feb 2025 17:23:37 +0100 Subject: [PATCH] Fix for SPE-2674 1/2 issue in file SPE-2674_mini13-armor-runner-v8.3mf --- src/libslic3r/SLA/SupportIslands/UniformSupportIsland.cpp | 8 ++++---- tests/data/sla_islands/SPE-2674.svg | 5 +++++ tests/sla_print/sla_supptgen_tests.cpp | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 tests/data/sla_islands/SPE-2674.svg diff --git a/src/libslic3r/SLA/SupportIslands/UniformSupportIsland.cpp b/src/libslic3r/SLA/SupportIslands/UniformSupportIsland.cpp index 65a2800796..a627f688cc 100644 --- a/src/libslic3r/SLA/SupportIslands/UniformSupportIsland.cpp +++ b/src/libslic3r/SLA/SupportIslands/UniformSupportIsland.cpp @@ -2048,13 +2048,13 @@ coord_t get_longest_distance(const IslandPartChanges& changes, Position* center return farest_from_change; const NodeDistance *prev_node_distance = farest_distnace; - const NodeDistance *node_distance = nullptr; + const NodeDistance *node_distance = prev_node_distance; // iterate over longest path to find center(half distance) - while (prev_node_distance->shortest_distances[change_index].distance > half_distance) { + while (prev_node_distance->shortest_distances[change_index].distance >= half_distance) { node_distance = prev_node_distance; size_t prev_index = node_distance->shortest_distances[change_index].prev_node_distance_index; // case with center on change neighbor is already handled, so prev_index should be valid - assert(prev_index != no_index); + assert(prev_index != no_index && prev_index> merge_negihbor(IslandParts &island_parts, } } - return std::make_pair(index, remove_indices); + return std::make_pair(modified_index, remove_indices); } /// diff --git a/tests/data/sla_islands/SPE-2674.svg b/tests/data/sla_islands/SPE-2674.svg new file mode 100644 index 0000000000..c548517c22 --- /dev/null +++ b/tests/data/sla_islands/SPE-2674.svg @@ -0,0 +1,5 @@ + + + diff --git a/tests/sla_print/sla_supptgen_tests.cpp b/tests/sla_print/sla_supptgen_tests.cpp index bdca5c6a24..4af6375211 100644 --- a/tests/sla_print/sla_supptgen_tests.cpp +++ b/tests/sla_print/sla_supptgen_tests.cpp @@ -389,6 +389,7 @@ ExPolygons createTestIslands(double size) ExPolygon(PolygonUtils::create_equilateral_triangle(scale_(18.6))), create_cylinder_bottom_slice(), load_svg(dir + "lm_issue.svg"), // change from thick to thin and vice versa on circle + load_svg(dir + "SPE-2674.svg"), // center of longest path lay inside of the VD node // still problem // three support points