diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index 2bcf99c57..d1234bc1a 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -1599,7 +1599,8 @@ static inline std::tuple detect_overhangs( static inline std::pair new_contact_layer( const PrintConfig &print_config, const PrintObjectConfig &object_config, - const SlicingParameters &slicing_params, + const SlicingParameters &slicing_params, + const coordf_t support_layer_height_min, const Layer &layer, std::deque &layer_storage, tbb::spin_mutex &layer_storage_mutex) @@ -1629,7 +1630,8 @@ static inline std::pair(nullptr, nullptr); } else if (print_z < slicing_params.first_print_layer_height + EPSILON) { @@ -1650,7 +1652,7 @@ static inline std::pairregion().bridging_height_avg(print_config); bridging_height /= coordf_t(layer.regions().size()); coordf_t bridging_print_z = layer.print_z - bridging_height - slicing_params.gap_support_object; - if (bridging_print_z >= slicing_params.first_print_layer_height - EPSILON) { + if (bridging_print_z >= min_print_z) { // Not below the first layer height means this layer is printable. if (print_z < slicing_params.first_print_layer_height + EPSILON) { // Align the layer with the 1st layer height. @@ -1664,8 +1666,7 @@ static inline std::pairbottom_z = 0; bridging_layer->height = slicing_params.first_print_layer_height; - } - else { + } else { // Don't know the height yet. bridging_layer->bottom_z = bridging_print_z; bridging_layer->height = 0; @@ -1917,7 +1918,7 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::top_contact_ // Now apply the contact areas to the layer where they need to be made. if (! contact_polygons.empty()) { - auto [new_layer, bridging_layer] = new_contact_layer(*m_print_config, *m_object_config, m_slicing_params, layer, layer_storage, layer_storage_mutex); + auto [new_layer, bridging_layer] = new_contact_layer(*m_print_config, *m_object_config, m_slicing_params, m_support_params.support_layer_height_min, layer, layer_storage, layer_storage_mutex); if (new_layer) { fill_contact_layer(*new_layer, layer_id, m_slicing_params, *m_object_config, slices_margin, overhang_polygons, contact_polygons, enforcer_polygons, lower_layer_polygons,