mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-28 11:21:30 +00:00
Fix the Windows build
This commit is contained in:
@@ -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)
|
static bool entity_moved(const SketchEntity& a, const SketchEntity& b, double tol)
|
||||||
{
|
{
|
||||||
if (a.type != b.type) return true;
|
if (a.type != b.type) return true;
|
||||||
auto far = [tol](const Vec2d& p, const Vec2d& q) { return (p - q).norm() > tol; };
|
auto moved = [tol](const Vec2d& p, const Vec2d& q) { return (p - q).norm() > tol; };
|
||||||
if (far(a.p0, b.p0)) return true;
|
if (moved(a.p0, b.p0)) return true;
|
||||||
switch (a.type) {
|
switch (a.type) {
|
||||||
case SketchEntity::Type::Point:
|
case SketchEntity::Type::Point:
|
||||||
return false;
|
return false;
|
||||||
case SketchEntity::Type::Line:
|
case SketchEntity::Type::Line:
|
||||||
return far(a.p1, b.p1);
|
return moved(a.p1, b.p1);
|
||||||
case SketchEntity::Type::Circle:
|
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:
|
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.radius - b.radius) > tol
|
||||||
|| std::abs((a.end_angle - a.start_angle) - (b.end_angle - b.start_angle)) > tol;
|
|| std::abs((a.end_angle - a.start_angle) - (b.end_angle - b.start_angle)) > tol;
|
||||||
case SketchEntity::Type::Ellipse:
|
case SketchEntity::Type::Ellipse:
|
||||||
case SketchEntity::Type::EllipseArc:
|
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;
|
|| std::abs(a.rminor - b.rminor) > tol || std::abs(a.rotation - b.rotation) > tol;
|
||||||
default:
|
default:
|
||||||
return far(a.p1, b.p1);
|
return moved(a.p1, b.p1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -594,7 +594,7 @@ chain_segments(std::vector<std::vector<Vec3d>> segs, double tol)
|
|||||||
{
|
{
|
||||||
std::vector<std::pair<std::vector<Vec3d>, bool>> contours;
|
std::vector<std::pair<std::vector<Vec3d>, bool>> contours;
|
||||||
std::vector<char> used(segs.size(), 0);
|
std::vector<char> 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) {
|
for (size_t i = 0; i < segs.size(); ++i) {
|
||||||
if (used[i] || segs[i].size() < 2) continue;
|
if (used[i] || segs[i].size() < 2) continue;
|
||||||
used[i] = 1;
|
used[i] = 1;
|
||||||
@@ -603,9 +603,9 @@ chain_segments(std::vector<std::vector<Vec3d>> segs, double tol)
|
|||||||
bool grew = false;
|
bool grew = false;
|
||||||
for (size_t j = 0; j < segs.size(); ++j) {
|
for (size_t j = 0; j < segs.size(); ++j) {
|
||||||
if (used[j] || segs[j].size() < 2) continue;
|
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;
|
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);
|
for (auto it = segs[j].rbegin() + 1; it != segs[j].rend(); ++it) c.push_back(*it);
|
||||||
used[j] = 1; grew = true;
|
used[j] = 1; grew = true;
|
||||||
}
|
}
|
||||||
@@ -613,7 +613,7 @@ chain_segments(std::vector<std::vector<Vec3d>> segs, double tol)
|
|||||||
if (grew) { side = 0; continue; }
|
if (grew) { side = 0; continue; }
|
||||||
std::reverse(c.begin(), c.end()); ++side; // try the other end
|
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);
|
contours.emplace_back(std::move(c), closed);
|
||||||
}
|
}
|
||||||
return contours;
|
return contours;
|
||||||
|
|||||||
Reference in New Issue
Block a user