OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::ExtrusionPath Class Reference

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

Inheritance diagram for Slic3r::ExtrusionPath:
Collaboration diagram for Slic3r::ExtrusionPath:

Public Member Functions

 ExtrusionPath ()
 ExtrusionPath (ExtrusionRole role)
 ExtrusionPath (ExtrusionRole role, double mm3_per_mm, float width, float height, bool no_extrusion=false)
 ExtrusionPath (const ExtrusionPath &rhs)
 ExtrusionPath (ExtrusionPath &&rhs)
 ExtrusionPath (const Polyline3 &polyline, const ExtrusionPath &rhs)
 ExtrusionPath (Polyline3 &&polyline, const ExtrusionPath &rhs)
ExtrusionPath & operator= (const ExtrusionPath &rhs)
ExtrusionPath & operator= (ExtrusionPath &&rhs)
ExtrusionEntity * clone () const override
ExtrusionEntity * clone_move () override
void reverse () override
Point first_point () const override
const Point3 & first_point3 () const override
Point last_point () const override
const Point3 & last_point3 () 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)
virtual 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
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
void collect_points3 (Points3 &dst) const
double total_volume () const override
void simplify_by_fitting_arc (double tolerance)
bool is_force_no_extrusion () const
void set_force_no_extrusion (bool no_extrusion)
void set_extrusion_role (ExtrusionRole extrusion_role)
void set_reverse () override
bool can_reverse () const override
virtual bool is_collection () const
virtual bool is_loop () const
virtual bool can_sort () const
virtual Polylines as_polylines () const

Static Public Member Functions

static std::string role_to_string (ExtrusionRole role)
static ExtrusionRole string_to_role (const std::string_view role)

Public Attributes

Polyline3 polyline
double overhang_degree = 0
int curve_degree = 0
double mm3_per_mm
float width
float height
double smooth_speed = 0
bool z_contoured = false
int inset_idx = -1

Private Member Functions

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

Private Attributes

bool m_can_reverse = true
ExtrusionRole m_role
bool m_no_extrusion = false

Detailed Description

Constructor & Destructor Documentation

◆ ExtrusionPath() [1/7]

Slic3r::ExtrusionPath::ExtrusionPath ( )
inline
189: mm3_per_mm(-1), width(-1), height(-1), m_role(erNone), m_no_extrusion(false) {}
float width
Definition ExtrusionEntity.hpp:183
double mm3_per_mm
Definition ExtrusionEntity.hpp:181
float height
Definition ExtrusionEntity.hpp:185
ExtrusionRole m_role
Definition ExtrusionEntity.hpp:327
bool m_no_extrusion
Definition ExtrusionEntity.hpp:329
@ erNone
Definition ExtrusionEntity.hpp:27

References Slic3r::erNone, height, m_no_extrusion, m_role, mm3_per_mm, and width.

Referenced by ExtrusionPath(), ExtrusionPath(), ExtrusionPath(), ExtrusionPath(), Slic3r::ExtrusionPathContoured::ExtrusionPathContoured(), Slic3r::ExtrusionPathOriented::ExtrusionPathOriented(), Slic3r::ExtrusionPathSloped::ExtrusionPathSloped(), Slic3r::ExtrusionPathSloped::ExtrusionPathSloped(), Slic3r::ExtrusionPathSloped::ExtrusionPathSloped(), Slic3r::ExtrusionPathSloped::ExtrusionPathSloped(), _inflate_collection(), clone(), clone_move(), operator=(), and operator=().

Here is the caller graph for this function:

◆ ExtrusionPath() [2/7]

Slic3r::ExtrusionPath::ExtrusionPath ( ExtrusionRole role)
inline
190: mm3_per_mm(-1), width(-1), height(-1), m_role(role), m_no_extrusion(false) {}
ExtrusionRole role() const override
Definition ExtrusionEntity.hpp:295

References height, m_no_extrusion, m_role, mm3_per_mm, role(), and width.

Here is the call graph for this function:

◆ ExtrusionPath() [3/7]

Slic3r::ExtrusionPath::ExtrusionPath ( ExtrusionRole role,
double mm3_per_mm,
float width,
float height,
bool no_extrusion = false )
inline

References height, m_no_extrusion, m_role, mm3_per_mm, role(), and width.

Here is the call graph for this function:

◆ ExtrusionPath() [4/7]

