Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Slic3r::ExtrusionMultiPath Class Reference

#include <src/libslic3r/ExtrusionEntity.hpp>

+ Inheritance diagram for Slic3r::ExtrusionMultiPath:
+ Collaboration diagram for Slic3r::ExtrusionMultiPath:

Public Member Functions

 ExtrusionMultiPath ()
 
 ExtrusionMultiPath (const ExtrusionMultiPath &rhs)
 
 ExtrusionMultiPath (ExtrusionMultiPath &&rhs)
 
 ExtrusionMultiPath (const ExtrusionPaths &paths)
 
 ExtrusionMultiPath (const ExtrusionPath &path)
 
ExtrusionMultiPathoperator= (const ExtrusionMultiPath &rhs)
 
ExtrusionMultiPathoperator= (ExtrusionMultiPath &&rhs)
 
bool is_loop () const override
 
bool can_reverse () const override
 
ExtrusionEntityclone () const override
 
ExtrusionEntityclone_move () override
 
void reverse () override
 
const Pointfirst_point () const override
 
const Pointlast_point () const override
 
const Pointmiddle_point () const override
 
size_t size () const
 
bool empty () const
 
double length () const override
 
ExtrusionRole role () const override
 
void polygons_covered_by_width (Polygons &out, const float scaled_epsilon) const override
 
void polygons_covered_by_spacing (Polygons &out, const float scaled_epsilon) const override
 
Polygons polygons_covered_by_width (const float scaled_epsilon=0.f) const
 
Polygons polygons_covered_by_spacing (const float scaled_epsilon=0.f) const
 
double min_mm3_per_mm () const override
 
Polyline as_polyline () const override
 
void collect_polylines (Polylines &dst) const override
 
void collect_points (Points &dst) const override
 
double total_volume () const override
 
virtual bool is_collection () const
 
virtual Polylines as_polylines () const
 

Public Attributes

ExtrusionPaths paths
 

Detailed Description

Constructor & Destructor Documentation

◆ ExtrusionMultiPath() [1/5]

Slic3r::ExtrusionMultiPath::ExtrusionMultiPath ( )
inline
143{}

Referenced by clone(), and clone_move().

+ Here is the caller graph for this function:

◆ ExtrusionMultiPath() [2/5]

Slic3r::ExtrusionMultiPath::ExtrusionMultiPath ( const ExtrusionMultiPath rhs)
inline
144: paths(rhs.paths) {}
ExtrusionPaths paths
Definition ExtrusionEntity.hpp:141

◆ ExtrusionMultiPath() [3/5]

Slic3r::ExtrusionMultiPath::ExtrusionMultiPath ( ExtrusionMultiPath &&  rhs)
inline
145: paths(std::move(rhs.paths)) {}

◆ ExtrusionMultiPath() [4/5]

Slic3r::ExtrusionMultiPath::ExtrusionMultiPath ( const ExtrusionPaths paths)
inline
146: paths(paths) {}

◆ ExtrusionMultiPath() [5/5]

Slic3r::ExtrusionMultiPath::ExtrusionMultiPath ( const ExtrusionPath path)
inline
147{ this->paths.push_back(path); }

Member Function Documentation

◆ as_polyline()

Polyline Slic3r::ExtrusionMultiPath::as_polyline ( ) const
overridevirtual

Implements Slic3r::ExtrusionEntity.

95{
96 Polyline out;
97 if (! paths.empty()) {
98 size_t len = 0;
99 for (size_t i_path = 0; i_path < paths.size(); ++ i_path) {
100 assert(! paths[i_path].polyline.points.empty());
101 assert(i_path == 0 || paths[i_path - 1].polyline.points.back() == paths[i_path].polyline.points.front());
102 len += paths[i_path].polyline.points.size();
103 }
104 // The connecting points between the segments are equal.
105 len -= paths.size() - 1;
106 assert(len > 0);
107 out.points.reserve(len);
108 out.points.push_back(paths.front().polyline.points.front());
109 for (size_t i_path = 0; i_path < paths.size(); ++ i_path)
110 out.points.insert(out.points.end(), paths[i_path].polyline.points.begin() + 1, paths[i_path].polyline.points.end());
111 }
112 return out;
113}

References paths, and Slic3r::MultiPoint::points.

Referenced by collect_polylines().

+ Here is the caller graph for this function:

◆ as_polylines()

