ENH: improve auto arranging's wipe tower logic

1. If there is already a wipe tower on current plate, leave it there regardless need_wipe_tower flag.
This is useful when we have toolchange custom gcodes.
2. Correct wipe tower pos to prevent it outside bed.

Jira: STUDIO-4426
Change-Id: Iedecc7c5fe7ced01533d0a302253841046a7fb42
(cherry picked from commit e8d728e46b12baaf9fb0e87e3d14197ae3616826)
This commit is contained in:
Arthur 2023-09-13 12:17:23 +08:00 committed by Lane.Wei
parent 845a397e37
commit 76d073a9ea
3 changed files with 40 additions and 49 deletions

View file

@ -725,6 +725,7 @@ public:
for (Item itm : items) {
if (itm.is_wipe_tower) {
starting_point = itm.boundingBox().center();
BOOST_LOG_TRIVIAL(debug) << "arrange we have wipe tower, change starting point to: " << starting_point;
break;
}
}
@ -749,15 +750,13 @@ public:
if (on_packed)
on_packed(ap);
BOOST_LOG_TRIVIAL(debug) << "arrange " + last_packed.name + " succeed!"
<< ", plate id=" << ap.bed_idx;
<< ", plate id=" << ap.bed_idx << ", pos=" << last_packed.translation();
}
});
if (progressind) {
m_pck.unfitIndicator([this, progressind](std::string name) {
BOOST_LOG_TRIVIAL(debug) << "arrange not fit: " + name;
});
}
m_pck.unfitIndicator([this](std::string name) {
BOOST_LOG_TRIVIAL(debug) << "arrange progress: " + name;
});
if (stopcond) m_pck.stopCondition(stopcond);