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