virtual Polylines Slic3r::ExtrusionEntity::as_polylines ( ) const
inlinevirtualinherited
53{ Polylines dst; this->collect_polylines(dst); return dst; }
virtual void collect_polylines(Polylines &dst) const =0
std::vector< Polyline > Polylines
Definition Polyline.hpp:14

References Slic3r::ExtrusionEntity::collect_polylines().

Referenced by Slic3r::FFFSupport::remove_bridges_from_contacts().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ can_reverse()

bool Slic3r::ExtrusionMultiPath::can_reverse ( ) const
inlineoverridevirtual

Reimplemented from Slic3r::ExtrusionEntity.

153{ return true; }

◆ clone()

ExtrusionEntity * Slic3r::ExtrusionMultiPath::clone ( ) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

154{ return new ExtrusionMultiPath(*this); }
ExtrusionMultiPath()
Definition ExtrusionEntity.hpp:143

References ExtrusionMultiPath().

+ Here is the call graph for this function:

◆ clone_move()

ExtrusionEntity * Slic3r::ExtrusionMultiPath::clone_move ( )
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

156{ return new ExtrusionMultiPath(std::move(*this)); }

References ExtrusionMultiPath().

+ Here is the call graph for this function:

◆ collect_points()

void Slic3r::ExtrusionMultiPath::collect_points ( Points dst) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

180 {
181 size_t n = std::accumulate(paths.begin(), paths.end(), 0, [](const size_t n, const ExtrusionPath &p){ return n + p.polyline.size(); });
182 dst.reserve(dst.size() + n);
183 for (const ExtrusionPath &p : this->paths)
184 append(dst, p.polyline.points);
185 }
void append(std::vector< T, Alloc > &dest, const std::vector< T, Alloc2 > &src)
Definition libslic3r.h:110

References Slic3r::append(), paths, Slic3r::MultiPoint::points, and Slic3r::ExtrusionPath::polyline.

+ Here is the call graph for this function:

◆ collect_polylines()

void Slic3r::ExtrusionMultiPath::collect_polylines ( Polylines dst) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

179{ Polyline pl = this->as_polyline(); if (! pl.empty()) dst.emplace_back(std::move(pl)); }
Polyline as_polyline() const override
Definition ExtrusionEntity.cpp:94

References as_polyline(), and Slic3r::MultiPoint::empty().

+ Here is the call graph for this function:

◆ empty()

bool Slic3r::ExtrusionMultiPath::empty ( ) const
inline
162{ return this->paths.empty(); }

Referenced by Slic3r::Layer::make_fills().

+ Here is the caller graph for this function:

◆ first_point()

const Point & Slic3r::ExtrusionMultiPath::first_point ( ) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

158{ return this->paths.front().polyline.points.front(); }

◆ is_collection()

virtual bool Slic3r::ExtrusionEntity::is_collection ( ) const
inlinevirtualinherited

Reimplemented in Slic3r::ExtrusionEntityCollection.

24{ return false; }

Referenced by Slic3r::SupportSpotsGenerator::check_extrusion_entity_stability(), Slic3r::SupportSpotsGenerator::check_stability(), Slic3r::Layer::sort_perimeters_into_islands(), and Slic3r::SupportSpotsGenerator::to_short_lines().

+ Here is the caller graph for this function:

◆ is_loop()

bool Slic3r::ExtrusionMultiPath::is_loop ( ) const
inlineoverridevirtual

Reimplemented from Slic3r::ExtrusionEntity.

152{ return false; }

◆ last_point()

const Point & Slic3r::ExtrusionMultiPath::last_point ( ) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

159{ return this->paths.back().polyline.points.back(); }

◆ length()

double Slic3r::ExtrusionMultiPath::length ( ) const
overridevirtual

Implements Slic3r::ExtrusionEntity.

67{
68 double len = 0;
69 for (const ExtrusionPath &path : this->paths)
70 len += path.polyline.length();
71 return len;
72}
double length() const override
Definition ExtrusionEntity.cpp:66

References paths.

◆ middle_point()

const Point & Slic3r::ExtrusionMultiPath::middle_point ( ) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

160{ auto &path = this->paths[this->paths.size() / 2]; return path.polyline.points[path.polyline.size() / 2]; }

◆ min_mm3_per_mm()

double Slic3r::ExtrusionMultiPath::min_mm3_per_mm ( ) const
overridevirtual

Implements Slic3r::ExtrusionEntity.

