OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
PreciseSeam.hpp File Reference
#include <atomic>
#include <cassert>
#include <cstddef>
#include <optional>
#include <vector>
#include <unordered_map>
#include <utility>
#include "libslic3r/BoundingBox.hpp"
#include "libslic3r/ExPolygon.hpp"
#include "libslic3r/Point.hpp"
#include "libslic3r/Polygon.hpp"
#include "libslic3r/Polyline.hpp"
#include "libslic3r/Model.hpp"
#include "SeamPlacer.hpp"
Include dependency graph for PreciseSeam.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Slic3r::PreciseSeam::ModifierRegion
struct  Slic3r::PreciseSeam::PreciseSeamWarnings
struct  Slic3r::PreciseSeam::PreciseSeamWarnings::ModifierUsage
struct  Slic3r::PreciseSeam::ExtractionContext
struct  Slic3r::PreciseSeam::PreparedPerimeter
struct  Slic3r::PreciseSeam::PerimeterPosition
struct  Slic3r::PreciseSeam::StrongSeamTarget
struct  Slic3r::PreciseSeam::PerimeterSegment
struct  Slic3r::PreciseSeam::SegmentExtraction
struct  Slic3r::PreciseSeam::WeakModifierSegment

Namespaces

namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::PreciseSeam

Typedefs

using Slic3r::PreciseSeam::ModifierRegions = std::vector<ModifierRegion>
using Slic3r::PreciseSeam::ModifierSlices = std::vector<ModifierRegions>
using Slic3r::PreciseSeam::ModifierRegionsCache = std::unordered_map<const ModelVolume*, ModifierSlices>

Functions

ModifierRegions Slic3r::PreciseSeam::prepare_modifier_regions (ExPolygons regions)
ModifierSlices Slic3r::PreciseSeam::prepare_modifier_slices (std::vector< ExPolygons > slices)
SegmentExtraction Slic3r::PreciseSeam::extract_perimeter_segments (const PreparedPerimeter &prepared, const ModifierRegions &modifier, ModelVolumeType mode, const ExtractionContext &context)
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)
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)
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)
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)
void Slic3r::PreciseSeam::restore_precise_seam_positions (std::vector< PrintObjectSeamData::LayerSeams > &layers)

Variables

constexpr size_t Slic3r::PreciseSeam::failed_fragment_log_limit = 10

Class Documentation

◆ Slic3r::PreciseSeam::PreciseSeamWarnings::ModifierUsage

struct Slic3r::PreciseSeam::PreciseSeamWarnings::ModifierUsage
Collaboration diagram for Slic3r::PreciseSeam::PreciseSeamWarnings::ModifierUsage:
Class Members
atomic< bool > checked {false}
atomic< bool > fully_blocked {false}
atomic< bool > reached {false}

◆ Slic3r::PreciseSeam::ExtractionContext

struct Slic3r::PreciseSeam::ExtractionContext
Collaboration diagram for Slic3r::PreciseSeam::ExtractionContext:
Class Members
const Layer * layer = nullptr
const ModelVolume * modifier = nullptr
PreciseSeamWarnings * warnings = nullptr

◆ Slic3r::PreciseSeam::PerimeterPosition

struct Slic3r::PreciseSeam::PerimeterPosition
Class Members
size_t edge_index
double parameter

◆ Slic3r::PreciseSeam::StrongSeamTarget

struct Slic3r::PreciseSeam::StrongSeamTarget
Collaboration diagram for Slic3r::PreciseSeam::StrongSeamTarget:
Class Members
size_t edge_index
Point point

◆ Slic3r::PreciseSeam::PerimeterSegment

struct Slic3r::PreciseSeam::PerimeterSegment
Collaboration diagram for Slic3r::PreciseSeam::PerimeterSegment:
Class Members
PerimeterPosition begin
vector< size_t > edge_indices
PerimeterPosition end
double length = 0.
Polyline polyline
optional< StrongSeamTarget > strong_target

◆ Slic3r::PreciseSeam::SegmentExtraction

struct Slic3r::PreciseSeam::SegmentExtraction
Collaboration diagram for Slic3r::PreciseSeam::SegmentExtraction:
Class Members
size_t discarded_fragments = 0
bool full_containment = false
vector< PerimeterSegment > segments
bool valid = true

◆ Slic3r::PreciseSeam::WeakModifierSegment

struct Slic3r::PreciseSeam::WeakModifierSegment
Collaboration diagram for 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