Slic3r::ExtrusionPath::ExtrusionPath ( const ExtrusionPath & rhs)
inline
194 : polyline(rhs.polyline)
195 , overhang_degree(rhs.overhang_degree)
196 , curve_degree(rhs.curve_degree)
197 , mm3_per_mm(rhs.mm3_per_mm)
198 , width(rhs.width)
199 , height(rhs.height)
200 , smooth_speed(rhs.smooth_speed)
201 , z_contoured(rhs.z_contoured)
202 , m_can_reverse(rhs.m_can_reverse)
203 , m_role(rhs.m_role)
204 , m_no_extrusion(rhs.m_no_extrusion)
205 {}
Polyline3 polyline
Definition ExtrusionEntity.hpp:177
double overhang_degree
Definition ExtrusionEntity.hpp:178
bool m_can_reverse
Definition ExtrusionEntity.hpp:326
bool z_contoured
Definition ExtrusionEntity.hpp:187
int curve_degree
Definition ExtrusionEntity.hpp:179
double smooth_speed
Definition ExtrusionEntity.hpp:186

References ExtrusionPath(), curve_degree, height, m_can_reverse, m_no_extrusion, m_role, mm3_per_mm, overhang_degree, polyline, smooth_speed, width, and z_contoured.

Here is the call graph for this function:

◆ ExtrusionPath() [5/7]

Slic3r::ExtrusionPath::ExtrusionPath ( ExtrusionPath && rhs)
inline
207 : polyline(std::move(rhs.polyline))
208 , overhang_degree(rhs.overhang_degree)
209 , curve_degree(rhs.curve_degree)
210 , mm3_per_mm(rhs.mm3_per_mm)
211 , width(rhs.width)
212 , height(rhs.height)
213 , smooth_speed(rhs.smooth_speed)
214 , z_contoured(rhs.z_contoured)
215 , m_can_reverse(rhs.m_can_reverse)
216 , m_role(rhs.m_role)
217 , m_no_extrusion(rhs.m_no_extrusion)
218 {}

References ExtrusionPath(), curve_degree, height, m_can_reverse, m_no_extrusion, m_role, mm3_per_mm, overhang_degree, polyline, smooth_speed, width, and z_contoured.

Here is the call graph for this function:

◆ ExtrusionPath() [6/7]

Slic3r::ExtrusionPath::ExtrusionPath ( const Polyline3 & polyline,
const ExtrusionPath & rhs )
inline
221 , overhang_degree(rhs.overhang_degree)
222 , curve_degree(rhs.curve_degree)
223 , mm3_per_mm(rhs.mm3_per_mm)
224 , width(rhs.width)
225 , height(rhs.height)
226 , smooth_speed(rhs.smooth_speed)
227 , z_contoured(rhs.z_contoured)
228 , m_can_reverse(rhs.m_can_reverse)
229 , m_role(rhs.m_role)
230 , m_no_extrusion(rhs.m_no_extrusion)
231 {}

References ExtrusionPath(), curve_degree, height, m_can_reverse, m_no_extrusion, m_role, mm3_per_mm, overhang_degree, polyline, smooth_speed, width, and z_contoured.

Here is the call graph for this function:

◆ ExtrusionPath() [7/7]

Slic3r::ExtrusionPath::ExtrusionPath ( Polyline3 && polyline,
const ExtrusionPath & rhs )
inline
233 : polyline(std::move(polyline))
234 , overhang_degree(rhs.overhang_degree)
235 , curve_degree(rhs.curve_degree)
236 , mm3_per_mm(rhs.mm3_per_mm)
237 , width(rhs.width)
238 , height(rhs.height)
239 , smooth_speed(rhs.smooth_speed)
240 , z_contoured(rhs.z_contoured)
241 , m_can_reverse(rhs.m_can_reverse)
242 , m_role(rhs.m_role)
243 , m_no_extrusion(rhs.m_no_extrusion)
244 {}

References ExtrusionPath(), curve_degree, height, m_can_reverse, m_no_extrusion, m_role, mm3_per_mm, overhang_degree, polyline, smooth_speed, width, and z_contoured.

Here is the call graph for this function:

Member Function Documentation

◆ _inflate_collection()

void Slic3r::ExtrusionPath::_inflate_collection ( const Polylines & polylines,
ExtrusionEntityCollection * collection ) const
private
76{
77 for (const Polyline &polyline : polylines)
78 collection->entities.emplace_back(new ExtrusionPath(Polyline3(polyline), *this));
79}
ExtrusionPath()
Definition ExtrusionEntity.hpp:189

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

