From 5f84c504fc26c3e45f7b666caa7cd72ff4385328 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Fri, 29 Oct 2021 16:53:03 +0200 Subject: [PATCH] Support generator: Regression wrt. PrusaSlicer 2.3.3: "with sheath" now again uses the lighweight zig-zag algorithm for the sparse support columns, while PrusaSlicer 2.4.0-alpha1 to PrusaSlicer 2.4.0-beta1 used the new "stable" zig-zag algorithm for both the non-sheathed and sheathed sparse support columns creating unnecessarily thick support column perimeters. --- src/libslic3r/SupportMaterial.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index ef23b0871..7ef289757 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -383,7 +383,9 @@ PrintObjectSupportMaterial::PrintObjectSupportMaterial(const PrintObject *object SupportMaterialPattern support_pattern = m_object_config->support_material_pattern; m_support_params.with_sheath = m_object_config->support_material_with_sheath; - m_support_params.base_fill_pattern = support_pattern == smpHoneycomb ? ipHoneycomb : (m_support_params.support_density > 0.95 ? ipRectilinear : ipSupportBase); + m_support_params.base_fill_pattern = + support_pattern == smpHoneycomb ? ipHoneycomb : + m_support_params.support_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : ipSupportBase; m_support_params.interface_fill_pattern = (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); m_support_params.contact_fill_pattern = (m_object_config->support_material_interface_pattern == smipAuto && m_slicing_params.soluble_interface) || @@ -4060,7 +4062,8 @@ void PrintObjectSupportMaterial::generate_toolpaths( // Pointer to the 1st layer interface filler. auto filler_first_layer = filler_first_layer_ptr ? filler_first_layer_ptr.get() : filler_interface.get(); // Filler for the base interface (to be used for soluble interface / non soluble base, to produce non soluble interface layer below soluble interface layer). - auto filler_base_interface = std::unique_ptr(base_interface_layers.empty() ? nullptr : Fill::new_from_type(m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase)); + auto filler_base_interface = std::unique_ptr(base_interface_layers.empty() ? nullptr : + Fill::new_from_type(m_support_params.interface_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : ipSupportBase)); auto filler_support = std::unique_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); filler_interface->set_bounding_box(bbox_object); if (filler_first_layer_ptr)