From ece98a1f04101ffbdcf4cb2fb59057ae6dce242d Mon Sep 17 00:00:00 2001 From: supermerill Date: Fri, 29 May 2020 23:53:13 +0200 Subject: [PATCH] #252 fixes 1: add a little safety offset of 1mm 2: halve the brim & skirts, remove skirt verification if only one skirt for all objects. 3: can't reproduce, there is a strange thing with an object going to 0:0, but it's corrected by a second click on slice button. --- src/libslic3r/PrintConfig.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index a48c140d1..f99e59534 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4414,22 +4414,24 @@ double PrintConfig::min_object_distance(const ConfigBase *config) for (double val : vals) max_nozzle_diam = std::fmax(max_nozzle_diam, val); // min object distance is max(duplicate_distance, clearance_radius) - double extruder_clearance_radius = config->option("extruder_clearance_radius")->getFloat(); + //add 1 as safety offset. + double extruder_clearance_radius = config->option("extruder_clearance_radius")->getFloat() + 1; if (extruder_clearance_radius > base_dist) { base_dist = extruder_clearance_radius; } //add brim width + //FIXME: does not take into account object-defined brim !!! you can crash yoursefl with it if (config->option("brim_width")->getFloat() > 0) { - base_dist += config->option("brim_width")->getFloat() * 2; + base_dist += config->option("brim_width")->getFloat(); } //add the skirt - if (config->option("skirts")->getInt() > 0) { + if (config->option("skirts")->getInt() > 0 && !config->option("complete_objects_one_skirt")->getBool()) { //add skirt dist double dist_skirt = config->option("skirt_distance")->getFloat(); + dist_skirt += max_nozzle_diam * config->option("skirts")->getInt() * 1.5; + //add skirt width if needed if (dist_skirt > config->option("brim_width")->getFloat()) - base_dist += (dist_skirt - config->option("brim_width")->getFloat()) * 2; - //add skirt width - base_dist += max_nozzle_diam * config->option("skirts")->getInt() * 1.5 * 2; + base_dist += (dist_skirt - config->option("brim_width")->getFloat()); } } return base_dist;