From 5714bd1ec47850be0427f722f55acc1eb6076bd6 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Wed, 7 Jun 2023 08:43:08 +0200 Subject: [PATCH] take into account edge orientation correctly #3201 --- src/ifcgeom/kernels/opencascade/loop.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ifcgeom/kernels/opencascade/loop.cpp b/src/ifcgeom/kernels/opencascade/loop.cpp index e87a4d14c5..64f3f74a92 100644 --- a/src/ifcgeom/kernels/opencascade/loop.cpp +++ b/src/ifcgeom/kernels/opencascade/loop.cpp @@ -275,9 +275,16 @@ bool OpenCascadeKernel::convert(const taxonomy::loop::ptr loop, TopoDS_Wire& wir V1.Normalize(); V2.Normalize(); - auto ang = std::acos(V1.Dot(V2)); + V2.Reverse(); - Logger::Notice(std::to_string(ang)); + if (edges.First().Orientation() == TopAbs_REVERSED) { + V1.Reverse(); + } + if (edges.Last().Orientation() == TopAbs_REVERSED) { + V2.Reverse(); + } + + auto ang = std::acos(V1.Dot(V2)); if (ang < 0.0314) { edges_to_tesselate.Add(crv1->DynamicType() == STANDARD_TYPE(Geom_Circle) ? edges.First() : edges.Last());