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

#include <src/libslic3r/ExtrusionEntity.hpp>

+ Inheritance diagram for Slic3r::ExtrusionPathOriented:
+ Collaboration diagram for Slic3r::ExtrusionPathOriented:

Public Member Functions

 ExtrusionPathOriented (ExtrusionRole role, double mm3_per_mm, float width, float height)
 
ExtrusionEntityclone () const override
 
ExtrusionEntityclone_move () override
 
virtual bool can_reverse () const 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
 
bool is_closed () const
 
void intersect_expolygons (const ExPolygons &collection, ExtrusionEntityCollection *retval) const
 
void subtract_expolygons (const ExPolygons &collection, ExtrusionEntityCollection *retval) const
 
void clip_end (double distance)
 
void simplify (double tolerance)
 
double length () const override
 
ExtrusionRole role () const override
 
void polygons_covered_by_width (Polygons &out, const float scaled_epsilon) const override
 
Polygons polygons_covered_by_width (const float scaled_epsilon=0.f) const
 
void polygons_covered_by_spacing (Polygons &out, const float scaled_epsilon) const override
 
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 bool is_loop () const
 
virtual Polylines as_polylines () const
 

Public Attributes

Polyline polyline
 
double mm3_per_mm
 
float width
 
float height
 

Private Member Functions

void _inflate_collection (const Polylines &polylines, ExtrusionEntityCollection *collection) const
 

Private Attributes

ExtrusionRole m_role
 

Detailed Description

Constructor & Destructor Documentation

◆ ExtrusionPathOriented()

Slic3r::ExtrusionPathOriented::ExtrusionPathOriented ( ExtrusionRole  role,
double  mm3_per_mm,
float  width,
float  height 
)
inline
float width
Definition ExtrusionEntity.hpp:67
double mm3_per_mm
Definition ExtrusionEntity.hpp:65
float height
Definition ExtrusionEntity.hpp:69
ExtrusionRole role() const override
Definition ExtrusionEntity.hpp:100
ExtrusionPath(ExtrusionRole role)
Definition ExtrusionEntity.hpp:71

Member Function Documentation

◆ _inflate_collection()

void Slic3r::ExtrusionPath::_inflate_collection ( const Polylines polylines,
ExtrusionEntityCollection collection 
) const
privateinherited
39{
40 for (const Polyline &polyline : polylines)
41 collection->entities.emplace_back(new ExtrusionPath(polyline, *this));
42}
Polyline polyline
Definition ExtrusionEntity.hpp:63

References Slic3r::ExtrusionEntityCollection::entities, and Slic3r::ExtrusionPath::polyline.

Referenced by Slic3r::ExtrusionPath::intersect_expolygons(), and Slic3r::ExtrusionPath::subtract_expolygons().

+ Here is the caller graph for this function:

◆ as_polyline()

Polyline Slic3r::ExtrusionPath::as_polyline ( ) const
inlineoverridevirtualinherited

Implements Slic3r::ExtrusionEntity.

114{ return this->polyline; }

References Slic3r::ExtrusionPath::polyline.

Referenced by Slic3r::paths_touch().

+ 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()

virtual bool Slic3r::ExtrusionPathOriented::can_reverse ( ) const
inlineoverridevirtual

Reimplemented from Slic3r::ExtrusionEntity.

132{ return false; }

◆ clip_end()

void Slic3r::ExtrusionPath::clip_end ( double  distance)
inherited
24{
25 this->polyline.clip_end(distance);
26}
void clip_end(double distance)
Definition Polyline.cpp:43

References Slic3r::Polyline::clip_end(), and Slic3r::ExtrusionPath::polyline.

+ Here is the call graph for this function:

◆ clone()

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

Reimplemented from Slic3r::ExtrusionPath.

129{ return new ExtrusionPathOriented(*this); }
ExtrusionPathOriented(ExtrusionRole role, double mm3_per_mm, float width, float height)
Definition ExtrusionEntity.hpp:128

◆ clone_move()

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

Reimplemented from Slic3r::ExtrusionPath.

131{ return new ExtrusionPathOriented(std::move(*this)); }

◆ collect_points()

void Slic3r::ExtrusionPath::collect_points ( Points dst) const
inlineoverridevirtualinherited

Implements Slic3r::ExtrusionEntity.

116{ append(dst, this->polyline.points); }
Points points
Definition MultiPoint.hpp:18
void append(std::vector< T, Alloc > &dest, const std::vector< T, Alloc2 > &src)
Definition libslic3r.h:110

References Slic3r::append(), and Slic3r::MultiPoint::points.

+ Here is the call graph for this function:

◆ collect_polylines()

void Slic3r::ExtrusionPath::collect_polylines ( Polylines dst) const
inlineoverridevirtualinherited

Implements Slic3r::ExtrusionEntity.

115{ if (! this->polyline.empty()) dst.emplace_back(this->polyline); }
bool empty() const
Definition MultiPoint.hpp:40