87{
88 double min_mm3_per_mm = std::numeric_limits<double>::max();
89 for (const ExtrusionPath &path : this->paths)
90 min_mm3_per_mm = std::min(min_mm3_per_mm, path.mm3_per_mm);
91 return min_mm3_per_mm;
92}
double min_mm3_per_mm() const override
Definition ExtrusionEntity.cpp:86
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC half() min(const half &a, const half &b)
Definition Half.h:507
STL namespace.

References min_mm3_per_mm(), and paths.

Referenced by min_mm3_per_mm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator=() [1/2]

ExtrusionMultiPath & Slic3r::ExtrusionMultiPath::operator= ( const ExtrusionMultiPath rhs)
inline
149{ this->paths = rhs.paths; return *this; }

References paths.

◆ operator=() [2/2]

ExtrusionMultiPath & Slic3r::ExtrusionMultiPath::operator= ( ExtrusionMultiPath &&  rhs)
inline
150{ this->paths = std::move(rhs.paths); return *this; }

◆ polygons_covered_by_spacing() [1/2]

Polygons Slic3r::ExtrusionMultiPath::polygons_covered_by_spacing ( const float  scaled_epsilon = 0.f) const
inline
175 { Polygons out; this->polygons_covered_by_spacing(out, scaled_epsilon); return out; }
void polygons_covered_by_spacing(Polygons &out, const float scaled_epsilon) const override
Definition ExtrusionEntity.cpp:80
std::vector< Polygon, PointsAllocator< Polygon > > Polygons
Definition Polygon.hpp:15

References polygons_covered_by_spacing().

+ Here is the call graph for this function:

◆ polygons_covered_by_spacing() [2/2]

void Slic3r::ExtrusionMultiPath::polygons_covered_by_spacing ( Polygons out,
const float  scaled_epsilon 
) const
overridevirtual

Implements Slic3r::ExtrusionEntity.

81{
82 for (const ExtrusionPath &path : this->paths)
83 path.polygons_covered_by_spacing(out, scaled_epsilon);
84}

References paths.

Referenced by polygons_covered_by_spacing().

+ Here is the caller graph for this function:

◆ polygons_covered_by_width() [1/2]

Polygons Slic3r::ExtrusionMultiPath::polygons_covered_by_width ( const float  scaled_epsilon = 0.f) const
inline
173 { Polygons out; this->polygons_covered_by_width(out, scaled_epsilon); return out; }
void polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const override
Definition ExtrusionEntity.cpp:74

References polygons_covered_by_width().

+ Here is the call graph for this function:

◆ polygons_covered_by_width() [2/2]

void Slic3r::ExtrusionMultiPath::polygons_covered_by_width ( Polygons out,
const float  scaled_epsilon 
) const
overridevirtual

Implements Slic3r::ExtrusionEntity.

75{
76 for (const ExtrusionPath &path : this->paths)
77 path.polygons_covered_by_width(out, scaled_epsilon);
78}

References paths.

Referenced by polygons_covered_by_width().

+ Here is the caller graph for this function:

◆ reverse()

void Slic3r::ExtrusionMultiPath::reverse ( )
overridevirtual

Implements Slic3r::ExtrusionEntity.

60{
61 for (ExtrusionPath &path : this->paths)
62 path.reverse();
63 std::reverse(this->paths.begin(), this->paths.end());
64}
void reverse() override
Definition ExtrusionEntity.cpp:59

References paths.

◆ role()

ExtrusionRole Slic3r::ExtrusionMultiPath::role ( ) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

164{ return this->paths.empty() ? ExtrusionRole::None : this->paths.front().role(); }
static constexpr const ExtrusionRoleModifiers None
Definition ExtrusionRole.hpp:47

References Slic3r::ExtrusionRole::None.

◆ size()

size_t Slic3r::ExtrusionMultiPath::size ( ) const
inline
161{ return this->paths.size(); }

◆ total_volume()

double Slic3r::ExtrusionMultiPath::total_volume ( ) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

186{ double volume =0.; for (const auto& path : paths) volume += path.total_volume(); return volume; }
double total_volume() const override
Definition ExtrusionEntity.hpp:186
IGL_INLINE void volume(const Eigen::MatrixBase< DerivedV > &V, const Eigen::MatrixBase< DerivedT > &T, Eigen::PlainObjectBase< Derivedvol > &vol)
Definition volume.cpp:15

References paths.

Member Data Documentation

◆ paths


The documentation for this class was generated from the following files: