ENH: improve auto-arranging

1. add a translation
   jira: STUDIO-5758
2. fix by-object arranging failing issue due to wrong exclusion_gap
  jira: STUDIO-5941

Change-Id: Icbdbdf7d8ba91be7f355d31a5f81a9f79356dc7e
(cherry picked from commit eed212e3550cb2256625a6fd09fc3d69d66659c4)
This commit is contained in:
Arthur 2024-01-13 14:51:04 +08:00 committed by Lane.Wei
parent ee39610e27
commit fde4d41821
2 changed files with 5 additions and 7 deletions

View File

@ -131,10 +131,10 @@ void update_selected_items_inflation(ArrangePolygons& selected, const DynamicPri
void update_unselected_items_inflation(ArrangePolygons& unselected, const DynamicPrintConfig* print_cfg, const ArrangeParams& params)
{
float exclusion_gap = 1.f;
coord_t exclusion_gap = scale_(1.f);
if (params.is_seq_print) {
// bed_shrink_x is typically (-params.min_obj_distance / 2+5) for seq_print
exclusion_gap = std::max(exclusion_gap, params.min_obj_distance / 2 + params.bed_shrink_x + 1.f); // +1mm gap so the exclusion region is not too close
exclusion_gap = std::max(exclusion_gap, params.min_obj_distance / 2 + scaled<coord_t>(params.bed_shrink_x + 1.f)); // +1mm gap so the exclusion region is not too close
// dont forget to move the excluded region
for (auto& region : unselected) {
if (region.is_virt_object) region.poly.translate(scaled(params.bed_shrink_x), scaled(params.bed_shrink_y));
@ -147,7 +147,7 @@ void update_unselected_items_inflation(ArrangePolygons& unselected, const Dynami
// 其他物体的膨胀轮廓是可以跟它们重叠的。
std::for_each(unselected.begin(), unselected.end(),
[&](auto& ap) { ap.inflation = !ap.is_virt_object ? (params.min_obj_distance == 0 ? scaled(ap.brim_width) : params.min_obj_distance / 2)
: (ap.is_extrusion_cali_object ? 0 : scale_(exclusion_gap)); });
: (ap.is_extrusion_cali_object ? 0 : exclusion_gap); });
}
void update_selected_items_axis_align(ArrangePolygons& selected, const DynamicPrintConfig* print_cfg, const ArrangeParams& params)

View File

@ -477,7 +477,7 @@ void ArrangeJob::prepare()
auto polys_to_draw = m_selected;
for (auto it = polys_to_draw.begin(); it != polys_to_draw.end(); it++) {
it->poly.translate(center);
bbox.merge(it->poly);
bbox.merge(get_extents(it->poly));
}
SVG svg("SVG/arrange_poly.svg", bbox);
if (svg.is_opened()) {
@ -510,9 +510,7 @@ void ArrangeJob::check_unprintable()
m_unprintable.push_back(*it);
it = m_selected.erase(it);
if (it->poly.area() < 0.001) {
auto msg = (boost::format(
_utf8("Object %s has zero size and can't be arranged."))
% _utf8(it->name)).str();
auto msg = (boost::format(_u8L("Object %1% has zero size and can't be arranged.")) % it->name).str();
m_plater->get_notification_manager()->push_notification(NotificationType::BBLPlateInfo,
NotificationManager::NotificationLevel::WarningNotificationLevel, msg);
}