mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-12 02:29:04 +08:00
Fixed wrong direction of bridges after "ensure vertical wall thickness"
rework. Fixes SPE-1598
This commit is contained in:
parent
5277ed502d
commit
66abc34e88
@ -291,22 +291,24 @@ Surfaces expand_bridges_detect_orientations(
|
|||||||
uint32_t src_id = it->src_id;
|
uint32_t src_id = it->src_id;
|
||||||
for (++ it; it != bridge_expansions.end() && it->src_id == src_id; ++ it) ;
|
for (++ it; it != bridge_expansions.end() && it->src_id == src_id; ++ it) ;
|
||||||
}
|
}
|
||||||
for (uint32_t bridge_id = 0; bridge_id < uint32_t(bridges.size()); ++ bridge_id) {
|
for (uint32_t bridge_id = 0; bridge_id < uint32_t(bridges.size()); ++ bridge_id)
|
||||||
acc.clear();
|
if (group_id(bridge_id) == bridge_id) {
|
||||||
for (uint32_t bridge_id2 = bridge_id; bridge_id2 < uint32_t(bridges.size()); ++ bridge_id2)
|
// Head of the group.
|
||||||
if (group_id(bridge_id) == bridge_id) {
|
acc.clear();
|
||||||
append(acc, to_polygons(std::move(bridges[bridge_id2].expolygon)));
|
for (uint32_t bridge_id2 = bridge_id; bridge_id2 < uint32_t(bridges.size()); ++ bridge_id2)
|
||||||
auto it_bridge_expansion = bridges[bridge_id2].bridge_expansion_begin;
|
if (group_id(bridge_id2) == bridge_id) {
|
||||||
assert(it_bridge_expansion == bridge_expansions.end() || it_bridge_expansion->src_id == bridge_id2);
|
append(acc, to_polygons(std::move(bridges[bridge_id2].expolygon)));
|
||||||
for (; it_bridge_expansion != bridge_expansions.end() && it_bridge_expansion->src_id == bridge_id2; ++ it_bridge_expansion)
|
auto it_bridge_expansion = bridges[bridge_id2].bridge_expansion_begin;
|
||||||
append(acc, to_polygons(std::move(it_bridge_expansion->expolygon)));
|
assert(it_bridge_expansion == bridge_expansions.end() || it_bridge_expansion->src_id == bridge_id2);
|
||||||
}
|
for (; it_bridge_expansion != bridge_expansions.end() && it_bridge_expansion->src_id == bridge_id2; ++ it_bridge_expansion)
|
||||||
//FIXME try to be smart and pick the best bridging angle for all?
|
append(acc, to_polygons(std::move(it_bridge_expansion->expolygon)));
|
||||||
templ.bridge_angle = bridges[bridge_id].angle;
|
}
|
||||||
// without safety offset, artifacts are generated (GH #2494)
|
//FIXME try to be smart and pick the best bridging angle for all?
|
||||||
for (ExPolygon &ex : union_safety_offset_ex(acc))
|
templ.bridge_angle = bridges[bridge_id].angle;
|
||||||
out.emplace_back(templ, std::move(ex));
|
// without safety offset, artifacts are generated (GH #2494)
|
||||||
}
|
for (ExPolygon &ex : union_safety_offset_ex(acc))
|
||||||
|
out.emplace_back(templ, std::move(ex));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clip the shells by the expanded bridges.
|
// Clip the shells by the expanded bridges.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user