From 74a76e026af4ef0eaa4f4b1e837070399b43c0b5 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 14 Oct 2022 19:38:45 +0800 Subject: [PATCH] ENH: improve extrusion calibration region in auto-arrange 1. do not consider extrusion calibration region if no micro lidar on the printer 2. do not inflate extrusion calibration region by brim width, just let them overlap Change-Id: I62228d85e8a55d40e22a6ae7f5f065f281936429 (cherry picked from commit 4c456e1f3e675a2ea1358d2983f85a95e58eb49c) --- src/slic3r/GUI/Jobs/ArrangeJob.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index 99b8cc825..077ec4380 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -503,10 +503,6 @@ void ArrangeJob::process() if (params.is_seq_print) params.min_obj_distance = std::max(params.min_obj_distance, scaled(params.cleareance_radius)); - if (params.avoid_extrusion_cali_region) - m_plater->get_partplate_list().preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES); - - double skirt_distance = print.has_skirt() ? print.config().skirt_distance.value : 0; double brim_max = 0; std::for_each(m_selected.begin(), m_selected.end(), [&](ArrangePolygon ap) { brim_max = std::max(brim_max, ap.brim_width); }); @@ -531,6 +527,9 @@ void ArrangeJob::process() std::for_each(m_selected.begin(), m_selected.end(), [&](auto& ap) {ap.inflation = params.min_obj_distance / 2; }); std::for_each(m_unselected.begin(), m_unselected.end(), [&](auto& ap) {ap.inflation = ap.is_virt_object ? scaled(params.brim_skirt_distance) : params.min_obj_distance / 2; }); + if (params.avoid_extrusion_cali_region && print.full_print_config().opt_bool("scan_first_layer")) + m_plater->get_partplate_list().preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES); + m_plater->get_partplate_list().preprocess_exclude_areas(params.excluded_regions, 1); // shrink bed by moving to center by dist