From 9f4899148cf7c2ea203fbaf3de75acdc647a53f2 Mon Sep 17 00:00:00 2001 From: Dmitrii Kulikov <164657232+AtheneNoctuaPt@users.noreply.github.com> Date: Mon, 15 Jun 2026 18:35:03 +0100 Subject: [PATCH] Modeling - Handle near-zero angles for coplanar faces in GetFaceOff function (#1312) --- .../TKBO/BOPTools/BOPTools_AlgoTools.cxx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ModelingAlgorithms/TKBO/BOPTools/BOPTools_AlgoTools.cxx b/src/ModelingAlgorithms/TKBO/BOPTools/BOPTools_AlgoTools.cxx index f708a5d2d9..e6e3bb5dfa 100644 --- a/src/ModelingAlgorithms/TKBO/BOPTools/BOPTools_AlgoTools.cxx +++ b/src/ModelingAlgorithms/TKBO/BOPTools/BOPTools_AlgoTools.cxx @@ -1072,6 +1072,14 @@ bool BOPTools_AlgoTools::GetFaceOff(const TopoDS_Edge& th { aAngle = aTwoPI; } + else if (!bIsComputed) + { + // Near-zero angle between different faces where the bi-normal direction could not be + // reliably computed (near-degenerate geometry, e.g. very thin face producing + // nearly-coincident intersection curves). Treat as maximum angle (2*PI) to prevent + // incorrect selection of this unreliable face over a proper closing face. + aAngle = aTwoPI; + } } // if (std::abs(aAngle) < anAngleCriteria || std::abs(aAngle - aAngleMin) < anAngleCriteria)