diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 21cd0bb251..fcb8d1ea77 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2302,13 +2302,20 @@ std::pair split_with_seam( if (loop.paths.empty() || loop.paths.front().empty()) { return {SmoothPath{}, 0}; } - if (const auto seam_point{boost::get(&seam)}; seam_point != nullptr) { + const auto seam_point{boost::get(&seam)}; + const auto scarf{boost::get(&seam)}; + + if (seam_point != nullptr) { return { smooth_path_cache.resolve_or_fit_split_with_seam( loop, flipped, scaled_resolution, *seam_point, seam_point_merge_distance_threshold ), 0}; - } else if (const auto scarf{boost::get(&seam)}; scarf != nullptr) { + } else if (scarf != nullptr && scarf->start_point == scarf->end_point) { + return {smooth_path_cache.resolve_or_fit_split_with_seam( + loop, flipped, scaled_resolution, scarf->start_point, seam_point_merge_distance_threshold + ), 0}; + } else if (scarf != nullptr) { ExtrusionPaths paths{loop.paths}; const auto apply_smoothing{[&](tcb::span paths){ return smooth_path_cache.resolve_or_fit(paths, false, scaled(0.0015));