From 43ba4b07122f65c060fd4508c746d6d9b2247bbf Mon Sep 17 00:00:00 2001 From: "salt.wei" Date: Fri, 13 Jan 2023 16:13:07 +0800 Subject: [PATCH] ENH: fix the issue about forcing cooling of pa-cf For pa-cf, the default setting of cooling is forcing cooling for all outer wall. And internal tester found that the slowing down by layer time does not work for outer wall under this situation. This is fix for this issue. Signed-off-by: salt.wei Change-Id: I05aaa16d246f5ea6dc1ae9808050e1281646e184 --- src/libslic3r/GCode.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index fbbc741ed..7a2167fc8 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3559,8 +3559,10 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, //BBS: Overhang_threshold_none means Overhang_threshold_1_4 and forcing cooling for all external perimeter int overhang_threshold = EXTRUDER_CONFIG(overhang_fan_threshold) == Overhang_threshold_none ? Overhang_threshold_none : EXTRUDER_CONFIG(overhang_fan_threshold) - 1; - if ((EXTRUDER_CONFIG(overhang_fan_threshold) == Overhang_threshold_none && path.role() == erExternalPerimeter) || - path.get_overhang_degree() > overhang_threshold || + if ((EXTRUDER_CONFIG(overhang_fan_threshold) == Overhang_threshold_none && path.role() == erExternalPerimeter)) { + gcode += ";_OVERHANG_FAN_START\n"; + comment = ";_EXTRUDE_SET_SPEED"; + } else if (path.get_overhang_degree() > overhang_threshold || is_bridge(path.role())) gcode += ";_OVERHANG_FAN_START\n"; else @@ -3638,8 +3640,11 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, //BBS: Overhang_threshold_none means Overhang_threshold_1_4 and forcing cooling for all external perimeter int overhang_threshold = EXTRUDER_CONFIG(overhang_fan_threshold) == Overhang_threshold_none ? Overhang_threshold_none : EXTRUDER_CONFIG(overhang_fan_threshold) - 1; - if ((EXTRUDER_CONFIG(overhang_fan_threshold) == Overhang_threshold_none && path.role() == erExternalPerimeter) || - path.get_overhang_degree() > overhang_threshold || + if ((EXTRUDER_CONFIG(overhang_fan_threshold) == Overhang_threshold_none && path.role() == erExternalPerimeter)) { + gcode += ";_EXTRUDE_END\n"; + gcode += ";_OVERHANG_FAN_END\n"; + + } else if (path.get_overhang_degree() > overhang_threshold || is_bridge(path.role())) gcode += ";_OVERHANG_FAN_END\n"; else