OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GCode::ObjectByExtruder::Island::Region Struct Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/GCode.hpp>

Collaboration diagram for Slic3r::GCode::ObjectByExtruder::Island::Region:

Public Types

enum  Type { PERIMETERS , INFILL }

Public Member Functions

void append (const Type type, const ExtrusionEntityCollection *eec, const WipingExtrusions::ExtruderPerCopy *copy_extruders)

Public Attributes

std::vector< const ExtrusionEntity * > perimeters
std::vector< const ExtrusionEntity * > infills
std::vector< const WipingExtrusions::ExtruderPerCopy * > infills_overrides
std::vector< const WipingExtrusions::ExtruderPerCopy * > perimeters_overrides

Detailed Description

Member Enumeration Documentation

◆ Type

Enumerator
PERIMETERS 
INFILL 
616 {
618 INFILL,
619 };

Member Function Documentation

◆ append()

void Slic3r::GCode::ObjectByExtruder::Island::Region::append ( const Type type,
const ExtrusionEntityCollection * eec,
const WipingExtrusions::ExtruderPerCopy * copy_extruders )
11581{
11582 // We are going to manipulate either perimeters or infills, exactly in the same way. Let's create pointers to the proper structure to not repeat ourselves:
11583 std::vector<const ExtrusionEntity*>* perimeters_or_infills;
11584 std::vector<const WipingExtrusions::ExtruderPerCopy*>* perimeters_or_infills_overrides;
11585
11586 switch (type) {
11587 case PERIMETERS:
11588 perimeters_or_infills = &perimeters;
11589 perimeters_or_infills_overrides = &perimeters_overrides;
11590 break;
11591 case INFILL:
11592 perimeters_or_infills = &infills;
11593 perimeters_or_infills_overrides = &infills_overrides;
11594 break;
11595 default:
11596 throw Slic3r::InvalidArgument("Unknown parameter!");
11597 }
11598
11599 // First we append the entities, there are eec->entities.size() of them:
11600 size_t old_size = perimeters_or_infills->size();
11601 size_t new_size = old_size + (eec->can_sort() ? eec->entities.size() : 1);
11602 perimeters_or_infills->reserve(new_size);
11603 if (eec->can_sort()) {
11604 for (auto* ee : eec->entities)
11605 perimeters_or_infills->emplace_back(ee);
11606 } else
11607 perimeters_or_infills->emplace_back(eec);
11608
11609 if (copies_extruder != nullptr) {
11610 // Don't reallocate overrides if not needed.
11611 // Missing overrides are implicitely considered non-overridden.
11612 perimeters_or_infills_overrides->reserve(new_size);
11613 perimeters_or_infills_overrides->resize(old_size, nullptr);
11614 perimeters_or_infills_overrides->resize(new_size, copies_extruder);
11615 }
11616}
std::vector< const WipingExtrusions::ExtruderPerCopy * > perimeters_overrides
Definition GCode.hpp:614
std::vector< const ExtrusionEntity * > perimeters
Definition GCode.hpp:609
std::vector< const ExtrusionEntity * > infills
Definition GCode.hpp:611
std::vector< const WipingExtrusions::ExtruderPerCopy * > infills_overrides
Definition GCode.hpp:613

References Slic3r::ExtrusionEntityCollection::can_sort(), Slic3r::ExtrusionEntityCollection::entities, INFILL, infills, infills_overrides, PERIMETERS, perimeters, and perimeters_overrides.

Here is the call graph for this function:

Member Data Documentation

◆ infills

std::vector<const ExtrusionEntity*> Slic3r::GCode::ObjectByExtruder::Island::Region::infills

Referenced by append().

◆ infills_overrides

std::vector<const WipingExtrusions::ExtruderPerCopy*> Slic3r::GCode::ObjectByExtruder::Island::Region::infills_overrides

Referenced by append().

◆ perimeters

std::vector<const ExtrusionEntity*> Slic3r::GCode::ObjectByExtruder::Island::Region::perimeters

Referenced by append().

◆ perimeters_overrides

std::vector<const WipingExtrusions::ExtruderPerCopy*> Slic3r::GCode::ObjectByExtruder::Island::Region::perimeters_overrides

Referenced by append().


The documentation for this struct was generated from the following files:
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/GCode.hpp
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/GCode.cpp