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

#include <src/libslic3r/Measure.hpp>

+ Collaboration diagram for Slic3r::Measure::SurfaceFeature:

Public Member Functions

 SurfaceFeature (SurfaceFeatureType type, const Vec3d &pt1, const Vec3d &pt2, std::optional< Vec3d > pt3=std::nullopt, double value=0.0)
 
 SurfaceFeature (const Vec3d &pt)
 
SurfaceFeatureType get_type () const
 
Vec3d get_point () const
 
std::pair< Vec3d, Vec3dget_edge () const
 
std::tuple< Vec3d, double, Vec3dget_circle () const
 
std::tuple< int, Vec3d, Vec3dget_plane () const
 
std::optional< Vec3dget_extra_point () const
 
bool operator== (const SurfaceFeature &other) const
 
bool operator!= (const SurfaceFeature &other) const
 

Private Attributes

SurfaceFeatureType m_type { SurfaceFeatureType::Undef }
 
Vec3d m_pt1 { Vec3d::Zero() }
 
Vec3d m_pt2 { Vec3d::Zero() }
 
std::optional< Vec3dm_pt3
 
double m_value { 0.0 }
 

Detailed Description

Constructor & Destructor Documentation

◆ SurfaceFeature() [1/2]

Slic3r::Measure::SurfaceFeature::SurfaceFeature ( SurfaceFeatureType  type,
const Vec3d pt1,
const Vec3d pt2,
std::optional< Vec3d pt3 = std::nullopt,
double  value = 0.0 
)
inline
32 : m_type(type), m_pt1(pt1), m_pt2(pt2), m_pt3(pt3), m_value(value) {}
double m_value
Definition Measure.hpp:83
Vec3d m_pt1
Definition Measure.hpp:80
SurfaceFeatureType m_type
Definition Measure.hpp:79
std::optional< Vec3d > m_pt3
Definition Measure.hpp:82
Vec3d m_pt2
Definition Measure.hpp:81

◆ SurfaceFeature() [2/2]

Slic3r::Measure::SurfaceFeature::SurfaceFeature ( const Vec3d pt)
inlineexplicit

Member Function Documentation

◆ get_circle()

std::tuple< Vec3d, double, Vec3d > Slic3r::Measure::SurfaceFeature::get_circle ( ) const
inline

References Slic3r::Measure::Circle, m_pt1, m_pt2, m_type, and m_value.

Referenced by Slic3r::GUI::get_feature_offset(), Slic3r::Measure::get_measurement(), and Slic3r::GUI::GLGizmoMeasure::render_dimensioning().

+ Here is the caller graph for this function:

◆ get_edge()

std::pair< Vec3d, Vec3d > Slic3r::Measure::SurfaceFeature::get_edge ( ) const
inline
44{ assert(m_type == SurfaceFeatureType::Edge); return std::make_pair(m_pt1, m_pt2); }

References Slic3r::Measure::Edge, m_pt1, m_pt2, and m_type.

Referenced by Slic3r::Measure::edge_direction(), Slic3r::Measure::get_measurement(), and Slic3r::GUI::GLGizmoMeasure::render_dimensioning().

+ Here is the caller graph for this function:

◆ get_extra_point()

std::optional< Vec3d > Slic3r::Measure::SurfaceFeature::get_extra_point ( ) const
inline

References m_pt3, m_type, and Slic3r::Measure::Undef.

Referenced by Slic3r::GUI::get_feature_offset(), Slic3r::GUI::is_feature_with_center(), and Slic3r::GUI::GLGizmoMeasure::render_dimensioning().

+ Here is the caller graph for this function:

◆ get_plane()

std::tuple< int, Vec3d, Vec3d > Slic3r::Measure::SurfaceFeature::get_plane ( ) const
inline
50{ assert(m_type == SurfaceFeatureType::Plane); return std::make_tuple(int(m_value), m_pt1, m_pt2); }

References m_pt1, m_pt2, m_type, m_value, and Slic3r::Measure::Plane.

Referenced by Slic3r::Measure::get_measurement(), Slic3r::Measure::plane_normal(), and Slic3r::GUI::GLGizmoMeasure::render_dimensioning().

+ Here is the caller graph for this function:

◆ get_point()

Vec3d Slic3r::Measure::SurfaceFeature::get_point ( ) const
inline
41{ assert(m_type == SurfaceFeatureType::Point); return m_pt1; }

References m_pt1, m_type, and Slic3r::Measure::Point.

Referenced by Slic3r::GUI::get_feature_offset(), Slic3r::Measure::get_measurement(), and Slic3r::GUI::GLGizmoMeasure::render_dimensioning().

+ Here is the caller graph for this function:

◆ get_type()

SurfaceFeatureType Slic3r::Measure::SurfaceFeature::get_type ( ) const
inline
38{ return m_type; }

References m_type.

Referenced by Slic3r::Measure::are_parallel(), Slic3r::Measure::are_perpendicular(), Slic3r::Measure::edge_direction(), Slic3r::GUI::get_feature_offset(), Slic3r::Measure::get_measurement(), Slic3r::GUI::is_feature_with_center(), Slic3r::Measure::plane_normal(), and Slic3r::GUI::GLGizmoMeasure::render_dimensioning().

+ Here is the caller graph for this function:

◆ operator!=()

bool Slic3r::Measure::SurfaceFeature::operator!= ( const SurfaceFeature other) const
inline
74 {
75 return !operator == (other);
76 }
bool operator==(const SurfaceFeature &other) const
Definition Measure.hpp:55

References operator==().

+ Here is the call graph for this function:

◆ operator==()

bool Slic3r::Measure::SurfaceFeature::operator== ( const SurfaceFeature other) const
inline
55 {
56 if (this->m_type != other.m_type) return false;
57 switch (this->m_type)
58 {
59 case SurfaceFeatureType::Undef: { break; }
60 case SurfaceFeatureType::Point: { return (this->m_pt1.isApprox(other.m_pt1)); }
62 return (this->m_pt1.isApprox(other.m_pt1) && this->m_pt2.isApprox(other.m_pt2)) ||
63 (this->m_pt1.isApprox(other.m_pt2) && this->m_pt2.isApprox(other.m_pt1));
64 }
67 return (this->m_pt1.isApprox(other.m_pt1) && this->m_pt2.isApprox(other.m_pt2) && std::abs(this->m_value - other.m_value) < EPSILON);
68 }
69 }
70
71 return false;
72 }
static constexpr double EPSILON
Definition libslic3r.h:51

References Slic3r::Measure::Circle, Slic3r::Measure::Edge, EPSILON, m_pt1, m_pt2, m_type, m_value, Slic3r::Measure::Plane, Slic3r::Measure::Point, and Slic3r::Measure::Undef.

Referenced by operator!=().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_pt1

Vec3d Slic3r::Measure::SurfaceFeature::m_pt1 { Vec3d::Zero() }
private

◆ m_pt2

Vec3d Slic3r::Measure::SurfaceFeature::m_pt2 { Vec3d::Zero() }
private

◆ m_pt3

std::optional<Vec3d> Slic3r::Measure::SurfaceFeature::m_pt3
private

Referenced by get_extra_point().

◆ m_type

SurfaceFeatureType Slic3r::Measure::SurfaceFeature::m_type { SurfaceFeatureType::Undef }
private

◆ m_value

double Slic3r::Measure::SurfaceFeature::m_value { 0.0 }
private

Referenced by get_circle(), get_plane(), and operator==().


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