![]() |
Prusa Slicer 2.6.0
|
Namespaces | |
| namespace | LinearAlg2D |
Classes | |
| class | BeadingStrategy |
| class | BeadingStrategyFactory |
| class | DistributedBeadingStrategy |
| struct | ExtrusionJunction |
| struct | ExtrusionLine |
| class | HalfEdge |
| class | HalfEdgeGraph |
| class | HalfEdgeNode |
| class | LimitedBeadingStrategy |
| class | OuterWallInsetBeadingStrategy |
| class | PathsPointIndex |
| struct | PathsPointIndexLocator |
| class | PointMatrix |
| struct | PolygonsPointIndexSegmentLocator |
| class | PolygonsSegmentIndex |
| class | PolylineStitcher |
| class | RedistributeBeadingStrategy |
| class | SkeletalTrapezoidation |
| class | SkeletalTrapezoidationEdge |
| class | SkeletalTrapezoidationGraph |
| class | SkeletalTrapezoidationJoint |
| class | SparseGrid |
| Sparse grid which can locate spatially nearby elements efficiently. More... | |
| class | SparseLineGrid |
| Sparse grid which can locate spatially nearby elements efficiently. More... | |
| class | SparsePointGrid |
| Sparse grid which can locate spatially nearby elements efficiently. More... | |
| class | SquareGrid |
| class | STHalfEdge |
| class | STHalfEdgeNode |
| class | VoronoiUtils |
| class | WallToolPaths |
| class | WideningBeadingStrategy |
Typedefs | |
| using | BeadingStrategyPtr = std::unique_ptr< BeadingStrategy > |
| using | PointMap = SkeletalTrapezoidation::PointMap |
| using | NodeSet = SkeletalTrapezoidation::NodeSet |
| using | LineJunctions = std::vector< ExtrusionJunction > |
| using | VariableWidthLines = std::vector< ExtrusionLine > |
| using | PolygonsPointIndex = PathsPointIndex< Polygons > |
| using | PolygonsPointIndexLocator = PathsPointIndexLocator< Polygons > |
| typedef SparseLineGrid< PolygonsPointIndex, PolygonsPointIndexSegmentLocator > | LocToLineGrid |
Variables | |
| constexpr bool | fill_outline_gaps = true |
| constexpr coord_t | meshfix_maximum_resolution = scaled<coord_t>(0.5) |
| constexpr coord_t | meshfix_maximum_deviation = scaled<coord_t>(0.025) |
| constexpr coord_t | meshfix_maximum_extrusion_area_deviation = scaled<coord_t>(2.) |
| class Slic3r::Arachne::HalfEdgeGraph |
Inheritance diagram for Slic3r::Arachne::HalfEdgeGraph< node_data_t, edge_data_t, derived_node_t, derived_edge_t >:
Collaboration diagram for Slic3r::Arachne::HalfEdgeGraph< node_data_t, edge_data_t, derived_node_t, derived_edge_t >:| Class Members | ||
|---|---|---|
| typedef derived_edge_t | edge_t | |
| typedef list< edge_t > | Edges | |
| typedef derived_node_t | node_t | |
| typedef list< node_t > | Nodes | |
| Class Members | ||
|---|---|---|
| Edges | edges | |
| Nodes | nodes | |
| using Slic3r::Arachne::BeadingStrategyPtr = typedef std::unique_ptr<BeadingStrategy> |
| using Slic3r::Arachne::LineJunctions = typedef std::vector<ExtrusionJunction> |
| typedef SparseLineGrid<PolygonsPointIndex, PolygonsPointIndexSegmentLocator> Slic3r::Arachne::LocToLineGrid |
| using Slic3r::Arachne::NodeSet = typedef SkeletalTrapezoidation::NodeSet |
| using Slic3r::Arachne::PointMap = typedef SkeletalTrapezoidation::PointMap |
| using Slic3r::Arachne::PolygonsPointIndex = typedef PathsPointIndex<Polygons> |
| using Slic3r::Arachne::PolygonsPointIndexLocator = typedef PathsPointIndexLocator<Polygons> |
| using Slic3r::Arachne::VariableWidthLines = typedef std::vector<ExtrusionLine> |
|
strong |
| Enumerator | |
|---|---|
| NO_ISSUE_DETECTED | |
| MISSING_VORONOI_VERTEX | |
| NON_PLANAR_VORONOI_DIAGRAM | |
| VORONOI_EDGE_INTERSECTING_INPUT_SEGMENT | |
| OTHER_TYPE_OF_VORONOI_DIAGRAM_DEGENERATION | |
| std::unique_ptr< LocToLineGrid > Slic3r::Arachne::createLocToLineGrid | ( | const Polygons & | polygons, |
| int | square_size | ||
| ) |
Referenced by fixSelfIntersections().
Here is the caller graph for this function:
|
static |
References Slic3r::Arachne::PolygonsSegmentIndex::from(), Slic3r::Arachne::VoronoiUtils::getSourceSegment(), has_finite_edge_with_non_finite_vertex(), Slic3r::Arachne::VoronoiUtils::is_finite(), Slic3r::Arachne::VoronoiUtils::p(), and Slic3r::Arachne::PolygonsSegmentIndex::to().
Referenced by Slic3r::Arachne::SkeletalTrapezoidation::constructFromPolygons(), and detect_voronoi_diagram_known_issues().
Here is the call graph for this function:
Here is the caller graph for this function:| VoronoiDiagramStatus Slic3r::Arachne::detect_voronoi_diagram_known_issues | ( | const Geometry::VoronoiDiagram & | voronoi_diagram, |
| const std::vector< SkeletalTrapezoidation::Segment > & | segments | ||
| ) |
References detect_missing_voronoi_vertex(), detect_voronoi_edge_intersecting_input_segment(), Slic3r::Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_angle(), MISSING_VORONOI_VERTEX, NO_ISSUE_DETECTED, NON_PLANAR_VORONOI_DIAGRAM, and VORONOI_EDGE_INTERSECTING_INPUT_SEGMENT.
Referenced by Slic3r::Arachne::SkeletalTrapezoidation::constructFromPolygons(), and try_to_fix_degenerated_voronoi_diagram_by_rotation().
Here is the call graph for this function:
Here is the caller graph for this function:| bool Slic3r::Arachne::detect_voronoi_edge_intersecting_input_segment | ( | const Geometry::VoronoiDiagram & | voronoi_diagram, |
| const std::vector< VoronoiUtils::Segment > & | segments | ||
| ) |
Referenced by detect_voronoi_diagram_known_issues().
Here is the caller graph for this function:References createLocToLineGrid(), ClipperLib::pftEvenOdd, Slic3r::Arachne::LinearAlg2D::pointIsLeftOfLine(), segment(), ClipperLib::SimplifyPolygons(), and Slic3r::sqr().
Referenced by Slic3r::Arachne::WallToolPaths::generate().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
References Slic3r::Arachne::VoronoiUtils::is_finite().
Referenced by detect_missing_voronoi_vertex().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
References Slic3r::Arachne::HalfEdgeGraph< node_data_t, edge_data_t, derived_node_t, derived_edge_t >::edges.
Referenced by Slic3r::Arachne::SkeletalTrapezoidation::constructFromPolygons().
Here is the caller graph for this function:
|
inline |
References Slic3r::Arachne::ExtrusionJunction::p.
Referenced by Slic3r::Arachne::PathsPointIndexLocator< Paths >::operator()(), Slic3r::Arachne::PathsPointIndex< Paths >::p(), and Slic3r::Arachne::PolylineStitcher< Paths, Path, Junction >::stitch().
Here is the caller graph for this function:Referenced by Slic3r::Arachne::SkeletalTrapezoidation::applyTransitions(), Slic3r::Arachne::SkeletalTrapezoidation::generateExtraRibs(), and Slic3r::Arachne::LinearAlg2D::isInsideCorner().
Here is the caller graph for this function:
|
inline |
|
constexpr |
References Slic3r::angle(), Slic3r::Arachne::LinearAlg2D::getAngleLeft(), M_PI, Slic3r::MultiPoint::points, and Slic3r::MultiPoint::size().
Referenced by Slic3r::Arachne::WallToolPaths::generate(), and removeColinearEdges().
Here is the call graph for this function:
Here is the caller graph for this function:| void Slic3r::Arachne::removeColinearEdges | ( | Polygons & | thiss, |
| const double | max_deviation_angle = 0.0005 |
||
| ) |
References removeColinearEdges().
Here is the call graph for this function:Removes overlapping consecutive line segments which don't delimit a positive area.
References Slic3r::MultiPoint::back(), Slic3r::MultiPoint::points, and Slic3r::MultiPoint::size().
Referenced by Slic3r::Arachne::WallToolPaths::generate().
Here is the call graph for this function:
Here is the caller graph for this function:| void Slic3r::Arachne::removeSmallAreas | ( | Polygons & | thiss, |
| const double | min_area_size, | ||
| const bool | remove_holes | ||
| ) |
References Slic3r::area(), ClipperLib::Area(), and Slic3r::Polygon::contains().
Referenced by Slic3r::Arachne::WallToolPaths::generate().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
References Slic3r::Arachne::HalfEdgeGraph< node_data_t, edge_data_t, derived_node_t, derived_edge_t >::nodes.
Referenced by Slic3r::Arachne::SkeletalTrapezoidation::constructFromPolygons().
Here is the caller graph for this function:| bool Slic3r::Arachne::shorterThan | ( | const T & | shape, |
| const coord_t | check_length | ||
| ) |
References Slic3r::length().
Referenced by Slic3r::Arachne::WallToolPaths::removeSmallLines().
Here is the call graph for this function:
Here is the caller graph for this function:| void Slic3r::Arachne::simplify | ( | Polygon & | thiss, |
| const int64_t | smallest_line_segment_squared, | ||
| const int64_t | allowed_error_distance_squared | ||
| ) |
References Slic3r::Line::distance_to_infinite(), Slic3r::Line::distance_to_infinite_squared(), Slic3r::MultiPoint::empty(), Slic3r::Line::intersection_infinite(), Slic3r::MultiPoint::points, Slic3r::MultiPoint::size(), and Slic3r::sqr().
Referenced by Slic3r::Arachne::WallToolPaths::generate(), and simplify().
Here is the call graph for this function:
Here is the caller graph for this function:| void Slic3r::Arachne::simplify | ( | Polygons & | thiss, |
| const int64_t | smallest_line_segment = scaled<coord_t>(0.01), |
||
| const int64_t | allowed_error_distance = scaled<coord_t>(0.005) |
||
| ) |
Removes vertices of the polygons to make sure that they are not too high resolution.
This removes points which are connected to line segments that are shorter than the smallest_line_segment, unless that would introduce a deviation in the contour of more than allowed_error_distance.
Criteria:
smallest_line_segment allowed_error_distance smallest_line_segment always remains unaltered (but their end points may change if it is connected to a small segment)Simplify uses a heuristic and doesn't neccesarily remove all removable vertices under the above criteria, but simplify may never violate these criteria. Unless the segments or the distance is smaller than the rounding error of 5 micron.
Vertices which introduce an error of less than 5 microns are removed anyway, even if the segments are longer than the smallest line segment. This makes sure that (practically) colinear line segments are joined into a single line segment.
| smallest_line_segment | Maximal length of removed line segments. |
| allowed_error_distance | If removing a vertex introduces a deviation from the original path that is more than this distance, the vertex may not be removed. |
References simplify().
Here is the call graph for this function:
|
inlinestatic |
References Slic3r::Arachne::ExtrusionLine::junctions, and Slic3r::MultiPoint::points.
|
inlinestatic |
References Slic3r::Arachne::ExtrusionLine::begin(), Slic3r::Arachne::ExtrusionLine::end(), Slic3r::Arachne::ExtrusionLine::front(), Slic3r::ThickPolyline::points, Slic3r::Arachne::ExtrusionLine::size(), and Slic3r::ThickPolyline::width.
Referenced by Slic3r::FillConcentric::_fill_surface_single(), Slic3r::extrusion_paths_append(), and Slic3r::extrusion_paths_append().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
References Slic3r::ThickPolyline::points, and Slic3r::ThickPolyline::width.
|
inlinestatic |
References Slic3r::debug_out_path(), detect_voronoi_diagram_known_issues(), Slic3r::dump_voronoi_to_svg(), Slic3r::Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(), NO_ISSUE_DETECTED, Slic3r::to_lines(), and Slic3r::to_points().
Referenced by Slic3r::Arachne::SkeletalTrapezoidation::constructFromPolygons().
Here is the call graph for this function:
Here is the caller graph for this function:
|
constexpr |
|
constexpr |
Referenced by Slic3r::Arachne::WallToolPaths::simplifyToolPaths().