Fixed compilation on OSX
Fixed incorrect clear of LayerIslands.
This commit is contained in:
Vojtech Bubnik 2022-11-07 17:26:48 +01:00
parent f24b4e86a9
commit 28f8997dd3
3 changed files with 9 additions and 7 deletions

View file

@ -2399,7 +2399,8 @@ void GCode::process_layer_single_object(
for (uint32_t perimeter_id : island.perimeters)
if (const auto *eec = static_cast<const ExtrusionEntityCollection*>(layerm.perimeters().entities[perimeter_id]);
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) {
first = false;
init_layer_delayed();

View file

@ -188,7 +188,7 @@ void ToolOrdering::initialize_layers(std::vector<coordf_t> &zs)
}
// 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)))
return false;
@ -631,7 +631,7 @@ void WipingExtrusions::set_extruder_override(const ExtrusionEntity* entity, size
}
// 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)
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
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)
if (!print_config.filament_soluble.get_at(*extruders_it))

View file

@ -398,6 +398,9 @@ void Layer::make_perimeters()
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)
if (size_t region_id = layerm - m_regions.begin(); ! done[region_id]) {
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.
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];
// Bounding boxes of fill_expolygons.
@ -705,6 +705,7 @@ void Layer::sort_perimeters_into_islands(
perimeter_slices_queue.pop_back();
}
}
assert(perimeter_slices_queue.empty());
}
void Layer::export_region_slices_to_svg(const char *path) const