Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/libslic3r/Layer.hpp')
-rw-r--r--src/libslic3r/Layer.hpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp
index d66aa8f01..508269f1a 100644
--- a/src/libslic3r/Layer.hpp
+++ b/src/libslic3r/Layer.hpp
@@ -13,6 +13,10 @@ class Layer;
class PrintRegion;
class PrintObject;
+namespace FillAdaptive {
+ struct Octree;
+};
+
class LayerRegion
{
public:
@@ -24,6 +28,10 @@ public:
// collection of surfaces generated by slicing the original geometry
// divided by type top/bottom/internal
SurfaceCollection slices;
+ // Backed up slices before they are split into top/bottom/internal.
+ // Only backed up for multi-region layers or layers with elephant foot compensation.
+ //FIXME Review whether not to simplify the code by keeping the raw_slices all the time.
+ ExPolygons raw_slices;
// collection of extrusion paths/loops filling gaps
// These fills are generated by the perimeter generator.
@@ -36,11 +44,6 @@ public:
// collection of surfaces for infill generation
SurfaceCollection fill_surfaces;
- // Collection of perimeter surfaces. This is a cached result of diff(slices, fill_surfaces).
- // While not necessary, the memory consumption is meager and it speeds up calculation.
- // The perimeter_surfaces keep the IDs of the slices (top/bottom/)
- SurfaceCollection perimeter_surfaces;
-
// collection of expolygons representing the bridged areas (thus not
// needing support material)
Polygons bridged;
@@ -126,8 +129,10 @@ public:
// Test whether whether there are any slices assigned to this layer.
bool empty() const;
void make_slices();
- // Merge typed slices into untyped slices. This method is used to revert the effects of detect_surfaces_type() called for posPrepareInfill.
- void merge_slices();
+ // Backup and restore raw sliced regions if needed.
+ //FIXME Review whether not to simplify the code by keeping the raw_slices all the time.
+ void backup_untyped_slices();
+ void restore_untyped_slices();
// Slices merged into islands, to be used by the elephant foot compensation to trim the individual surfaces with the shrunk merged slices.
ExPolygons merged(float offset) const;
template <class T> bool any_internal_region_slice_contains(const T &item) const {
@@ -139,7 +144,9 @@ public:
return false;
}
void make_perimeters();
- void make_fills();
+ void make_fills() { this->make_fills(nullptr, nullptr); };
+ void make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive::Octree* support_fill_octree);
+ void make_ironing();
void export_region_slices_to_svg(const char *path) const;
void export_region_fill_surfaces_to_svg(const char *path) const;
@@ -170,6 +177,7 @@ class SupportLayer : public Layer
{
public:
// Polygons covered by the supports: base, interface and contact areas.
+ // Used to suppress retraction if moving for a support extrusion over these support_islands.
ExPolygonCollection support_islands;
// Extrusion paths for the support base and for the support interface and contacts.
ExtrusionEntityCollection support_fills;