ENH: inner-out-inner wal seq

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Idd2205f2b72a8f471927c9e3a38415013548f09e
This commit is contained in:
qing.zhang 2023-01-09 19:48:31 +08:00 committed by Lane.Wei
parent e144fce341
commit db873eb99b
3 changed files with 27 additions and 1 deletions

View file

@ -959,6 +959,17 @@ void PerimeterGenerator::process_classic()
this->object_config->brim_type == BrimType::btOuterOnly &&
this->object_config->brim_width.value > 0))
entities.reverse();
//BBS. adjust wall generate seq
else if (this->print_config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill)
if (entities.entities.size() > 1){
int last_outer=0;
int outer = 0;
for (; outer < entities.entities.size(); ++outer)
if (entities.entities[outer]->role() == erExternalPerimeter && outer - last_outer > 1) {
std::swap(entities.entities[outer], entities.entities[outer - 1]);
last_outer = outer;
}
}
// append perimeters for this slice as a collection
if (! entities.empty())
this->loops->append(entities);
@ -1279,6 +1290,17 @@ void PerimeterGenerator::process_arachne()
}
}
}
// BBS. adjust wall generate seq
if (this->print_config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill)
if (ordered_extrusions.size() > 1) {
int last_outer = 0;
int outer = 0;
for (; outer < ordered_extrusions.size(); ++outer)
if (ordered_extrusions[outer].extrusion->inset_idx == 0 && outer - last_outer > 1) {
std::swap(ordered_extrusions[outer], ordered_extrusions[outer - 1]);
last_outer = outer;
}
}
if (ExtrusionEntityCollection extrusion_coll = traverse_extrusions(*this, ordered_extrusions); !extrusion_coll.empty())
this->loops->append(extrusion_coll);