mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-16 01:35:55 +08:00
Sort infills before extruding
This commit is contained in:
parent
4e7d5453f6
commit
b30105d2ea
@ -2899,12 +2899,22 @@ void GCodeGenerator::process_layer_single_object(
|
|||||||
m_config.apply(region.config());
|
m_config.apply(region.config());
|
||||||
const auto extrusion_name = ironing ? "ironing"sv : "infill"sv;
|
const auto extrusion_name = ironing ? "ironing"sv : "infill"sv;
|
||||||
const Point* start_near = this->last_position ? &(*(this->last_position)) : nullptr;
|
const Point* start_near = this->last_position ? &(*(this->last_position)) : nullptr;
|
||||||
for (const ExtrusionEntityReference &fill : chain_extrusion_references(temp_fill_extrusions, start_near))
|
|
||||||
|
std::vector<ExtrusionEntityReference> sorted_extrusions;
|
||||||
|
|
||||||
|
for (const ExtrusionEntityReference &fill : chain_extrusion_references(temp_fill_extrusions, start_near)) {
|
||||||
if (auto *eec = dynamic_cast<const ExtrusionEntityCollection*>(&fill.extrusion_entity()); eec) {
|
if (auto *eec = dynamic_cast<const ExtrusionEntityCollection*>(&fill.extrusion_entity()); eec) {
|
||||||
for (const ExtrusionEntityReference &ee : chain_extrusion_references(*eec, start_near, fill.flipped()))
|
for (const ExtrusionEntityReference &ee : chain_extrusion_references(*eec, start_near, fill.flipped())) {
|
||||||
gcode += this->extrude_entity(ee, smooth_path_cache, extrusion_name);
|
sorted_extrusions.push_back(ee);
|
||||||
} else
|
}
|
||||||
gcode += this->extrude_entity(fill, smooth_path_cache, extrusion_name);
|
} else {
|
||||||
|
sorted_extrusions.push_back(fill);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const ExtrusionEntityReference &ee : sorted_extrusions) {
|
||||||
|
gcode += this->extrude_entity(ee, smooth_path_cache, extrusion_name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user