Referenced by intersect_expolygons(), and subtract_expolygons().

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

◆ as_polyline()

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

Implements Slic3r::ExtrusionEntity.

309{ return this->polyline.to_polyline(); }

References Slic3r::Polyline3::to_polyline().

Referenced by Slic3r::paths_touch().

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

◆ as_polylines()

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

References collect_polylines().

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

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

◆ can_reverse()

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

Reimplemented from Slic3r::ExtrusionEntity.

Reimplemented in Slic3r::ExtrusionPathOriented.

322{ return m_can_reverse; }

References m_can_reverse.

Referenced by Slic3r::ExtrusionMultiPath::ExtrusionMultiPath().

Here is the caller graph for this function:

◆ can_sort()

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

Reimplemented in Slic3r::ExtrusionEntityCollection.

127{ return true; }//BBS: only used in ExtrusionEntityCollection

◆ clip_end()

void Slic3r::ExtrusionPath::clip_end ( double distance)
42{
43 this->polyline.clip_end(distance);
44}

References polyline.

◆ clone()

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

Implements Slic3r::ExtrusionEntity.

Reimplemented in Slic3r::ExtrusionPathContoured, and Slic3r::ExtrusionPathOriented.

275{ return new ExtrusionPath(*this); }

References ExtrusionPath().

Here is the call graph for this function:

◆ clone_move()

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

Implements Slic3r::ExtrusionEntity.

Reimplemented in Slic3r::ExtrusionPathContoured, and Slic3r::ExtrusionPathOriented.

277{ return new ExtrusionPath(std::move(*this)); }

References ExtrusionPath().

Here is the call graph for this function:

◆ collect_points()

void Slic3r::ExtrusionPath::collect_points ( Points & dst) const
overridevirtual

Implements Slic3r::ExtrusionEntity.

68{
69 dst.reserve(dst.size() + this->polyline.points.size());
70 for (const Point3 &point : this->polyline.points) {
71 dst.emplace_back(point.x(), point.y());
72 }
73}

References polyline.

◆ collect_points3()

void Slic3r::ExtrusionPath::collect_points3 ( Points3 & dst) const
inline
312{ append(dst, this->polyline.points); }
void append(std::vector< T, Alloc > &dest, const std::vector< T, Alloc2 > &src)
Definition libslic3r.h:157

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

Here is the call graph for this function:

◆ collect_polylines()

void Slic3r::ExtrusionPath::collect_polylines ( Polylines & dst) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

310{ if (! this->polyline.empty()) dst.emplace_back(this->polyline.to_polyline()); }

References Slic3r::MultiPoint3::empty(), and Slic3r::Polyline3::to_polyline().

Here is the call graph for this function:

◆ empty()

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

References Slic3r::MultiPoint3::empty().

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

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

◆ first_point()

Point Slic3r::ExtrusionPath::first_point ( ) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

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

References Slic3r::MultiPoint3::points.

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

Here is the caller graph for this function:

◆ first_point3()

const Point3 & Slic3r::ExtrusionPath::first_point3 ( ) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

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

References Slic3r::MultiPoint3::points.

◆ intersect_expolygons()

void Slic3r::ExtrusionPath::intersect_expolygons ( const ExPolygons & collection,
ExtrusionEntityCollection * retval ) const
32{
33 this->_inflate_collection(intersection_pl(Polylines{ polyline.to_polyline() }, collection), retval);
34}
void _inflate_collection(const Polylines &polylines, ExtrusionEntityCollection *collection) const
Definition ExtrusionEntity.cpp:75
Slic3r::Polylines intersection_pl(const Slic3r::Polylines &subject, const Slic3r::Polygon &clip)
Definition ClipperUtils.cpp:1111

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

Here is the call graph for this function:

◆ is_closed()

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

References empty(), and Slic3r::MultiPoint3::points.

Referenced by Slic3r::SupportMaterialInternal::collect_bridging_perimeter_areas(), and Slic3r::SupportMaterialInternal::has_bridging_perimeters().

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

◆ is_collection()

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

◆ is_force_no_extrusion()

bool Slic3r::ExtrusionPath::is_force_no_extrusion ( ) const
inline
318{ return m_no_extrusion; }

References m_no_extrusion.

Referenced by Slic3r::GCode::_extrude(), Slic3r::GCode::extrude_multi_path(), and Slic3r::to_json().

