![]() |
Prusa Slicer 2.6.0
|
#include <src/libslic3r/Arachne/WallToolPaths.hpp>
Collaboration diagram for Slic3r::Arachne::WallToolPaths:Public Types | |
| using | ExtrusionLineSet = ankerl::unordered_dense::set< std::pair< const ExtrusionLine *, const ExtrusionLine * >, boost::hash< std::pair< const ExtrusionLine *, const ExtrusionLine * > > > |
Public Member Functions | |
| WallToolPaths (const Polygons &outline, coord_t bead_width_0, coord_t bead_width_x, size_t inset_count, coord_t wall_0_inset, coordf_t layer_height, const PrintObjectConfig &print_object_config, const PrintConfig &print_config) | |
| const std::vector< VariableWidthLines > & | generate () |
| const std::vector< VariableWidthLines > & | getToolPaths () |
| void | separateOutInnerContour () |
| const Polygons & | getInnerContour () |
Static Public Member Functions | |
| static bool | removeEmptyToolPaths (std::vector< VariableWidthLines > &toolpaths) |
| static ExtrusionLineSet | getRegionOrder (const std::vector< ExtrusionLine * > &input, bool outer_to_inner) |
Static Protected Member Functions | |
| static void | stitchToolPaths (std::vector< VariableWidthLines > &toolpaths, coord_t bead_width_x) |
| static void | removeSmallLines (std::vector< VariableWidthLines > &toolpaths) |
| static void | simplifyToolPaths (std::vector< VariableWidthLines > &toolpaths) |
Private Attributes | |
| const Polygons & | outline |
| coord_t | bead_width_0 |
| coord_t | bead_width_x |
| size_t | inset_count |
| coord_t | wall_0_inset |
| coordf_t | layer_height |
| bool | print_thin_walls |
| coord_t | min_feature_size |
| coord_t | min_bead_width |
| double | small_area_length |
| coord_t | wall_transition_filter_deviation |
| The allowed line width deviation induced by filtering. | |
| coord_t | wall_transition_length |
| float | min_nozzle_diameter |
| bool | toolpaths_generated |
| std::vector< VariableWidthLines > | toolpaths |
| Polygons | inner_contour |
| const PrintObjectConfig & | print_object_config |
| using Slic3r::Arachne::WallToolPaths::ExtrusionLineSet = ankerl::unordered_dense::set<std::pair<const ExtrusionLine *, const ExtrusionLine *>, boost::hash<std::pair<const ExtrusionLine *, const ExtrusionLine *> >> |
| Slic3r::Arachne::WallToolPaths::WallToolPaths | ( | const Polygons & | outline, |
| coord_t | bead_width_0, | ||
| coord_t | bead_width_x, | ||
| size_t | inset_count, | ||
| coord_t | wall_0_inset, | ||
| coordf_t | layer_height, | ||
| const PrintObjectConfig & | print_object_config, | ||
| const PrintConfig & | print_config | ||
| ) |
A class that creates the toolpaths given an outline, nominal bead width and maximum amount of walls
| outline | An outline of the area in which the ToolPaths are to be generated |
| bead_width_0 | The bead width of the first wall used in the generation of the toolpaths |
| bead_width_x | The bead width of the inner walls used in the generation of the toolpaths |
| inset_count | The maximum number of parallel extrusion lines that make up the wall |
| wall_0_inset | How far to inset the outer wall, to make it adhere better to other walls. |
References Slic3r::Arachne, min_bead_width, min_feature_size, min_nozzle_diameter, print_object_config, wall_transition_filter_deviation, and wall_transition_length.
| const std::vector< VariableWidthLines > & Slic3r::Arachne::WallToolPaths::generate | ( | ) |
Generates the Toolpaths
References Slic3r::area(), bead_width_0, bead_width_x, Slic3r::Geometry::deg2rad(), Slic3r::Arachne::fixSelfIntersections(), Slic3r::Arachne::SkeletalTrapezoidation::generateToolpaths(), inset_count, layer_height, Slic3r::Arachne::BeadingStrategyFactory::makeStrategy(), Slic3r::Arachne::meshfix_maximum_deviation, Slic3r::Arachne::meshfix_maximum_resolution, min_bead_width, min_feature_size, Slic3r::offset(), outline, print_object_config, print_thin_walls, Slic3r::Arachne::removeColinearEdges(), Slic3r::Arachne::removeDegenerateVerts(), removeEmptyToolPaths(), Slic3r::Arachne::removeSmallAreas(), removeSmallLines(), Slic3r::Flow::rounded_rectangle_extrusion_width_from_spacing(), separateOutInnerContour(), Slic3r::Arachne::simplify(), simplifyToolPaths(), small_area_length, stitchToolPaths(), toolpaths, toolpaths_generated, Slic3r::union_(), wall_0_inset, wall_transition_filter_deviation, and wall_transition_length.
Referenced by getInnerContour(), and getToolPaths().
Here is the call graph for this function:
Here is the caller graph for this function:Gets the inner contour of the area which is inside of the generated tool paths.
If the walls haven't been generated yet, this will lazily call the generate() function to generate the walls with variable width. The resulting polygon will snugly match the inside of the variable-width walls where the walls get limited by the LimitedBeadingStrategy to a maximum wall count. If there are no walls, the outline will be returned.
References generate(), inner_contour, inset_count, outline, and toolpaths_generated.
Referenced by Slic3r::PerimeterGenerator::process_arachne().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Get the order constraints of the insets when printing walls per region / hole. Each returned pair consists of adjacent wall lines where the left has an inset_idx one lower than the right.
Odd walls should always go after their enclosing wall polygons.
| outer_to_inner | Whether the wall polygons with a lower inset_idx should go before those with a higher one. |
References Slic3r::grid(), and input().
Referenced by Slic3r::PerimeterGenerator::process_arachne().
Here is the call graph for this function:
Here is the caller graph for this function:| const std::vector< VariableWidthLines > & Slic3r::Arachne::WallToolPaths::getToolPaths | ( | ) |
Gets the toolpaths, if this called before generate() it will first generate the Toolpaths
References generate(), toolpaths, and toolpaths_generated.
Referenced by Slic3r::FillConcentric::_fill_surface_single(), and Slic3r::PerimeterGenerator::process_arachne().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Removes empty paths from the toolpaths
| toolpaths | the VariableWidthPaths generated with generate() |
References toolpaths.
Referenced by generate().
Here is the caller graph for this function:
|
staticprotected |
Remove polylines shorter than half the smallest line width along that polyline.
References Slic3r::Arachne::ExtrusionLine::is_closed, Slic3r::Arachne::ExtrusionLine::is_odd, Slic3r::Arachne::shorterThan(), and toolpaths.
Referenced by generate().
Here is the call graph for this function:
Here is the caller graph for this function:| void Slic3r::Arachne::WallToolPaths::separateOutInnerContour | ( | ) |
Compute the inner contour of the walls. This contour indicates where the walled area ends and its infill begins. The inside can then be filled, e.g. with skin/infill for the walls of a part, or with a pattern in the case of infill with extra infill walls.
References inner_contour, inset_count, ClipperLib::pftEvenOdd, toolpaths, and Slic3r::union_().
Referenced by generate().
Here is the call graph for this function:
Here is the caller graph for this function:
|
staticprotected |
Simplifies the variable-width toolpaths by calling the simplify on every line in the toolpath using the provided settings.
| settings | The settings as provided by the user |
References Slic3r::Arachne::meshfix_maximum_deviation, Slic3r::Arachne::meshfix_maximum_extrusion_area_deviation, Slic3r::Arachne::meshfix_maximum_resolution, and toolpaths.
Referenced by generate().
Here is the caller graph for this function:
|
staticprotected |
Stitch the polylines together and form closed polygons.
Works on both toolpaths and inner contours simultaneously.
References bead_width_x, col(), Slic3r::debug_out_path(), Slic3r::SVG::draw(), Slic3r::SVG::draw_outline(), error, Slic3r::MultiPoint::front(), Slic3r::BoundingBoxBase< PointType, APointsType >::merge(), Slic3r::MultiPoint::size(), Slic3r::Arachne::PolylineStitcher< Paths, Path, Junction >::stitch(), and toolpaths.
Referenced by generate().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Referenced by generate().
|
private |
Referenced by generate(), and stitchToolPaths().
|
private |
Referenced by getInnerContour(), and separateOutInnerContour().
|
private |
Referenced by generate(), getInnerContour(), and separateOutInnerContour().
|
private |
Referenced by generate().
|
private |
Referenced by WallToolPaths(), and generate().
|
private |
Referenced by WallToolPaths(), and generate().
|
private |
Referenced by WallToolPaths().
Referenced by generate(), and getInnerContour().
|
private |
Referenced by WallToolPaths(), and generate().
|
private |
Referenced by generate().
|
private |
Referenced by generate().
|
private |
|
private |
Referenced by generate(), getInnerContour(), and getToolPaths().
|
private |
Referenced by generate().
|
private |
The allowed line width deviation induced by filtering.
Referenced by WallToolPaths(), and generate().
|
private |
Referenced by WallToolPaths(), and generate().