Namespaces | |
| namespace | detail |
Classes | |
| struct | ModifierRegion |
| struct | PreciseSeamWarnings |
| struct | ExtractionContext |
| struct | PreparedPerimeter |
| struct | PerimeterPosition |
| struct | StrongSeamTarget |
| struct | PerimeterSegment |
| struct | SegmentExtraction |
| struct | WeakModifierSegment |
Typedefs | |
| using | ModifierRegions = std::vector<ModifierRegion> |
| using | ModifierSlices = std::vector<ModifierRegions> |
| using | ModifierRegionsCache = std::unordered_map<const ModelVolume*, ModifierSlices> |
Enumerations | |
| enum class | EnforcedBlockedSeamPoint |
Functions | |
| ModifierRegions | prepare_modifier_regions (ExPolygons regions) |
| ModifierSlices | prepare_modifier_slices (std::vector< ExPolygons > slices) |
| static void | prepare_strong_segment (PerimeterSegment &segment, ModelVolumeType mode, bool compare_lengths) |
| SegmentExtraction | extract_perimeter_segments (const PreparedPerimeter &prepared, const ModifierRegions &modifier, ModelVolumeType mode, const ExtractionContext &context) |
| void | init_precise_seam_data (std::vector< const ModelVolume * > &strong_volumes_out, std::vector< const ModelVolume * > &weak_volumes_out, bool &has_strong_out, const ModelObject *model_object) |
| static std::pair< Point, size_t > | insert_point_into_perimeter (const Point &point, size_t edge_start_idx, Polygon &perimeter_polygon) |
| static void | refine_at_vertex (size_t point_idx, int direction, Polygon &perimeter_polygon) |
| static void | record_extraction (PreciseSeamWarnings *warnings, const ModelVolume *modifier, const SegmentExtraction &extracted) |
| std::optional< Point > | insert_strong_seam_point (const std::vector< const ModelVolume * > &strong_volumes, Polygon &polygon, const PreparedPerimeter &prepared, const Layer *layer, const ModifierRegionsCache &slices_cache, PreciseSeamWarnings *warnings) |
| static EnforcedBlockedSeamPoint | convert_weak_modifier_type (ModelVolumeType type) |
| static std::vector< WeakModifierSegment > | prepare_weak_modifier_segments (std::vector< WeakModifierSegment > result, Polygon &polygon) |
| std::vector< WeakModifierSegment > | collect_weak_modifier_segments (const std::vector< const ModelVolume * > &weak_volumes, Polygon &polygon, const PreparedPerimeter &prepared, const Layer *layer, const ModifierRegionsCache &slices_cache, PreciseSeamWarnings *warnings) |
| void | apply_weak_modifiers_to_perimeter (const std::vector< WeakModifierSegment > &weak_segments, PrintObjectSeamData::LayerSeams &result, const SeamPlacerImpl::Perimeter &perimeter, bool &some_point_enforced, PreciseSeamWarnings *warnings) |
| void | restore_precise_seam_positions (std::vector< PrintObjectSeamData::LayerSeams > &layers) |
Variables | |
| static constexpr double | MACHINE_PRECISION_SQUARED = 2.5 |
| static constexpr coord_t | TOLERANCE_LINEAR = 1000 |
| static constexpr coord_t | TOLERANCE_SQUARED = TOLERANCE_LINEAR * TOLERANCE_LINEAR |
| constexpr size_t | failed_fragment_log_limit = 10 |
| struct Slic3r::PreciseSeam::ExtractionContext |
| Class Members | ||
|---|---|---|
| const Layer * | layer = nullptr | |
| const ModelVolume * | modifier = nullptr | |
| PreciseSeamWarnings * | warnings = nullptr | |
| struct Slic3r::PreciseSeam::StrongSeamTarget |
| Class Members | ||
|---|---|---|
| size_t | edge_index | |
| Point | point | |
| struct Slic3r::PreciseSeam::PerimeterSegment |
| Class Members | ||
|---|---|---|
| PerimeterPosition | begin | |
| vector< size_t > | edge_indices | |
| PerimeterPosition | end | |
| double | length = 0. | |
| Polyline | polyline | |
| optional< StrongSeamTarget > | strong_target | |
| struct Slic3r::PreciseSeam::SegmentExtraction |
| Class Members | ||
|---|---|---|
| size_t | discarded_fragments = 0 | |
| bool | full_containment = false | |
| vector< PerimeterSegment > | segments | |
| bool | valid = true | |
| struct Slic3r::PreciseSeam::WeakModifierSegment |
| Class Members | ||
|---|---|---|
| Point | left_point | |
| PerimeterPosition | left_position | |
| const ModelVolume * | modifier = nullptr | |
| Point | right_point | |
| PerimeterPosition | right_position | |
| EnforcedBlockedSeamPoint | type | |
| bool | whole_perimeter = false | |
| using Slic3r::PreciseSeam::ModifierRegions = std::vector<ModifierRegion> |
| using Slic3r::PreciseSeam::ModifierRegionsCache = std::unordered_map<const ModelVolume*, ModifierSlices> |
| using Slic3r::PreciseSeam::ModifierSlices = std::vector<ModifierRegions> |
|
strong |
| void Slic3r::PreciseSeam::apply_weak_modifiers_to_perimeter | ( | const std::vector< WeakModifierSegment > & | weak_segments, |
| PrintObjectSeamData::LayerSeams & | result, | ||
| const SeamPlacerImpl::Perimeter & | perimeter, | ||
| bool & | some_point_enforced, | ||
| PreciseSeamWarnings * | warnings ) |
References Slic3r::SeamPlacerImpl::Perimeter::end_index, Slic3r::PreciseSeam::PreciseSeamWarnings::modifier_usage, Slic3r::PrintObjectSeamData::LayerSeams::points, Slic3r::PreciseSeam::PreciseSeamWarnings::set(), Slic3r::SeamPlacerImpl::Perimeter::start_index, and Slic3r::unscale().
Referenced by Slic3r::SeamPlacerImpl::process_perimeter_polygon().
| std::vector< WeakModifierSegment > Slic3r::PreciseSeam::collect_weak_modifier_segments | ( | const std::vector< const ModelVolume * > & | weak_volumes, |
| Polygon & | polygon, | ||
| const PreparedPerimeter & | prepared, | ||
| const Layer * | layer, | ||
| const ModifierRegionsCache & | slices_cache, | ||
| PreciseSeamWarnings * | warnings ) |
References convert_weak_modifier_type(), extract_perimeter_segments(), Slic3r::PreciseSeam::SegmentExtraction::full_containment, Slic3r::Layer::id(), Slic3r::Layer::object(), Slic3r::PreciseSeam::PreparedPerimeter::polygon, prepare_weak_modifier_segments(), Slic3r::SlicingParameters::raft_layers(), record_extraction(), Slic3r::PreciseSeam::SegmentExtraction::segments, Slic3r::PrintObject::slicing_parameters(), and Slic3r::PreciseSeam::PreparedPerimeter::valid.
Referenced by Slic3r::SeamPlacerImpl::process_perimeter_polygon().
|
static |
References Slic3r::INVALID, Slic3r::is_precise_seam_weak(), Slic3r::MODEL_PART, Slic3r::NEGATIVE_VOLUME, Slic3r::PARAMETER_MODIFIER, Slic3r::PRECISE_SEAM_BLOCKED, Slic3r::PRECISE_SEAM_CENTER, Slic3r::PRECISE_SEAM_ENFORCED, Slic3r::PRECISE_SEAM_LEFT, Slic3r::PRECISE_SEAM_NEUTRAL, Slic3r::PRECISE_SEAM_RIGHT, Slic3r::SUPPORT_BLOCKER, and Slic3r::SUPPORT_ENFORCER.
Referenced by collect_weak_modifier_segments().
| SegmentExtraction Slic3r::PreciseSeam::extract_perimeter_segments | ( | const PreparedPerimeter & | prepared, |
| const ModifierRegions & | modifier, | ||
| ModelVolumeType | mode, | ||
| const ExtractionContext & | context ) |
References Slic3r::PreciseSeam::detail::append_fragment(), Slic3r::PreciseSeam::PerimeterSegment::begin, Slic3r::PreciseSeam::PreparedPerimeter::bounds, Slic3r::cast(), count, Slic3r::PreciseSeam::SegmentExtraction::discarded_fragments, Slic3r::PreciseSeam::PerimeterPosition::edge_index, Slic3r::PreciseSeam::PerimeterSegment::edge_indices, Slic3r::edge_length(), Slic3r::PreciseSeam::PerimeterSegment::end, Slic3r::PreciseSeam::SegmentExtraction::full_containment, Slic3r::intersection_pl(), Slic3r::is_precise_seam_strong(), Slic3r::PreciseSeam::PreparedPerimeter::line, Slic3r::BoundingBoxBase< PointType, APointsType >::overlap(), Slic3r::PreciseSeam::PerimeterPosition::parameter, Slic3r::MultiPoint::points, Slic3r::PreciseSeam::PreparedPerimeter::polygon, Slic3r::PreciseSeam::PerimeterSegment::polyline, prepare_strong_segment(), Slic3r::PreciseSeam::SegmentExtraction::segments, Slic3r::MultiPoint::size(), TOLERANCE_LINEAR, Slic3r::PreciseSeam::PreparedPerimeter::valid, and Slic3r::PreciseSeam::SegmentExtraction::valid.
Referenced by collect_weak_modifier_segments(), and insert_strong_seam_point().
| void Slic3r::PreciseSeam::init_precise_seam_data | ( | std::vector< const ModelVolume * > & | strong_volumes_out, |
| std::vector< const ModelVolume * > & | weak_volumes_out, | ||
| bool & | has_strong_out, | ||
| const ModelObject * | model_object ) |
References Slic3r::ModelVolume::is_precise_seam(), Slic3r::ModelVolume::is_precise_seam_strong(), and Slic3r::ModelObject::volumes.
Referenced by Slic3r::SeamPlacer::init().
|
static |
References Slic3r::MultiPoint::points, and TOLERANCE_SQUARED.
Referenced by insert_strong_seam_point(), and prepare_weak_modifier_segments().
| std::optional< Point > Slic3r::PreciseSeam::insert_strong_seam_point | ( | const std::vector< const ModelVolume * > & | strong_volumes, |
| Polygon & | polygon, | ||
| const PreparedPerimeter & | prepared, | ||
| const Layer * | layer, | ||
| const ModifierRegionsCache & | slices_cache, | ||
| PreciseSeamWarnings * | warnings ) |
References Slic3r::PreciseSeam::StrongSeamTarget::edge_index, extract_perimeter_segments(), Slic3r::PreciseSeam::PreciseSeamWarnings::full_containment, Slic3r::PreciseSeam::SegmentExtraction::full_containment, Slic3r::Layer::id(), insert_point_into_perimeter(), Slic3r::PreciseSeam::PreciseSeamWarnings::mark(), Slic3r::PreciseSeam::PreciseSeamWarnings::multiple_intersections, Slic3r::Layer::object(), Slic3r::PreciseSeam::StrongSeamTarget::point, Slic3r::PreciseSeam::PreparedPerimeter::polygon, Slic3r::SlicingParameters::raft_layers(), record_extraction(), refine_at_vertex(), Slic3r::PreciseSeam::SegmentExtraction::segments, Slic3r::PrintObject::slicing_parameters(), and Slic3r::PreciseSeam::PreparedPerimeter::valid.
Referenced by Slic3r::SeamPlacerImpl::process_perimeter_polygon().
| ModifierRegions Slic3r::PreciseSeam::prepare_modifier_regions | ( | ExPolygons | regions | ) |
Referenced by prepare_modifier_slices().
| ModifierSlices Slic3r::PreciseSeam::prepare_modifier_slices | ( | std::vector< ExPolygons > | slices | ) |
References prepare_modifier_regions().
Referenced by Slic3r::SeamPlacer::init().
|
static |
References Slic3r::cast(), Slic3r::center(), Slic3r::length(), Slic3r::PRECISE_SEAM_CENTER, and Slic3r::PRECISE_SEAM_LEFT.
Referenced by extract_perimeter_segments().
|
static |
References Slic3r::cast(), Slic3r::edge_length(), Slic3r::SeamPlacer::enforcer_oversampling_distance, insert_point_into_perimeter(), Slic3r::PreciseSeam::WeakModifierSegment::left_point, Slic3r::PreciseSeam::WeakModifierSegment::left_position, Slic3r::MultiPoint::points, refine_at_vertex(), Slic3r::PreciseSeam::WeakModifierSegment::right_point, Slic3r::PreciseSeam::WeakModifierSegment::right_position, scale_, Slic3r::MultiPoint::size(), and Slic3r::PreciseSeam::WeakModifierSegment::whole_perimeter.
Referenced by collect_weak_modifier_segments().
|
static |
References Slic3r::PreciseSeam::PreciseSeamWarnings::ModifierUsage::checked, Slic3r::PreciseSeam::SegmentExtraction::discarded_fragments, Slic3r::PreciseSeam::PreciseSeamWarnings::failed_types, Slic3r::PreciseSeam::SegmentExtraction::full_containment, Slic3r::PreciseSeam::PreciseSeamWarnings::mark(), Slic3r::PreciseSeam::PreciseSeamWarnings::modifier_usage, Slic3r::PreciseSeam::PreciseSeamWarnings::ModifierUsage::reached, Slic3r::PreciseSeam::SegmentExtraction::segments, Slic3r::PreciseSeam::PreciseSeamWarnings::set(), Slic3r::ModelVolume::type(), and Slic3r::PreciseSeam::SegmentExtraction::valid.
Referenced by collect_weak_modifier_segments(), and insert_strong_seam_point().
|
static |
References Slic3r::cast(), Slic3r::edge_length(), Slic3r::offset(), Slic3r::MultiPoint::points, and TOLERANCE_LINEAR.
Referenced by insert_strong_seam_point(), and prepare_weak_modifier_segments().
| void Slic3r::PreciseSeam::restore_precise_seam_positions | ( | std::vector< PrintObjectSeamData::LayerSeams > & | layers | ) |
Referenced by Slic3r::SeamPlacer::init().
|
inlineconstexpr |
Referenced by Slic3r::PreciseSeam::detail::append_fragment().
|
staticconstexpr |
Referenced by Slic3r::PreciseSeam::detail::parameter_on_edge().
|
staticconstexpr |
Referenced by Slic3r::PreciseSeam::detail::append_fragment(), extract_perimeter_segments(), and refine_at_vertex().
|
staticconstexpr |