mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-11 16:57:53 -06:00
Refactored ExtrusionEntityCollection::flatten()
This commit is contained in:
parent
c38e537adc
commit
83b6b82188
2 changed files with 13 additions and 14 deletions
|
@ -11,7 +11,7 @@ ExtrusionEntityCollection::ExtrusionEntityCollection(const ExtrusionPaths &paths
|
||||||
this->append(paths);
|
this->append(paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
ExtrusionEntityCollection& ExtrusionEntityCollection::operator= (const ExtrusionEntityCollection &other)
|
ExtrusionEntityCollection& ExtrusionEntityCollection::operator=(const ExtrusionEntityCollection &other)
|
||||||
{
|
{
|
||||||
this->entities = other.entities;
|
this->entities = other.entities;
|
||||||
for (size_t i = 0; i < this->entities.size(); ++i)
|
for (size_t i = 0; i < this->entities.size(); ++i)
|
||||||
|
@ -175,20 +175,20 @@ size_t ExtrusionEntityCollection::items_count() const
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns a single vector of pointers to all non-collection items contained in this one.
|
// Returns a single vector of pointers to all non-collection items contained in this one.
|
||||||
void ExtrusionEntityCollection::flatten(ExtrusionEntityCollection* retval) const
|
|
||||||
{
|
|
||||||
for (const ExtrusionEntity *entity : this->entities)
|
|
||||||
if (entity->is_collection())
|
|
||||||
retval->append(static_cast<const ExtrusionEntityCollection*>(entity)->flatten().entities);
|
|
||||||
else
|
|
||||||
retval->append(*entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
ExtrusionEntityCollection ExtrusionEntityCollection::flatten() const
|
ExtrusionEntityCollection ExtrusionEntityCollection::flatten() const
|
||||||
{
|
{
|
||||||
ExtrusionEntityCollection coll;
|
struct Flatten {
|
||||||
this->flatten(&coll);
|
ExtrusionEntityCollection out;
|
||||||
return coll;
|
void recursive_do(const ExtrusionEntityCollection &collection) {
|
||||||
|
for (const ExtrusionEntity* entity : collection.entities)
|
||||||
|
if (entity->is_collection())
|
||||||
|
this->recursive_do(*static_cast<const ExtrusionEntityCollection*>(entity));
|
||||||
|
else
|
||||||
|
out.append(*entity);
|
||||||
|
}
|
||||||
|
} flatten;
|
||||||
|
flatten.recursive_do(*this);
|
||||||
|
return flatten.out;
|
||||||
}
|
}
|
||||||
|
|
||||||
double ExtrusionEntityCollection::min_mm3_per_mm() const
|
double ExtrusionEntityCollection::min_mm3_per_mm() const
|
||||||
|
|
|
@ -85,7 +85,6 @@ public:
|
||||||
Polygons polygons_covered_by_spacing(const float scaled_epsilon = 0.f) const
|
Polygons polygons_covered_by_spacing(const float scaled_epsilon = 0.f) const
|
||||||
{ Polygons out; this->polygons_covered_by_spacing(out, scaled_epsilon); return out; }
|
{ Polygons out; this->polygons_covered_by_spacing(out, scaled_epsilon); return out; }
|
||||||
size_t items_count() const;
|
size_t items_count() const;
|
||||||
void flatten(ExtrusionEntityCollection* retval) const;
|
|
||||||
ExtrusionEntityCollection flatten() const;
|
ExtrusionEntityCollection flatten() const;
|
||||||
double min_mm3_per_mm() const;
|
double min_mm3_per_mm() const;
|
||||||
double total_volume() const override { double volume=0.; for (const auto& ent : entities) volume+=ent->total_volume(); return volume; }
|
double total_volume() const override { double volume=0.; for (const auto& ent : entities) volume+=ent->total_volume(); return volume; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue