![]() |
Prusa Slicer 2.6.0
|
#include <src/libslic3r/Arachne/BeadingStrategy/LimitedBeadingStrategy.hpp>
Inheritance diagram for Slic3r::Arachne::LimitedBeadingStrategy:
Collaboration diagram for Slic3r::Arachne::LimitedBeadingStrategy:Public Member Functions | |
| LimitedBeadingStrategy (coord_t max_bead_count, BeadingStrategyPtr parent) | |
| ~LimitedBeadingStrategy () override=default | |
| Beading | compute (coord_t thickness, coord_t bead_count) const override |
| coord_t | getOptimalThickness (coord_t bead_count) const override |
| coord_t | getTransitionThickness (coord_t lower_bead_count) const override |
| coord_t | getOptimalBeadCount (coord_t thickness) const override |
| std::string | toString () const override |
| coord_t | getTransitioningLength (coord_t lower_bead_count) const override |
| float | getTransitionAnchorPos (coord_t lower_bead_count) const override |
| virtual std::vector< coord_t > | getNonlinearThicknesses (coord_t lower_bead_count) const |
| double | getSplitMiddleThreshold () const |
| double | getTransitioningAngle () const |
Protected Attributes | |
| const coord_t | max_bead_count |
| const BeadingStrategyPtr | parent |
| std::string | name |
| coord_t | optimal_width |
| double | wall_split_middle_threshold |
| Optimal bead width, nominal width off the walls in 'ideal' circumstances. | |
| double | wall_add_middle_threshold |
| Threshold when a middle wall should be split into two, as a ratio of the optimal wall width. | |
| coord_t | default_transition_length |
| Threshold when a new middle wall should be added between an even number of walls, as a ratio of the optimal wall width. | |
| double | transitioning_angle |
| The length of the region to smoothly transfer between bead counts. | |
This is a meta-strategy that can be applied on top of any other beading strategy, which limits the thickness of the walls to the thickness that the lines can reasonably print.
The width of the wall is limited to the maximum number of contours times the maximum width of each of these contours.
If the width of the wall gets limited, this strategy outputs one additional bead with 0 width. This bead is used to denote the limits of the walled area. Other structures can then use this border to align their structures to, such as to create correctly overlapping infill or skin, or to align the infill pattern to any extra infill walls.
| Slic3r::Arachne::LimitedBeadingStrategy::LimitedBeadingStrategy | ( | coord_t | max_bead_count, |
| BeadingStrategyPtr | parent | ||
| ) |
References max_bead_count.
|
overridedefault |
|
overridevirtual |
Retrieve the bead widths with which to cover a given thickness.
Requirement: Given a constant bead_count the output of each bead width must change gradually along with the thickness.
bead_count might be different from the BeadingStrategy::optimal_bead_count Implements Slic3r::Arachne::BeadingStrategy.
References Slic3r::Arachne::BeadingStrategy::Beading::bead_widths, Slic3r::Arachne::BeadingStrategy::Beading::left_over, max_bead_count, parent, Slic3r::Arachne::BeadingStrategy::Beading::toolpath_locations, and Slic3r::Arachne::BeadingStrategy::Beading::total_thickness.
|
virtualinherited |
Get the locations in a bead count region where BeadingStrategy::compute exhibits a bend in the widths. Ordered from lower thickness to higher.
This is used to insert extra support bones into the skeleton, so that the resulting beads in long trapezoids don't linearly change between the two ends.
Reimplemented in Slic3r::Arachne::WideningBeadingStrategy.
Referenced by Slic3r::Arachne::SkeletalTrapezoidation::generateExtraRibs().
Here is the caller graph for this function:
|
overridevirtual |
The number of beads should we ideally usefor a given model thickness
Implements Slic3r::Arachne::BeadingStrategy.
References getOptimalThickness(), max_bead_count, and parent.
Here is the call graph for this function:
|
overridevirtual |
The ideal thickness for a given
| bead_count |
Reimplemented from Slic3r::Arachne::BeadingStrategy.
References max_bead_count, and parent.
Referenced by getOptimalBeadCount().
Here is the caller graph for this function:
|
inherited |
References Slic3r::Arachne::BeadingStrategy::wall_split_middle_threshold.
|
overridevirtual |
The fraction of the transition length to put between the lower end of the transition and the point where the unsmoothed bead count jumps.
Transitions are used to smooth out the jumps in integer bead count; the jumps turn into ramps which could be positioned relative to the jump location.
Reimplemented from Slic3r::Arachne::BeadingStrategy.
References parent.
|
inherited |
References Slic3r::Arachne::BeadingStrategy::transitioning_angle.
Referenced by Slic3r::Arachne::SkeletalTrapezoidation::updateIsCentral().
Here is the caller graph for this function:
|
overridevirtual |
The length of the transitioning region along the marked / significant regions of the skeleton.
Transitions are used to smooth out the jumps in integer bead count; the jumps turn into ramps with some incline defined by their length.
Reimplemented from Slic3r::Arachne::BeadingStrategy.
References parent.
|
overridevirtual |
The model thickness at which BeadingStrategy::optimal_bead_count transitions from lower_bead_count to lower_bead_count + 1
Reimplemented from Slic3r::Arachne::BeadingStrategy.
References max_bead_count, and parent.
|
overridevirtual |
Reimplemented from Slic3r::Arachne::BeadingStrategy.
References parent.
|
protectedinherited |
Threshold when a new middle wall should be added between an even number of walls, as a ratio of the optimal wall width.
Referenced by Slic3r::Arachne::BeadingStrategy::getTransitioningLength().
Referenced by LimitedBeadingStrategy(), compute(), getOptimalBeadCount(), getOptimalThickness(), and getTransitionThickness().
|
protectedinherited |
Referenced by Slic3r::Arachne::BeadingStrategy::BeadingStrategy(), Slic3r::Arachne::DistributedBeadingStrategy::DistributedBeadingStrategy(), Slic3r::Arachne::OuterWallInsetBeadingStrategy::OuterWallInsetBeadingStrategy(), Slic3r::Arachne::RedistributeBeadingStrategy::RedistributeBeadingStrategy(), and Slic3r::Arachne::BeadingStrategy::toString().
|
protectedinherited |
|
protected |
|
protectedinherited |
The length of the region to smoothly transfer between bead counts.
The maximum angle between outline segments smaller than which we are going to add transitions Equals 180 - the "limit bisector angle" from the paper
Referenced by Slic3r::Arachne::BeadingStrategy::getTransitioningAngle().
|
protectedinherited |
Threshold when a middle wall should be split into two, as a ratio of the optimal wall width.
Referenced by Slic3r::Arachne::DistributedBeadingStrategy::getOptimalBeadCount(), and Slic3r::Arachne::BeadingStrategy::getTransitionThickness().
|
protectedinherited |
Optimal bead width, nominal width off the walls in 'ideal' circumstances.
Referenced by Slic3r::Arachne::DistributedBeadingStrategy::getOptimalBeadCount(), Slic3r::Arachne::BeadingStrategy::getSplitMiddleThreshold(), and Slic3r::Arachne::BeadingStrategy::getTransitionThickness().