FIX: skirt distance was incorrect in auto arranging

Can't use plater->config(),have to use full_config instead.

jira: STUDIO-7588
Change-Id: I1677ff615a7ed99ad439c6bfe3fac9bdf1e3434b
This commit is contained in:
Arthur 2024-07-22 13:26:48 +08:00 committed by Lane.Wei
parent 0cfa60b657
commit 4542c8eaff
2 changed files with 8 additions and 9 deletions

View File

@ -83,10 +83,9 @@ const double BIG_ITEM_TRESHOLD = 0.02;
void update_arrange_params(ArrangeParams& params, const DynamicPrintConfig* print_cfg, const ArrangePolygons& selected)
{
double skirt_distance = get_real_skirt_dist(*print_cfg);
// Note: skirt_distance is now defined between outermost brim and skirt, not the object and skirt.
// So we can't do max but do adding instead.
params.brim_skirt_distance = skirt_distance;
params.brim_skirt_distance = get_real_skirt_dist(*print_cfg);
params.bed_shrink_x += params.brim_skirt_distance;
params.bed_shrink_y += params.brim_skirt_distance;
if (params.is_seq_print) {
@ -97,7 +96,7 @@ void update_arrange_params(ArrangeParams& params, const DynamicPrintConfig* prin
}
else
params.min_obj_distance = std::max(params.min_obj_distance, scaled(params.cleareance_radius + 0.001)); // +0.001mm to avoid clearance check fail due to rounding error
// for sequential print, we need to inflate the bed because cleareance_radius is so large
params.bed_shrink_x -= unscale_(params.min_obj_distance / 2);
params.bed_shrink_y -= unscale_(params.min_obj_distance / 2);

View File

@ -188,7 +188,7 @@ void ArrangeJob::prepare_selected() {
void ArrangeJob::prepare_all() {
clear_input();
PartPlateList& plate_list = m_plater->get_partplate_list();
PartPlateList& plate_list = m_plater->get_partplate_list();
for (size_t i = 0; i < plate_list.get_plate_count(); i++) {
PartPlate* plate = plate_list.get_plate(i);
bool same_as_global_print_seq = true;
@ -540,12 +540,12 @@ void ArrangeJob::process()
if (params.avoid_extrusion_cali_region && global_config.opt_bool("scan_first_layer"))
partplate_list.preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES);
update_arrange_params(params, m_plater->config(), m_selected);
update_selected_items_inflation(m_selected, m_plater->config(), params);
update_unselected_items_inflation(m_unselected, m_plater->config(), params);
update_selected_items_axis_align(m_selected, m_plater->config(), params);
update_arrange_params(params, &global_config, m_selected);
update_selected_items_inflation(m_selected, &global_config, params);
update_unselected_items_inflation(m_unselected, &global_config, params);
update_selected_items_axis_align(m_selected, &global_config, params);
Points bedpts = get_shrink_bedpts(m_plater->config(),params);
Points bedpts = get_shrink_bedpts(&global_config,params);
partplate_list.preprocess_exclude_areas(params.excluded_regions, 1, scale_(1));