ENH: reopen confilctchecker with adpative height.

and fix conflict checking when the wipe tower's brim fully encloses the model

jira: STUDIO-10237, STUDIO-10296
Change-Id: I6e2a6640c06ddb6b3af700c9048fa26434411631
(cherry picked from commit b36c41e5146168325d8b7ec966eb97f1062442a7)
This commit is contained in:
jiangkai.zhao
2025-02-17 11:47:41 +08:00
committed by Noisyfox
parent d1d04d395e
commit 820f12a16b
5 changed files with 61 additions and 39 deletions

View File

@@ -189,17 +189,18 @@ public:
float get_depth() const { return m_wipe_tower_depth; }
float get_brim_width() const { return m_wipe_tower_brim_width_real; }
BoundingBoxf get_bbx() const {
BoundingBox box = get_extents(m_outer_wall.front());
BoundingBox box = get_extents(m_outer_wall.begin()->second);
BoundingBoxf res = BoundingBoxf(unscale(box.min), unscale(box.max));
res.translate(m_rib_offset.cast<double>());
return res;
}
Polylines get_outer_wall() const {
Polylines res = m_outer_wall;
std::map<float, Polylines> get_outer_wall() const
{
std::map<float, Polylines> res = m_outer_wall;
Point trans = scaled(m_rib_offset);
for (auto &polyline : res)
for (auto &p : polyline.points)
p += trans;
for (auto &[h,polylines] : res)
for (auto &polyline : polylines)
polyline.translate(trans.x(), trans.y());
return res;
}
float get_height() const { return m_wipe_tower_height; }
@@ -483,7 +484,7 @@ private:
float m_extra_spacing = 1.f;
float m_tpu_fixed_spacing = 2;
std::vector<Vec2f> m_wall_skip_points;
std::vector<Polyline> m_outer_wall;
std::map<float,Polylines> m_outer_wall;
bool is_first_layer() const { return size_t(m_layer_info - m_plan.begin()) == m_first_layer_idx; }
// Calculates length of extrusion line to extrude given volume