mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-16 08:55:57 +08:00
Check for loop only when it is not start edge of thin part
This commit is contained in:
parent
3daed2f02d
commit
15f7b23966
@ -579,17 +579,19 @@ void create_supports_for_thin_part(
|
|||||||
|
|
||||||
// detect loop on island part
|
// detect loop on island part
|
||||||
const Neighbor *twin = VoronoiGraphUtils::get_twin(*curr.neighbor);
|
const Neighbor *twin = VoronoiGraphUtils::get_twin(*curr.neighbor);
|
||||||
if (auto process_it = std::find_if(process.begin(), process.end(),
|
if (curr.neighbor != part.center.neighbor){ // not first neighbor
|
||||||
|
if (auto process_it = std::find_if(process.begin(), process.end(),
|
||||||
[twin](const SupportIn &p) { return p.neighbor == twin; });
|
[twin](const SupportIn &p) { return p.neighbor == twin; });
|
||||||
process_it != process.end()) { // self loop detected
|
process_it != process.end()) { // self loop detected
|
||||||
if (curr.support_in < half_support_distance) {
|
if (curr.support_in < half_support_distance) {
|
||||||
Position position{curr.neighbor, 1.}; // fine tune position by alignment
|
Position position{curr.neighbor, 1.}; // fine tune position by alignment
|
||||||
results.push_back(std::make_unique<SupportCenterIslandPoint>(
|
results.push_back(std::make_unique<SupportCenterIslandPoint>(
|
||||||
position, &config, SupportIslandPoint::Type::thin_part_loop));
|
position, &config, SupportIslandPoint::Type::thin_part_loop));
|
||||||
|
}
|
||||||
|
process.erase(process_it);
|
||||||
|
curr.neighbor = nullptr;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
process.erase(process_it);
|
|
||||||
curr.neighbor = nullptr;
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// next neighbor is short cut to not push back and pop new_starts
|
// next neighbor is short cut to not push back and pop new_starts
|
||||||
|
Loading…
x
Reference in New Issue
Block a user