References Slic3r::MultiPoint::empty().

+ Here is the call graph for this function:

◆ empty()

bool Slic3r::ExtrusionPath::empty ( ) const
inlineinherited
89{ return this->polyline.empty(); }

References Slic3r::MultiPoint::empty().

Referenced by Slic3r::ExtrusionPath::is_closed(), and Slic3r::PerimeterGenerator::thick_polyline_to_multi_path().

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

◆ first_point()

const Point & Slic3r::ExtrusionPath::first_point ( ) const
inlineoverridevirtualinherited

Implements Slic3r::ExtrusionEntity.

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

References Slic3r::MultiPoint::points.

Referenced by Slic3r::GCode::_extrude(), and Slic3r::sort_extra_perimeters().

+ Here is the caller graph for this function:

◆ intersect_expolygons()

void Slic3r::ExtrusionPath::intersect_expolygons ( const ExPolygons collection,
ExtrusionEntityCollection retval 
) const
inherited
14{
15 this->_inflate_collection(intersection_pl(Polylines{ polyline }, collection), retval);
16}
void _inflate_collection(const Polylines &polylines, ExtrusionEntityCollection *collection) const
Definition ExtrusionEntity.cpp:38
Slic3r::Polylines intersection_pl(const Slic3r::Polylines &subject, const Slic3r::Polygon &clip)
Definition ClipperUtils.cpp:866

References Slic3r::ExtrusionPath::_inflate_collection(), Slic3r::intersection_pl(), and Slic3r::ExtrusionPath::polyline.

+ Here is the call graph for this function:

◆ is_closed()

bool Slic3r::ExtrusionPath::is_closed ( ) const
inlineinherited
90{ return ! this->empty() && this->polyline.points.front() == this->polyline.points.back(); }
bool empty() const
Definition ExtrusionEntity.hpp:89

References Slic3r::ExtrusionPath::empty(), and Slic3r::MultiPoint::points.

+ Here is the call graph for this function:

◆ 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()

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

Reimplemented in Slic3r::ExtrusionMultiPath, and Slic3r::ExtrusionLoop.

25{ return false; }

Referenced by Slic3r::chain_extrusion_entities().

+ Here is the caller graph for this function:

◆ last_point()

const Point & Slic3r::ExtrusionPath::last_point ( ) const
inlineoverridevirtualinherited

Implements Slic3r::ExtrusionEntity.

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

References Slic3r::MultiPoint::points.

Referenced by Slic3r::GCode::_extrude(), and Slic3r::sort_extra_perimeters().

+ Here is the caller graph for this function:

◆ length()

double Slic3r::ExtrusionPath::length ( ) const
overridevirtualinherited

Implements Slic3r::ExtrusionEntity.

34{
35 return this->polyline.length();
36}
double length() const
Definition Polyline.cpp:22

References Slic3r::Polyline::length(), and Slic3r::ExtrusionPath::polyline.

Referenced by Slic3r::ExtrusionLoop::clip_end(), and Slic3r::ExtrusionPath::total_volume().

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

◆ middle_point()

const Point & Slic3r::ExtrusionPath::middle_point ( ) const
inlineoverridevirtualinherited

Implements Slic3r::ExtrusionEntity.

87{ return this->polyline.points[this->polyline.size() / 2]; }
size_t size() const
Definition MultiPoint.hpp:39

References Slic3r::MultiPoint::points, and Slic3r::MultiPoint::size().

+ Here is the call graph for this function:

◆ min_mm3_per_mm()

double Slic3r::ExtrusionPath::min_mm3_per_mm ( ) const
inlineoverridevirtualinherited

Implements Slic3r::ExtrusionEntity.

113{ return this->mm3_per_mm; }

References Slic3r::ExtrusionPath::mm3_per_mm.

◆ polygons_covered_by_spacing() [1/2]

