FIX: auto-arrange may crash due to clipper

1. Use nlopt and clipper offset togather seems not stable, very easy to
crash. We do the offset outside nlopt now.
2. Fix a bug with finalAlign where objects may be translated to overlap
   with excluded region.
3. change the words of support_expansion

Change-Id: I22e37b20e4ae16f47bde206de90845616e4cefad
(cherry picked from commit 1c26e5d2862fd3f3292971b5c749420bfb2cdf0e)
This commit is contained in:
Arthur 2022-11-25 21:56:08 +08:00 committed by Lane.Wei
parent 95ed039879
commit 4eba8a2a2d
6 changed files with 47 additions and 55 deletions

View file

@ -540,15 +540,15 @@ void ArrangeJob::process()
// 屏蔽区域只需要膨胀brim宽度防止brim长过去挤出标定区域不需要膨胀brim可以长过去。
// 以前我们认为还需要膨胀clearance_radius/2这其实是不需要的因为这些区域并不会真的摆放物体
// 其他物体的膨胀轮廓是可以跟它们重叠的。
double scaled_exclusion_gap = scale_(1);
std::for_each(m_unselected.begin(), m_unselected.end(), [&](auto &ap) {
ap.inflation = !ap.is_virt_object ?
params.min_obj_distance / 2 :
(ap.is_extrusion_cali_object ? 0 : scaled(params.brim_skirt_distance));
(ap.is_extrusion_cali_object ? 0 : scaled_exclusion_gap);
});
partplate_list.preprocess_exclude_areas(params.excluded_regions, 1);
partplate_list.preprocess_exclude_areas(params.nonprefered_regions, 1);
partplate_list.preprocess_exclude_areas(params.excluded_regions, 1, scaled_exclusion_gap);
// shrink bed by moving to center by dist
Points bedpts = get_bed_shape(*m_plater->config());