Here is the caller graph for this function:

◆ is_loop()

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

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

125{ return false; }

Referenced by Slic3r::chain_extrusion_entities_impl(), Slic3r::SupportMaterialInternal::collect_bridging_perimeter_areas(), Slic3r::GCode::compute_farthest_point(), Slic3r::SupportMaterialInternal::has_bridging_perimeters(), and Slic3r::is_unsupported_loop().

Here is the caller graph for this function:

◆ last_point()

Point Slic3r::ExtrusionPath::last_point ( ) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

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

References Slic3r::MultiPoint3::points.

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

Here is the caller graph for this function:

◆ last_point3()

const Point3 & Slic3r::ExtrusionPath::last_point3 ( ) const
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

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

References Slic3r::MultiPoint3::points.

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

Here is the caller graph for this function:

◆ length()

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

Implements Slic3r::ExtrusionEntity.

63{
64 return this->polyline.length();
65}

References polyline.

Referenced by Slic3r::ExtrusionLoop::clip_end(), Slic3r::ExtrusionLoopSloped::clip_end(), Slic3r::ExtrusionLoopSloped::clip_front(), Slic3r::GCode::extrude_multi_path(), Slic3r::GCode::extrude_support(), and total_volume().

Here is the caller graph for this function:

◆ min_mm3_per_mm()

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

Implements Slic3r::ExtrusionEntity.

308{ return this->mm3_per_mm; }

◆ operator=() [1/2]

ExtrusionPath & Slic3r::ExtrusionPath::operator= ( const ExtrusionPath & rhs)
inline
246 {
247 m_can_reverse = rhs.m_can_reverse;
248 m_role = rhs.m_role;
249 m_no_extrusion = rhs.m_no_extrusion;
250 this->mm3_per_mm = rhs.mm3_per_mm;
251 this->width = rhs.width;
252 this->height = rhs.height;
253 this->smooth_speed = rhs.smooth_speed;
254 this->z_contoured = rhs.z_contoured;
255 this->overhang_degree = rhs.overhang_degree;
256 this->curve_degree = rhs.curve_degree;
257 this->polyline = rhs.polyline;
258 return *this;
259 }

References ExtrusionPath(), curve_degree, height, m_can_reverse, m_no_extrusion, m_role, mm3_per_mm, overhang_degree, polyline, smooth_speed, width, and z_contoured.

Here is the call graph for this function:

◆ operator=() [2/2]

ExtrusionPath & Slic3r::ExtrusionPath::operator= ( ExtrusionPath && rhs)
inline
260 {
261 m_can_reverse = rhs.m_can_reverse;
262 m_role = rhs.m_role;
263 m_no_extrusion = rhs.m_no_extrusion;
264 this->mm3_per_mm = rhs.mm3_per_mm;
265 this->width = rhs.width;
266 this->height = rhs.height;
267 this->smooth_speed = rhs.smooth_speed;
268 this->z_contoured = rhs.z_contoured;
269 this->overhang_degree = rhs.overhang_degree;
270 this->curve_degree = rhs.curve_degree;
271 this->polyline = std::move(rhs.polyline);
272 return *this;
273 }

References ExtrusionPath(), m_can_reverse, m_no_extrusion, and m_role.

Here is the call graph for this function:

◆ polygons_covered_by_spacing() [1/2]

