From d4bc450af6d2381bd5eb891c1395ebd50ca1c322 Mon Sep 17 00:00:00 2001 From: "jiaxi.chen" Date: Mon, 18 Nov 2024 10:29:22 +0800 Subject: [PATCH] FIX: protect when support_style doesnt match type jira: STUDIO-8800 Change-Id: I7d42f95ba43b4b3a47a83ae59afaaf9bc94baa5d --- src/libslic3r/Support/SupportParameters.hpp | 6 ++++++ src/libslic3r/Support/TreeSupport.cpp | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index 0ad2f3da4..adfc247c2 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -171,6 +171,12 @@ struct SupportParameters { std::numeric_limits::max(); support_style = object_config.support_style; + if (support_style != smsDefault) { + if ((support_style == smsSnug || support_style == smsGrid) && is_tree(object_config.support_type)) support_style = smsDefault; + if ((support_style == smsTreeSlim || support_style == smsTreeStrong || support_style == smsTreeHybrid || support_style == smsTreeOrganic) && + !is_tree(object_config.support_type)) + support_style = smsDefault; + } if (support_style == smsDefault) { if (is_tree(object_config.support_type)) { // organic support doesn't work with variable layer heights (including adaptive layer height and height range modifier, see #4313) diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index d90f49690..1dc13c52d 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1645,6 +1645,8 @@ void TreeSupport::move_bounds_to_contact_nodes(std::vectorsupport_type.value)) return; + if (m_support_params.support_style == smsTreeOrganic) { generate_tree_support_3D(*m_object, this, this->throw_on_cancel); return;