From 11672253489c8ddd14d2a1dd2ea97655cf985967 Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Tue, 1 Nov 2022 11:28:25 +0800 Subject: [PATCH] ENH: fix extrusion of interface on the first layer Signed-off-by: qing.zhang Change-Id: I08a3599e349f2137a53737010220209dc2a54d6a --- src/libslic3r/SupportMaterial.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index 13282b90d4..11305cfc70 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -4517,9 +4517,13 @@ void PrintObjectSupportMaterial::generate_toolpaths( (m_object_config->support_interface_bottom_layers == 0 && &layer_ex == &bottom_contact_layer); //FIXME Bottom interfaces are extruded with the briding flow. Some bridging layers have its height slightly reduced, therefore // the bridging flow does not quite apply. Reduce the flow to area of an ellipse? (A = pi * a * b) - auto interface_flow = layer_ex.layer->bridging ? - Flow::bridging_flow(layer_ex.layer->height, m_support_params.support_material_bottom_interface_flow.nozzle_diameter()) : - (interface_as_base ? &m_support_params.support_material_flow : &m_support_params.support_material_interface_flow)->with_height(float(layer_ex.layer->height)); + Flow interface_flow; + if (layer_ex.layer->bridging) + interface_flow = Flow::bridging_flow(layer_ex.layer->height, m_support_params.support_material_bottom_interface_flow.nozzle_diameter()); + else if (layer_ex.layer->bottom_z < EPSILON) { + interface_flow = m_support_params.first_layer_flow; + }else + interface_flow = (interface_as_base ? &m_support_params.support_material_flow : &m_support_params.support_material_interface_flow)->with_height(float(layer_ex.layer->height)); filler_interface->angle = interface_as_base ? // If zero interface layers are configured, use the same angle as for the base layers. angles[support_layer_id % angles.size()] :