Polygons Slic3r::ExtrusionPath::polygons_covered_by_spacing ( const float  scaled_epsilon = 0.f) const
inlineinherited
111 { 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:49
std::vector< Polygon, PointsAllocator< Polygon > > Polygons
Definition Polygon.hpp:15

References Slic3r::ExtrusionPath::polygons_covered_by_spacing().

+ Here is the call graph for this function:

◆ polygons_covered_by_spacing() [2/2]

void Slic3r::ExtrusionPath::polygons_covered_by_spacing ( Polygons out,
const float  scaled_epsilon 
) const
overridevirtualinherited

Implements Slic3r::ExtrusionEntity.

50{
51 // Instantiating the Flow class to get the line spacing.
52 // Don't know the nozzle diameter, setting to zero. It shall not matter it shall be optimized out by the compiler.
53 bool bridge = this->role().is_bridge();
54 assert(! bridge || this->width == this->height);
55 auto flow = bridge ? Flow::bridging_flow(this->width, 0.f) : Flow(this->width, this->height, 0.f);
56 polygons_append(out, offset(this->polyline, 0.5f * float(flow.scaled_spacing()) + scaled_epsilon));
57}
static Flow bridging_flow(float dmr, float nozzle_diameter)
Definition Flow.hpp:97
Slic3r::Polygons offset(const Slic3r::Polygon &polygon, const float delta, ClipperLib::JoinType joinType, double miterLimit)
Definition ClipperUtils.cpp:416
void polygons_append(Polygons &dst, const ExPolygon &src)
Definition ExPolygon.hpp:375
bool is_bridge() const
Definition ExtrusionRole.hpp:86

References Slic3r::Flow::bridging_flow(), Slic3r::ExtrusionPath::height, Slic3r::ExtrusionRole::is_bridge(), Slic3r::offset(), Slic3r::polygons_append(), Slic3r::ExtrusionPath::polyline, Slic3r::ExtrusionPath::role(), and Slic3r::ExtrusionPath::width.

Referenced by Slic3r::ExtrusionPath::polygons_covered_by_spacing().

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

◆ polygons_covered_by_width() [1/2]

Polygons Slic3r::ExtrusionPath::polygons_covered_by_width ( const float  scaled_epsilon = 0.f) const
inlineinherited
109 { 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:44

References Slic3r::ExtrusionPath::polygons_covered_by_width().

+ Here is the call graph for this function:

◆ polygons_covered_by_width() [2/2]

void Slic3r::ExtrusionPath::polygons_covered_by_width ( Polygons out,
const float  scaled_epsilon 
) const
overridevirtualinherited

Implements Slic3r::ExtrusionEntity.

45{
46 polygons_append(out, offset(this->polyline, float(scale_(this->width/2)) + scaled_epsilon));
47}
#define scale_(val)
Definition libslic3r.h:69

References Slic3r::offset(), Slic3r::polygons_append(), Slic3r::ExtrusionPath::polyline, scale_, and Slic3r::ExtrusionPath::width.

Referenced by Slic3r::ExtrusionPath::polygons_covered_by_width().

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

◆ reverse()

void Slic3r::ExtrusionPath::reverse ( )
inlineoverridevirtualinherited

Implements Slic3r::ExtrusionEntity.

84{ this->polyline.reverse(); }
void reverse()
Definition MultiPoint.hpp:34

References Slic3r::MultiPoint::reverse().

Referenced by Slic3r::sort_extra_perimeters().

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

◆ role()

ExtrusionRole Slic3r::ExtrusionPath::role ( ) const
inlineoverridevirtualinherited

Implements Slic3r::ExtrusionEntity.

100{ return m_role; }
ExtrusionRole m_role
Definition ExtrusionEntity.hpp:122

References Slic3r::ExtrusionPath::m_role.

Referenced by Slic3r::GCode::_extrude(), Slic3r::FFFSupport::modulate_extrusion_by_overlapping_layers(), Slic3r::ExtrusionPath::polygons_covered_by_spacing(), and Slic3r::ExtrusionLoop::split_at().

+ Here is the caller graph for this function:

◆ simplify()

void Slic3r::ExtrusionPath::simplify ( double  tolerance)
inherited
29{
30 this->polyline.simplify(tolerance);
31}
void simplify(double tolerance)
Definition Polyline.cpp:111

References Slic3r::ExtrusionPath::polyline, and Slic3r::Polyline::simplify().

Referenced by Slic3r::GCode::extrude_path().

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

◆ size()

size_t Slic3r::ExtrusionPath::size ( ) const
inlineinherited
88{ return this->polyline.size(); }

References Slic3r::MultiPoint::size().

+ Here is the call graph for this function:

◆ subtract_expolygons()

void Slic3r::ExtrusionPath::subtract_expolygons ( const ExPolygons collection,
ExtrusionEntityCollection retval 
) const
inherited
19{
20 this->_inflate_collection(diff_pl(Polylines{ this->polyline }, collection), retval);
21}
Slic3r::Polylines diff_pl(const Slic3r::Polyline &subject, const Slic3r::Polygons &clip)
Definition ClipperUtils.cpp:852

References Slic3r::ExtrusionPath::_inflate_collection(), Slic3r::diff_pl(), and Slic3r::ExtrusionPath::polyline.

+ Here is the call graph for this function:

◆ total_volume()

double Slic3r::ExtrusionPath::total_volume ( ) const
inlineoverridevirtualinherited

Implements Slic3r::ExtrusionEntity.

117{ return mm3_per_mm * unscale<double>(length()); }
double length() const override
Definition ExtrusionEntity.cpp:33

References Slic3r::ExtrusionPath::length(), and Slic3r::ExtrusionPath::mm3_per_mm.

+ Here is the call graph for this function:

Member Data Documentation

◆ height

◆ m_role

◆ mm3_per_mm

◆ polyline

◆ width


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