diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index fa24cc6aaf..3d7f4e19d4 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3177,11 +3177,8 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou // get a copy; don't modify the orientation of the original loop object otherwise // next copies (if any) would not detect the correct orientation - //BBS: extrude contour of wall ccw, hole of wall cw, except spiral mode - bool was_clockwise = loop.is_clockwise(); - if (m_config.spiral_mode || !is_perimeter(loop.role())) - loop.make_counter_clockwise(); - bool current_clockwise = loop.is_clockwise(); + // extrude all loops ccw + bool was_clockwise = loop.make_counter_clockwise(); // find the point of the loop that is closest to the current extruder position // or randomize if requested @@ -3246,7 +3243,7 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou //FIXME improve the algorithm in case the loop is split into segments with a low number of points (see the Point b query). Point a = paths.front().polyline.points[1]; // second point Point b = *(paths.back().polyline.points.end()-3); // second to last point - if (was_clockwise != current_clockwise) { + if (was_clockwise) { // swap points Point c = a; a = b; b = c; } @@ -3254,7 +3251,7 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou double angle = paths.front().first_point().ccw_angle(a, b) / 3; // turn left if contour, turn right if hole - if (was_clockwise != current_clockwise) angle *= -1; + if (was_clockwise) angle *= -1; // create the destination point along the first segment and rotate it // we make sure we don't exceed the segment length because we don't know