diff --git a/src/slic3r/GUI/CAD/DesignSketchTool.cpp b/src/slic3r/GUI/CAD/DesignSketchTool.cpp index ce165e6202..361bf848d9 100644 --- a/src/slic3r/GUI/CAD/DesignSketchTool.cpp +++ b/src/slic3r/GUI/CAD/DesignSketchTool.cpp @@ -7733,25 +7733,25 @@ void DesignSketchTool::render_op_gizmo(double unit_per_px) static bool entity_moved(const SketchEntity& a, const SketchEntity& b, double tol) { if (a.type != b.type) return true; - auto far = [tol](const Vec2d& p, const Vec2d& q) { return (p - q).norm() > tol; }; - if (far(a.p0, b.p0)) return true; + auto moved = [tol](const Vec2d& p, const Vec2d& q) { return (p - q).norm() > tol; }; + if (moved(a.p0, b.p0)) return true; switch (a.type) { case SketchEntity::Type::Point: return false; case SketchEntity::Type::Line: - return far(a.p1, b.p1); + return moved(a.p1, b.p1); case SketchEntity::Type::Circle: - return far(a.center, b.center) || std::abs(a.radius - b.radius) > tol; + return moved(a.center, b.center) || std::abs(a.radius - b.radius) > tol; case SketchEntity::Type::Arc: - return far(a.p1, b.p1) || far(a.center, b.center) + return moved(a.p1, b.p1) || moved(a.center, b.center) || std::abs(a.radius - b.radius) > tol || std::abs((a.end_angle - a.start_angle) - (b.end_angle - b.start_angle)) > tol; case SketchEntity::Type::Ellipse: case SketchEntity::Type::EllipseArc: - return far(a.center, b.center) || std::abs(a.radius - b.radius) > tol + return moved(a.center, b.center) || std::abs(a.radius - b.radius) > tol || std::abs(a.rminor - b.rminor) > tol || std::abs(a.rotation - b.rotation) > tol; default: - return far(a.p1, b.p1); + return moved(a.p1, b.p1); } } diff --git a/src/slic3r/GUI/CAD/McpControl.cpp b/src/slic3r/GUI/CAD/McpControl.cpp index b1bd667714..9004ab934c 100644 --- a/src/slic3r/GUI/CAD/McpControl.cpp +++ b/src/slic3r/GUI/CAD/McpControl.cpp @@ -594,7 +594,7 @@ chain_segments(std::vector> segs, double tol) { std::vector, bool>> contours; std::vector used(segs.size(), 0); - auto near = [&](const Vec3d& a, const Vec3d& b) { return (a - b).norm() <= tol; }; + auto meets = [&](const Vec3d& a, const Vec3d& b) { return (a - b).norm() <= tol; }; for (size_t i = 0; i < segs.size(); ++i) { if (used[i] || segs[i].size() < 2) continue; used[i] = 1; @@ -603,9 +603,9 @@ chain_segments(std::vector> segs, double tol) bool grew = false; for (size_t j = 0; j < segs.size(); ++j) { if (used[j] || segs[j].size() < 2) continue; - if (near(c.back(), segs[j].front())) { + if (meets(c.back(), segs[j].front())) { c.insert(c.end(), segs[j].begin() + 1, segs[j].end()); used[j] = 1; grew = true; - } else if (near(c.back(), segs[j].back())) { + } else if (meets(c.back(), segs[j].back())) { for (auto it = segs[j].rbegin() + 1; it != segs[j].rend(); ++it) c.push_back(*it); used[j] = 1; grew = true; } @@ -613,7 +613,7 @@ chain_segments(std::vector> segs, double tol) if (grew) { side = 0; continue; } std::reverse(c.begin(), c.end()); ++side; // try the other end } - bool closed = c.size() > 2 && near(c.front(), c.back()); + bool closed = c.size() > 2 && meets(c.front(), c.back()); contours.emplace_back(std::move(c), closed); } return contours;