diff options
Diffstat (limited to 'src/libslic3r/Layer.hpp')
-rw-r--r-- | src/libslic3r/Layer.hpp | 24 |
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; |