mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-14 05:45:57 +08:00
Merge branch 'lh_crash_SPE-1865'
This commit is contained in:
commit
ab49cb252b
@ -543,19 +543,18 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive:
|
||||
flow_mm3_per_mm = new_flow.mm3_per_mm();
|
||||
flow_width = new_flow.width();
|
||||
}
|
||||
auto fill_begin = uint32_t(layerm.fills().size());
|
||||
// Save into layer.
|
||||
if (ExtrusionEntityCollection *eec = nullptr; params.use_arachne) {
|
||||
ExtrusionEntityCollection *eec = new ExtrusionEntityCollection();
|
||||
auto fill_begin = uint32_t(layerm.fills().size());
|
||||
// Only concentric fills are not sorted.
|
||||
eec->no_sort = f->no_sort();
|
||||
if (params.use_arachne) {
|
||||
for (const ThickPolyline &thick_polyline : thick_polylines) {
|
||||
Flow new_flow = surface_fill.params.flow.with_spacing(float(f->spacing));
|
||||
|
||||
ExtrusionMultiPath multi_path = PerimeterGenerator::thick_polyline_to_multi_path(thick_polyline, surface_fill.params.extrusion_role, new_flow, scaled<float>(0.05), float(SCALED_EPSILON));
|
||||
// Append paths to collection.
|
||||
if (!multi_path.empty()) {
|
||||
layerm.m_fills.entities.push_back(eec = new ExtrusionEntityCollection());
|
||||
// Only concentric fills are not sorted.
|
||||
eec->no_sort = f->no_sort();
|
||||
|
||||
if (multi_path.paths.front().first_point() == multi_path.paths.back().last_point())
|
||||
eec->entities.emplace_back(new ExtrusionLoop(std::move(multi_path.paths)));
|
||||
else
|
||||
@ -563,17 +562,19 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive:
|
||||
}
|
||||
}
|
||||
|
||||
if (!eec->empty())
|
||||
layerm.m_fills.entities.push_back(eec);
|
||||
else
|
||||
delete eec;
|
||||
|
||||
thick_polylines.clear();
|
||||
} else {
|
||||
layerm.m_fills.entities.push_back(eec = new ExtrusionEntityCollection());
|
||||
// Only concentric fills are not sorted.
|
||||
eec->no_sort = f->no_sort();
|
||||
|
||||
extrusion_entities_append_paths(
|
||||
eec->entities, std::move(polylines),
|
||||
ExtrusionAttributes{ surface_fill.params.extrusion_role,
|
||||
ExtrusionFlow{ flow_mm3_per_mm, float(flow_width), surface_fill.params.flow.height() }
|
||||
});
|
||||
layerm.m_fills.entities.push_back(eec);
|
||||
}
|
||||
insert_fills_into_islands(*this, uint32_t(surface_fill.region_id), fill_begin, uint32_t(layerm.fills().size()));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user