mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-08 23:46:24 -06:00
Prevent crashes from edge cases when slicing complex small model with "big" fuzzy skin is used
This commit is contained in:
parent
afabd955ac
commit
d88dda8131
2 changed files with 2 additions and 0 deletions
|
@ -405,6 +405,7 @@ static ExtrusionEntityCollection traverse_loops(const PerimeterGenerator &perime
|
||||||
|
|
||||||
// Reapply the nearest point search for starting point.
|
// Reapply the nearest point search for starting point.
|
||||||
// We allow polyline reversal because Clipper may have randomly reversed polylines during clipping.
|
// We allow polyline reversal because Clipper may have randomly reversed polylines during clipping.
|
||||||
|
if(paths.empty()) continue;
|
||||||
chain_and_reorder_extrusion_paths(paths, &paths.front().first_point());
|
chain_and_reorder_extrusion_paths(paths, &paths.front().first_point());
|
||||||
// smothing the overhang degree
|
// smothing the overhang degree
|
||||||
// merge small path between paths which have same overhang degree
|
// merge small path between paths which have same overhang degree
|
||||||
|
|
|
@ -1042,6 +1042,7 @@ std::vector<std::pair<size_t, bool>> chain_extrusion_paths(std::vector<Extrusion
|
||||||
void reorder_extrusion_paths(std::vector<ExtrusionPath> &extrusion_paths, const std::vector<std::pair<size_t, bool>> &chain)
|
void reorder_extrusion_paths(std::vector<ExtrusionPath> &extrusion_paths, const std::vector<std::pair<size_t, bool>> &chain)
|
||||||
{
|
{
|
||||||
assert(extrusion_paths.size() == chain.size());
|
assert(extrusion_paths.size() == chain.size());
|
||||||
|
if(extrusion_paths.empty()) return;
|
||||||
std::vector<ExtrusionPath> out;
|
std::vector<ExtrusionPath> out;
|
||||||
out.reserve(extrusion_paths.size());
|
out.reserve(extrusion_paths.size());
|
||||||
for (const std::pair<size_t, bool> &idx : chain) {
|
for (const std::pair<size_t, bool> &idx : chain) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue