11522{
11523 bool has_overrides = false;
11525 if (! reg.infills_overrides.empty() || ! reg.perimeters_overrides.empty()) {
11526 has_overrides = true;
11527 break;
11528 }
11529
11530
11531 by_region_per_copy_cache.clear();
11532
11533 if (! has_overrides)
11534
11535 return wiping_entities ? by_region_per_copy_cache : this->
by_region;
11536
11537
11538
11539
11540
11542 by_region_per_copy_cache.emplace_back();
11543
11544
11545
11546 for (int iter = 0; iter < 2; ++iter) {
11547 const std::vector<const ExtrusionEntity*>& entities = (iter ? reg.infills : reg.perimeters);
11548 std::vector<const ExtrusionEntity*>& target_eec = (iter ? by_region_per_copy_cache.back().infills : by_region_per_copy_cache.back().perimeters);
11549 const std::vector<const WipingExtrusions::ExtruderPerCopy*>& overrides = (iter ? reg.infills_overrides : reg.perimeters_overrides);
11550
11551
11552
11553 if (wiping_entities) {
11554
11555 for (unsigned int i = 0; i < overrides.size(); ++ i) {
11557
11558 if (this_override != nullptr && (*this_override)[copy] == int(extruder))
11559 target_eec.emplace_back(entities[i]);
11560 }
11561 } else {
11562
11563 unsigned int i = 0;
11564 for (; i < overrides.size(); ++ i) {
11566
11567 if (this_override == nullptr || (*this_override)[copy] == -int(extruder)-1)
11568 target_eec.emplace_back(entities[i]);
11569 }
11570 for (; i < entities.size(); ++ i)
11571 target_eec.emplace_back(entities[i]);
11572 }
11573 }
11574 }
11575 return by_region_per_copy_cache;
11576}
boost::container::small_vector< int32_t, 3 > ExtruderPerCopy
Definition ToolOrdering.hpp:49
std::vector< Region > by_region
Definition GCode.hpp:626