diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index f1bc284d97..4ad4e41368 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -73,12 +73,6 @@ Print::clear_objects() this->clear_regions(); } -PrintObject* -Print::get_object(size_t idx) -{ - return objects.at(idx); -} - void Print::delete_object(size_t idx) { @@ -919,10 +913,18 @@ Print::_make_brim() if (this->config.interior_brim_width > 0) { // collect all island holes to fill Polygons holes; - for (PrintObject* object : this->objects) { + for (const PrintObject* object : this->objects) { const Layer &layer0 = *object->get_layer(0); - const Polygons o_holes = layer0.slices.holes(); + Polygons o_holes = layer0.slices.holes(); + + // When we have no infill on this layer, consider the internal part + // of the model as a hole. + for (const LayerRegion* layerm : layer0.regions) { + if (layerm->fills.empty()) + append_to(o_holes, (Polygons)layerm->fill_surfaces); + } + for (const Point © : object->_shifted_copies) { for (Polygon p : o_holes) { p.translate(copy); @@ -937,9 +939,7 @@ Print::_make_brim() append_to(loops, offset2( holes, -flow.scaled_spacing() * (i + 0.5), - flow.scaled_spacing(), - 100000, - ClipperLib::jtSquare + flow.scaled_spacing() )); } diff --git a/xs/src/libslic3r/Print.hpp b/xs/src/libslic3r/Print.hpp index 092fc84c39..a5bc63defa 100644 --- a/xs/src/libslic3r/Print.hpp +++ b/xs/src/libslic3r/Print.hpp @@ -118,14 +118,16 @@ class PrintObject size_t total_layer_count() const; size_t layer_count() const; void clear_layers(); - Layer* get_layer(int idx); + Layer* get_layer(int idx) { return this->layers.at(idx); }; + const Layer* get_layer(int idx) const { return this->layers.at(idx); }; // print_z: top of the layer; slice_z: center of the layer. Layer* add_layer(int id, coordf_t height, coordf_t print_z, coordf_t slice_z); void delete_layer(int idx); size_t support_layer_count() const; void clear_support_layers(); - SupportLayer* get_support_layer(int idx); + SupportLayer* get_support_layer(int idx) { return this->support_layers.at(idx); }; + const SupportLayer* get_support_layer(int idx) const { return this->support_layers.at(idx); }; SupportLayer* add_support_layer(int id, coordf_t height, coordf_t print_z); void delete_support_layer(int idx); @@ -179,7 +181,8 @@ class Print // methods for handling objects void clear_objects(); - PrintObject* get_object(size_t idx); + PrintObject* get_object(size_t idx) { return this->objects.at(idx); }; + const PrintObject* get_object(size_t idx) const { return this->objects.at(idx); }; void delete_object(size_t idx); void reload_object(size_t idx); bool reload_model_instances(); diff --git a/xs/src/libslic3r/PrintObject.cpp b/xs/src/libslic3r/PrintObject.cpp index b8ab9cdbfa..cfa0ef3c7c 100644 --- a/xs/src/libslic3r/PrintObject.cpp +++ b/xs/src/libslic3r/PrintObject.cpp @@ -166,12 +166,6 @@ PrintObject::clear_layers() this->delete_layer(i); } -Layer* -PrintObject::get_layer(int idx) -{ - return this->layers.at(idx); -} - Layer* PrintObject::add_layer(int id, coordf_t height, coordf_t print_z, coordf_t slice_z) { @@ -201,12 +195,6 @@ PrintObject::clear_support_layers() this->delete_support_layer(i); } -SupportLayer* -PrintObject::get_support_layer(int idx) -{ - return this->support_layers.at(idx); -} - SupportLayer* PrintObject::add_support_layer(int id, coordf_t height, coordf_t print_z) {