mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-15 03:15:58 +08:00
Follow-up to f24b4e86a9612fcf4cba28a5ae9f24db13f1b171:
Fixed compilation on OSX Fixed incorrect clear of LayerIslands.
This commit is contained in:
parent
f24b4e86a9
commit
28f8997dd3
@ -2399,7 +2399,8 @@ void GCode::process_layer_single_object(
|
|||||||
for (uint32_t perimeter_id : island.perimeters)
|
for (uint32_t perimeter_id : island.perimeters)
|
||||||
if (const auto *eec = static_cast<const ExtrusionEntityCollection*>(layerm.perimeters().entities[perimeter_id]);
|
if (const auto *eec = static_cast<const ExtrusionEntityCollection*>(layerm.perimeters().entities[perimeter_id]);
|
||||||
shall_print_this_extrusion_collection(eec, region)) {
|
shall_print_this_extrusion_collection(eec, region)) {
|
||||||
assert(! eec->can_reverse());
|
// This may not apply to Arachne, but maybe the Arachne gap fill should disable reverse as well?
|
||||||
|
// assert(! eec->can_reverse());
|
||||||
if (first) {
|
if (first) {
|
||||||
first = false;
|
first = false;
|
||||||
init_layer_delayed();
|
init_layer_delayed();
|
||||||
|
@ -188,7 +188,7 @@ void ToolOrdering::initialize_layers(std::vector<coordf_t> &zs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Decides whether this entity could be overridden
|
// Decides whether this entity could be overridden
|
||||||
static [[nodiscard]] bool is_overriddable(const ExtrusionEntityCollection& eec, const LayerTools& lt, const PrintConfig& print_config, const PrintObject& object, const PrintRegion& region)
|
[[nodiscard]] static bool is_overriddable(const ExtrusionEntityCollection& eec, const LayerTools& lt, const PrintConfig& print_config, const PrintObject& object, const PrintRegion& region)
|
||||||
{
|
{
|
||||||
if (print_config.filament_soluble.get_at(lt.extruder(eec, region)))
|
if (print_config.filament_soluble.get_at(lt.extruder(eec, region)))
|
||||||
return false;
|
return false;
|
||||||
@ -631,7 +631,7 @@ void WipingExtrusions::set_extruder_override(const ExtrusionEntity* entity, size
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Finds first non-soluble extruder on the layer
|
// Finds first non-soluble extruder on the layer
|
||||||
static [[nodiscard]] int first_nonsoluble_extruder_on_layer(const PrintConfig& print_config, const LayerTools& layer_tools)
|
[[nodiscard]] static int first_nonsoluble_extruder_on_layer(const PrintConfig& print_config, const LayerTools& layer_tools)
|
||||||
{
|
{
|
||||||
for (auto extruders_it = layer_tools.extruders.begin(); extruders_it != layer_tools.extruders.end(); ++extruders_it)
|
for (auto extruders_it = layer_tools.extruders.begin(); extruders_it != layer_tools.extruders.end(); ++extruders_it)
|
||||||
if (!print_config.filament_soluble.get_at(*extruders_it))
|
if (!print_config.filament_soluble.get_at(*extruders_it))
|
||||||
@ -641,7 +641,7 @@ static [[nodiscard]] int first_nonsoluble_extruder_on_layer(const PrintConfig& p
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Finds last non-soluble extruder on the layer
|
// Finds last non-soluble extruder on the layer
|
||||||
static [[nodiscard]] int last_nonsoluble_extruder_on_layer(const PrintConfig& print_config, const LayerTools& layer_tools)
|
[[nodiscard]] static int last_nonsoluble_extruder_on_layer(const PrintConfig& print_config, const LayerTools& layer_tools)
|
||||||
{
|
{
|
||||||
for (auto extruders_it = layer_tools.extruders.rbegin(); extruders_it != layer_tools.extruders.rend(); ++extruders_it)
|
for (auto extruders_it = layer_tools.extruders.rbegin(); extruders_it != layer_tools.extruders.rend(); ++extruders_it)
|
||||||
if (!print_config.filament_soluble.get_at(*extruders_it))
|
if (!print_config.filament_soluble.get_at(*extruders_it))
|
||||||
|
@ -398,6 +398,9 @@ void Layer::make_perimeters()
|
|||||||
layerm.m_fill_expolygons_composite_bboxes.clear();
|
layerm.m_fill_expolygons_composite_bboxes.clear();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
for (LayerSlice &lslice : this->lslices_ex)
|
||||||
|
lslice.islands.clear();
|
||||||
|
|
||||||
for (LayerRegionPtrs::iterator layerm = m_regions.begin(); layerm != m_regions.end(); ++ layerm)
|
for (LayerRegionPtrs::iterator layerm = m_regions.begin(); layerm != m_regions.end(); ++ layerm)
|
||||||
if (size_t region_id = layerm - m_regions.begin(); ! done[region_id]) {
|
if (size_t region_id = layerm - m_regions.begin(); ! done[region_id]) {
|
||||||
layer_region_reset_perimeters(**layerm);
|
layer_region_reset_perimeters(**layerm);
|
||||||
@ -496,9 +499,6 @@ void Layer::sort_perimeters_into_islands(
|
|||||||
// If the current layer consists of multiple regions, then the fill_expolygons above are split by the source LayerRegion surfaces.
|
// If the current layer consists of multiple regions, then the fill_expolygons above are split by the source LayerRegion surfaces.
|
||||||
const std::vector<uint32_t> &layer_region_ids)
|
const std::vector<uint32_t> &layer_region_ids)
|
||||||
{
|
{
|
||||||
for (LayerSlice &lslice : this->lslices_ex)
|
|
||||||
lslice.islands.clear();
|
|
||||||
|
|
||||||
LayerRegion &this_layer_region = *m_regions[region_id];
|
LayerRegion &this_layer_region = *m_regions[region_id];
|
||||||
|
|
||||||
// Bounding boxes of fill_expolygons.
|
// Bounding boxes of fill_expolygons.
|
||||||
@ -705,6 +705,7 @@ void Layer::sort_perimeters_into_islands(
|
|||||||
perimeter_slices_queue.pop_back();
|
perimeter_slices_queue.pop_back();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
assert(perimeter_slices_queue.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Layer::export_region_slices_to_svg(const char *path) const
|
void Layer::export_region_slices_to_svg(const char *path) const
|
||||||
|
Loading…
x
Reference in New Issue
Block a user