Polygons Slic3r::ExtrusionPath::polygons_covered_by_spacing ( const float scaled_epsilon = 0.f) const
inline
306 { 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:86
std::vector< Polygon, PointsAllocator< Polygon > > Polygons
Definition Polygon.hpp:22

References 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
overridevirtual

Implements Slic3r::ExtrusionEntity.

87{
88 // Instantiating the Flow class to get the line spacing.
89 // Don't know the nozzle diameter, setting to zero. It shall not matter it shall be optimized out by the compiler.
90 bool bridge = is_bridge(this->role());
91 // SoftFever: TODO Mac trigger assersion errors
92// assert(! bridge || this->width == this->height);
93 auto flow = bridge ? Flow::bridging_flow(this->width, 0.f) : Flow(this->width, this->height, 0.f);
94 polygons_append(out, offset(this->polyline.to_polyline(), 0.5f * float(flow.scaled_spacing()) + scaled_epsilon));
95}
static Flow bridging_flow(float dmr, float nozzle_diameter)
Definition Flow.hpp:108
bool is_bridge(ExtrusionRole role)
Definition ExtrusionEntity.hpp:105
Slic3r::Polygons offset(const Slic3r::Polygon &polygon, const float delta, JoinType joinType, double miterLimit)
Definition ClipperUtils.cpp:582
void polygons_append(Polygons &dst, const ExPolygon &src)
Definition ExPolygon.hpp:411

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

Referenced by 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
inline
304 { 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:81

References 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
overridevirtual

Implements Slic3r::ExtrusionEntity.

82{
83 polygons_append(out, offset(this->polyline.to_polyline(), float(scale_(this->width/2)) + scaled_epsilon));
84}
#define scale_(val)
Definition libslic3r.h:106

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

Referenced by 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 ( )
inlineoverridevirtual

Implements Slic3r::ExtrusionEntity.

Reimplemented in Slic3r::ExtrusionPathContoured.

278{ this->polyline.reverse(); }

References Slic3r::Polyline3::reverse().

Referenced by Slic3r::sort_extra_perimeters().

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

◆ role()

◆ role_to_string()

std::string Slic3r::ExtrusionEntity::role_to_string ( ExtrusionRole role)
staticinherited
674{
675 switch (role) {
676 case erNone : return L("Undefined");
677 case erPerimeter : return L("Inner wall");
678 case erExternalPerimeter : return L("Outer wall");
679 case erOverhangPerimeter : return L("Overhang wall");
680 case erInternalInfill : return L("Sparse infill");
681 case erSolidInfill : return L("Internal solid infill");
682 case erTopSolidInfill : return L("Top surface");
683 case erBottomSurface : return L("Bottom surface");
684 case erIroning : return L("Ironing");
685 case erBridgeInfill : return L("Bridge");
686 case erInternalBridgeInfill : return L("Internal Bridge");
687 case erGapFill : return L("Gap infill");
688 case erSkirt : return L("Skirt");
689 case erBrim : return L("Brim");
690 case erSupportMaterial : return L("Support");
691 case erSupportMaterialInterface : return L("Support interface");
692 case erSupportTransition : return L("Support transition");
693 case erWipeTower : return L("Prime tower");
694 case erCustom : return L("Custom");
695 case erMixed : return L("Multiple");
696 default : assert(false);
697 }
698 return "";
699}
#define L(s)
Definition ExtrusionEntity.cpp:25
virtual ExtrusionRole role() const =0
@ erMixed
Definition ExtrusionEntity.hpp:47
@ erBottomSurface
Definition ExtrusionEntity.hpp:34
@ erExternalPerimeter
Definition ExtrusionEntity.hpp:29
@ erGapFill
Definition ExtrusionEntity.hpp:38
@ erCustom
Definition ExtrusionEntity.hpp:45
@ erSupportMaterialInterface
Definition ExtrusionEntity.hpp:42
@ erSupportMaterial
Definition ExtrusionEntity.hpp:41
@ erWipeTower
Definition ExtrusionEntity.hpp:44
@ erBrim
Definition ExtrusionEntity.hpp:40
@ erSolidInfill
Definition ExtrusionEntity.hpp:32
@ erBridgeInfill
Definition ExtrusionEntity.hpp:36
@ erInternalBridgeInfill
Definition ExtrusionEntity.hpp:37
@ erTopSolidInfill
Definition ExtrusionEntity.hpp:33
@ erSkirt
Definition ExtrusionEntity.hpp:39
@ erSupportTransition
Definition ExtrusionEntity.hpp:43
@ erOverhangPerimeter
Definition ExtrusionEntity.hpp:30
@ erIroning
Definition ExtrusionEntity.hpp:35
@ erPerimeter
Definition ExtrusionEntity.hpp:28
@ erInternalInfill
Definition ExtrusionEntity.hpp:31

References Slic3r::erBottomSurface, Slic3r::erBridgeInfill, Slic3r::erBrim, Slic3r::erCustom, Slic3r::erExternalPerimeter, Slic3r::erGapFill, Slic3r::erInternalBridgeInfill, Slic3r::erInternalInfill, Slic3r::erIroning, Slic3r::erMixed, Slic3r::erNone, Slic3r::erOverhangPerimeter, Slic3r::erPerimeter, Slic3r::erSkirt, Slic3r::erSolidInfill, Slic3r::erSupportMaterial, Slic3r::erSupportMaterialInterface, Slic3r::erSupportTransition, Slic3r::erTopSolidInfill, Slic3r::erWipeTower, L, and role().

Referenced by Slic3r::WipeTowerWriter::WipeTowerWriter(), Slic3r::WipeTowerWriter2::WipeTowerWriter2(), Slic3r::GCode::_do_export(), Slic3r::GCode::_extrude(), and Slic3r::anonymous_namespace{GCodeStatistics.cpp}::features_json().

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

◆ set_extrusion_role()

void Slic3r::ExtrusionPath::set_extrusion_role ( ExtrusionRole extrusion_role)
inline
320{ m_role = extrusion_role; }

References m_role.

Referenced by Slic3r::from_json().

Here is the caller graph for this function:

◆ set_force_no_extrusion()

void Slic3r::ExtrusionPath::set_force_no_extrusion ( bool no_extrusion)
inline
319{ m_no_extrusion = no_extrusion; }

References m_no_extrusion.

Referenced by Slic3r::GCode::extrude_loop(), and Slic3r::from_json().

Here is the caller graph for this function:

◆ set_reverse()

void Slic3r::ExtrusionPath::set_reverse ( )
inlineoverridevirtual

Reimplemented from Slic3r::ExtrusionEntity.

321{ m_can_reverse = false; }

References m_can_reverse.

◆ simplify()

void Slic3r::ExtrusionPath::simplify ( double tolerance)
virtual

Reimplemented in Slic3r::ExtrusionPathContoured.

47{
48 if (this->z_contoured) {
49 return;
50 }
51 this->polyline.simplify(tolerance);
52}

References polyline, and z_contoured.

Referenced by Slic3r::LayerRegion::simplify_path(), and Slic3r::Layer::simplify_support_path().

Here is the caller graph for this function:

◆ simplify_by_fitting_arc()

void Slic3r::ExtrusionPath::simplify_by_fitting_arc ( double tolerance)
55{
56 if (this->z_contoured) {
57 return;
58 }
59 this->polyline.simplify_by_fitting_arc(tolerance);
60}

References polyline, and z_contoured.

Referenced by Slic3r::LayerRegion::simplify_path(), and Slic3r::Layer::simplify_support_path().

Here is the caller graph for this function:

◆ size()

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

References Slic3r::MultiPoint3::size().

Referenced by Slic3r::SupportMaterialInternal::collect_bridging_perimeter_areas(), and Slic3r::SupportMaterialInternal::has_bridging_perimeters().

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

◆ string_to_role()

ExtrusionRole Slic3r::ExtrusionEntity::string_to_role ( const std::string_view role)
staticinherited
702{
703 if (role == L("Inner wall"))
704 return erPerimeter;
705 else if (role == L("Outer wall"))
706 return erExternalPerimeter;
707 else if (role == L("Overhang wall"))
708 return erOverhangPerimeter;
709 else if (role == L("Sparse infill"))
710 return erInternalInfill;
711 else if (role == L("Internal solid infill"))
712 return erSolidInfill;
713 else if (role == L("Top surface"))
714 return erTopSolidInfill;
715 else if (role == L("Bottom surface"))
716 return erBottomSurface;
717 else if (role == L("Ironing"))
718 return erIroning;
719 else if (role == L("Bridge"))
720 return erBridgeInfill;
721 else if (role == L("Internal Bridge"))
723 else if (role == L("Gap infill"))
724 return erGapFill;
725 else if (role == ("Skirt"))
726 return erSkirt;
727 else if (role == ("Brim"))
728 return erBrim;
729 else if (role == L("Support"))
730 return erSupportMaterial;
731 else if (role == L("Support interface"))
733 else if (role == L("Support transition"))
734 return erSupportTransition;
735 else if (role == L("Prime tower"))
736 return erWipeTower;
737 else if (role == L("Custom"))
738 return erCustom;
739 else if (role == L("Multiple"))
740 return erMixed;
741 else
742 return erNone;
743}

References Slic3r::erBottomSurface, Slic3r::erBridgeInfill, Slic3r::erBrim, Slic3r::erCustom, Slic3r::erExternalPerimeter, Slic3r::erGapFill, Slic3r::erInternalBridgeInfill, Slic3r::erInternalInfill, Slic3r::erIroning, Slic3r::erMixed, Slic3r::erNone, Slic3r::erOverhangPerimeter, Slic3r::erPerimeter, Slic3r::erSkirt, Slic3r::erSolidInfill, Slic3r::erSupportMaterial, Slic3r::erSupportMaterialInterface, Slic3r::erSupportTransition, Slic3r::erTopSolidInfill, Slic3r::erWipeTower, L, and role().

Referenced by Slic3r::FanMover::_process_gcode_line(), and Slic3r::GCodeProcessor::process_tags().

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

◆ subtract_expolygons()

void Slic3r::ExtrusionPath::subtract_expolygons ( const ExPolygons & collection,
ExtrusionEntityCollection * retval ) const
37{
38 this->_inflate_collection(diff_pl(Polylines{ this->polyline.to_polyline() }, collection), retval);
39}
Slic3r::Polylines diff_pl(const Slic3r::Polyline &subject, const Slic3r::Polygons &clip)
Definition ClipperUtils.cpp:1099

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

Here is the call graph for this function:

◆ total_volume()

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

Implements Slic3r::ExtrusionEntity.

313{ return mm3_per_mm * unscale<double>(length()); }
double length() const override
Definition ExtrusionEntity.cpp:62
T unscale(Q v)
Definition libslic3r.h:138

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

Here is the call graph for this function:

Member Data Documentation

◆ curve_degree

int Slic3r::ExtrusionPath::curve_degree = 0

◆ height

◆ inset_idx

◆ m_can_reverse

bool Slic3r::ExtrusionPath::m_can_reverse = true
private

◆ m_no_extrusion

◆ m_role

◆ mm3_per_mm

◆ overhang_degree

double Slic3r::ExtrusionPath::overhang_degree = 0

◆ polyline

Polyline3 Slic3r::ExtrusionPath::polyline

Referenced by ExtrusionPath(), ExtrusionPath(), ExtrusionPath(), ExtrusionPath(), Slic3r::ExtrusionPathContoured::ExtrusionPathContoured(), Slic3r::ExtrusionPathSloped::ExtrusionPathSloped(), Slic3r::ExtrusionPathSloped::ExtrusionPathSloped(), Slic3r::GCode::_extrude(), _inflate_collection(), Slic3r::ExtrusionLoop::clip_end(), Slic3r::ExtrusionLoopSloped::clip_end(), clip_end(), Slic3r::ExtrusionLoopSloped::clip_front(), Slic3r::SupportMaterialInternal::collect_bridging_perimeter_areas(), Slic3r::ExtrusionLoop::collect_points(), Slic3r::ExtrusionMultiPath::collect_points(), collect_points(), Slic3r::contour_extrusion_path(), libvgcode::convert_to_vertices(), libvgcode::convert_to_vertices(), libvgcode::convert_to_vertices(), Slic3r::GCode::extrude_path(), Slic3r::ExtrusionSimulator::extrude_to_accumulator(), Slic3r::extrusion_entities_append_loops(), Slic3r::extrusion_entities_append_loops_and_paths(), Slic3r::extrusion_entities_append_paths(), Slic3r::extrusion_entities_append_paths(), Slic3r::extrusionentity_extents(), Slic3r::extrusionentity_extents(), Slic3r::extrusionentity_extents(), Slic3r::_3DScene::extrusionentity_to_verts(), Slic3r::_3DScene::extrusionentity_to_verts(), Slic3r::_3DScene::extrusionentity_to_verts(), Slic3r::from_json(), Slic3r::FakeWipeTower::getFakeExtrusionPathsFromWipeTower(), Slic3r::FakeWipeTower::getFakeExtrusionPathsFromWipeTower2(), Slic3r::FakeWipeTower::getTrueExtrusionLayersFromWipeTower(), Slic3r::SupportMaterialInternal::has_bridging_perimeters(), intersect_expolygons(), length(), Slic3r::modulate_extrusion_by_overlapping_layers(), operator=(), Slic3r::paths_touch(), polygons_covered_by_spacing(), polygons_covered_by_width(), Slic3r::ExtrusionPathContoured::reverse(), simplify(), simplify_by_fitting_arc(), Slic3r::ExtrusionLoop::split_at(), Slic3r::ExtrusionLoop::split_at_vertex(), subtract_expolygons(), Slic3r::thick_polyline_to_extrusion_paths_2(), Slic3r::thick_polyline_to_multi_path(), Slic3r::to_json(), Slic3r::traverse_extrusions(), and Slic3r::traverse_loops().

◆ smooth_speed

double Slic3r::ExtrusionPath::smooth_speed = 0

◆ width

◆ z_contoured


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