OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::sla::SupportPointGenerator::Structure Struct Reference

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

Collaboration diagram for Slic3r::sla::SupportPointGenerator::Structure:

Classes

Public Member Functions

 Structure (MyLayer &layer, const ExPolygon &poly, const BoundingBox &bbox, const Vec2f &centroid, float area, float h)
float supports_force_total () const
bool overlaps (const Structure &rhs) const
float overlap_area (const Structure &rhs) const
float area_below () const
Polygons polygons_below () const
ExPolygons expolygons_below () const
float support_force_deficit (const float tear_pressure) const

Public Attributes

MyLayer * layer
const ExPolygon * polygon = nullptr
const BoundingBox bbox
const Vec2f centroid = Vec2f::Zero()
const float area = 0.f
float zlevel = 0
float supports_force_this_layer = 0.f
float supports_force_inherited = 0.f
std::vector< Link > islands_above
std::vector< Link > islands_below
ExPolygons dangling_areas
ExPolygons overhangs
ExPolygons overhangs_slopes
float overhangs_area = 0.f

Detailed Description

Constructor & Destructor Documentation

◆ Structure()

Slic3r::sla::SupportPointGenerator::Structure::Structure ( MyLayer & layer,
const ExPolygon & poly,
const BoundingBox & bbox,
const Vec2f & centroid,
float area,
float h )
inline
53 :
55#ifdef SLA_SUPPORTPOINTGEN_DEBUG
56 , unique_id(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()))
57#endif /* SLA_SUPPORTPOINTGEN_DEBUG */
58 {}
const float area
Definition SupportPointGenerator.hpp:63
const Vec2f centroid
Definition SupportPointGenerator.hpp:62
const BoundingBox bbox
Definition SupportPointGenerator.hpp:61
const ExPolygon * polygon
Definition SupportPointGenerator.hpp:60
MyLayer * layer
Definition SupportPointGenerator.hpp:59
float zlevel
Definition SupportPointGenerator.hpp:64

References area, bbox, centroid, layer, polygon, and zlevel.

Referenced by Slic3r::sla::SupportPointGenerator::Structure::Link::Link(), overlap_area(), and overlaps().

Here is the caller graph for this function:

Member Function Documentation

◆ area_below()

float Slic3r::sla::SupportPointGenerator::Structure::area_below ( ) const
inline
110 {
111 float area = 0.f;
112 for (const Link &below : this->islands_below)
113 area += below.island->area;
114 return area;
115 }
std::vector< Link > islands_below
Definition SupportPointGenerator.hpp:87

References area.

◆ expolygons_below()

ExPolygons Slic3r::sla::SupportPointGenerator::Structure::expolygons_below ( ) const
inline
128 {
129 ExPolygons out;
130 out.reserve(this->islands_below.size());
131 for (const Link &below : this->islands_below)
132 out.emplace_back(*below.island->polygon);
133 return out;
134 }
std::vector< ExPolygon > ExPolygons
Definition ExPolygon.hpp:20

◆ overlap_area()

float Slic3r::sla::SupportPointGenerator::Structure::overlap_area ( const Structure & rhs) const
inline
101 {
102 double out = 0.;
103 if (this->bbox.overlap(rhs.bbox)) {
104 Polygons polys = intersection(*this->polygon, *rhs.polygon);
105 for (const Polygon &poly : polys)
106 out += poly.area();
107 }
108 return float(out);
109 }
void poly(std::vector< std::pair< Vec2d, Vec2d > > &out, std::initializer_list< Vec2d > p)
Definition DesignSketchTool.cpp:7751
Slic3r::Polygons intersection(const Slic3r::Polygon &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset)
Definition ClipperUtils.cpp:769
std::vector< Polygon, PointsAllocator< Polygon > > Polygons
Definition Polygon.hpp:22

References Structure(), bbox, Slic3r::intersection(), Slic3r::BoundingBoxBase< PointType, APointsType >::overlap(), and polygon.

Here is the call graph for this function:

◆ overlaps()

bool Slic3r::sla::SupportPointGenerator::Structure::overlaps ( const Structure & rhs) const
inline
97 {
98 //FIXME ExPolygon::overlaps() shall be commutative, it is not!
99 return this->bbox.overlap(rhs.bbox) && (this->polygon->overlaps(*rhs.polygon) || rhs.polygon->overlaps(*this->polygon));
100 }

References Structure(), bbox, Slic3r::BoundingBoxBase< PointType, APointsType >::overlap(), Slic3r::ExPolygon::overlaps(), and polygon.

Here is the call graph for this function:

◆ polygons_below()

Polygons Slic3r::sla::SupportPointGenerator::Structure::polygons_below ( ) const
inline
116 {
117 size_t cnt = 0;
118 for (const Link &below : this->islands_below)
119 cnt += 1 + below.island->polygon->holes.size();
120 Polygons out;
121 out.reserve(cnt);
122 for (const Link &below : this->islands_below) {
123 out.emplace_back(below.island->polygon->contour);
124 append(out, below.island->polygon->holes);
125 }
126 return out;
127 }
void append(std::vector< T, Alloc > &dest, const std::vector< T, Alloc2 > &src)
Definition libslic3r.h:157

References Slic3r::append().

Here is the call graph for this function:

◆ support_force_deficit()

float Slic3r::sla::SupportPointGenerator::Structure::support_force_deficit ( const float tear_pressure) const
inline
136{ return this->area * tear_pressure - this->supports_force_total(); }
float supports_force_total() const
Definition SupportPointGenerator.hpp:69

References supports_force_total().

Here is the call graph for this function:

◆ supports_force_total()

float Slic3r::sla::SupportPointGenerator::Structure::supports_force_total ( ) const
inline
float supports_force_this_layer
Definition SupportPointGenerator.hpp:67
float supports_force_inherited
Definition SupportPointGenerator.hpp:68

Referenced by Slic3r::sla::SupportPointGenerator::add_support_points(), and support_force_deficit().

Here is the caller graph for this function:

Member Data Documentation

◆ area

const float Slic3r::sla::SupportPointGenerator::Structure::area = 0.f

◆ bbox

const BoundingBox Slic3r::sla::SupportPointGenerator::Structure::bbox

Referenced by Structure(), overlap_area(), and overlaps().

◆ centroid

const Vec2f Slic3r::sla::SupportPointGenerator::Structure::centroid = Vec2f::Zero()

Referenced by Structure().

◆ dangling_areas

ExPolygons Slic3r::sla::SupportPointGenerator::Structure::dangling_areas

◆ islands_above

std::vector<Link> Slic3r::sla::SupportPointGenerator::Structure::islands_above

◆ islands_below

std::vector<Link> Slic3r::sla::SupportPointGenerator::Structure::islands_below

◆ layer

◆ overhangs

ExPolygons Slic3r::sla::SupportPointGenerator::Structure::overhangs

◆ overhangs_area

float Slic3r::sla::SupportPointGenerator::Structure::overhangs_area = 0.f

◆ overhangs_slopes

ExPolygons Slic3r::sla::SupportPointGenerator::Structure::overhangs_slopes

◆ polygon

const ExPolygon* Slic3r::sla::SupportPointGenerator::Structure::polygon = nullptr

◆ supports_force_inherited

float Slic3r::sla::SupportPointGenerator::Structure::supports_force_inherited = 0.f

◆ supports_force_this_layer

float Slic3r::sla::SupportPointGenerator::Structure::supports_force_this_layer = 0.f

◆ zlevel

float Slic3r::sla::SupportPointGenerator::Structure::zlevel = 0

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