From 99293011e674caa62e872a4ad2c1c9db8dbed3ad Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Fri, 18 May 2018 12:19:54 +0200 Subject: [PATCH 1/2] Corrected brim generation (width), enabling continuity with skirt --- xs/src/libslic3r/Print.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index 80f68c51b..756fe08f9 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -923,13 +923,15 @@ void Print::_make_skirt() // Initial offset of the brim inner edge from the object (possible with a support & raft). // The skirt will touch the brim if the brim is extruded. - coord_t distance = scale_(std::max(this->config.skirt_distance.value, this->config.brim_width.value)); + Flow brim_flow = this->brim_flow(); + double actual_brim_width = brim_flow.spacing() * floor(this->config.brim_width.value / brim_flow.spacing()); + coord_t distance = scale_(std::max(this->config.skirt_distance.value, actual_brim_width)); // Draw outlines from outside to inside. // Loop while we have less skirts than required or any extruder hasn't reached the min length if any. std::vector extruded_length(extruders.size(), 0.); for (int i = n_skirts, extruder_idx = 0; i > 0; -- i) { // Offset the skirt outside. - distance += coord_t(scale_(spacing)); + distance += coord_t(scale_(spacing/2.)); // Generate the skirt centerline. Polygon loop; { @@ -989,7 +991,7 @@ void Print::_make_brim() } } Polygons loops; - size_t num_loops = size_t(floor(this->config.brim_width.value / flow.width)); + size_t num_loops = size_t(floor(this->config.brim_width.value / flow.spacing())); for (size_t i = 0; i < num_loops; ++ i) { islands = offset(islands, float(flow.scaled_spacing()), jtSquare); for (Polygon &poly : islands) { From e2f44a231e95f71f45f9aeb65636f0c703ff43e2 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Tue, 22 May 2018 10:50:38 +0200 Subject: [PATCH 2/2] A fix to use correct spacing with multiloop skirts --- xs/src/libslic3r/Print.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index 756fe08f9..24e523002 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -925,13 +925,13 @@ void Print::_make_skirt() // The skirt will touch the brim if the brim is extruded. Flow brim_flow = this->brim_flow(); double actual_brim_width = brim_flow.spacing() * floor(this->config.brim_width.value / brim_flow.spacing()); - coord_t distance = scale_(std::max(this->config.skirt_distance.value, actual_brim_width)); + coord_t distance = scale_(std::max(this->config.skirt_distance.value, actual_brim_width) - spacing/2.); // Draw outlines from outside to inside. // Loop while we have less skirts than required or any extruder hasn't reached the min length if any. std::vector extruded_length(extruders.size(), 0.); for (int i = n_skirts, extruder_idx = 0; i > 0; -- i) { // Offset the skirt outside. - distance += coord_t(scale_(spacing/2.)); + distance += coord_t(scale_(spacing)); // Generate the skirt centerline. Polygon loop; {