From 24160244b7fb6f331c9572546846385cfec5dff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98shuai=2Eliu=E2=80=99?= <‘shuai.liu@bambulab.com’> Date: Fri, 25 Nov 2022 05:16:26 +0800 Subject: [PATCH] FIX: The flat plate orientation bug [STUDIO-1676]:Auto-orientation not OK but manually OK. When accumulating overhang, the bottom condition should select 0.5* layer height rather than previous 1 * layer height. Change-Id: Ide96817b8f98827388b7cb73ca33518b3ff25235 (cherry picked from commit 9f90151236340d3a10790112be65c816dcc3ae30) --- src/libslic3r/Orient.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Orient.cpp b/src/libslic3r/Orient.cpp index fb6fcd065..f3a6edfff 100644 --- a/src/libslic3r/Orient.cpp +++ b/src/libslic3r/Orient.cpp @@ -366,7 +366,7 @@ public: normal_projection(i) = normals.row(i).dot(orientation); } auto areas_appearance = areas.cwiseProduct((is_apperance * params.APPERANCE_FACE_SUPP + Eigen::VectorXf::Ones(is_apperance.rows(), is_apperance.cols()))); - auto overhang_areas = ((normal_projection.array() < params.ASCENT) * (!bottom_condition)).select(areas_appearance, 0); + auto overhang_areas = ((normal_projection.array() < params.ASCENT) * (!bottom_condition_2nd)).select(areas_appearance, 0); Eigen::MatrixXf inner = normal_projection.array() - params.ASCENT; inner = inner.cwiseMin(0).cwiseAbs(); if (min_volume) @@ -424,7 +424,7 @@ public: if (min_volume) { float overhang = costs.overhang / 25; - cost = params.TAR_A * (overhang + params.TAR_B) + params.RELATIVE_F * (/*costs.volume/100*/overhang*params.TAR_C + params.TAR_D/10.f + params.TAR_LAF * costs.area_laf * params.use_low_angle_face) / (params.TAR_D + params.CONTOUR_F * costs.contour + params.BOTTOM_F * bottom + params.BOTTOM_HULL_F * bottom_hull + params.TAR_E * overhang + params.TAR_PROJ_AREA * costs.area_projected); + cost = params.TAR_A * (overhang + params.TAR_B) + params.RELATIVE_F * (/*costs.volume/100*/overhang*params.TAR_C + params.TAR_D + params.TAR_LAF * costs.area_laf * params.use_low_angle_face) / (params.TAR_D + params.CONTOUR_F * costs.contour + params.BOTTOM_F * bottom + params.BOTTOM_HULL_F * bottom_hull + params.TAR_E * overhang + params.TAR_PROJ_AREA * costs.area_projected); } else { float overhang = costs.overhang;