From 734c456fa53317d1bade8d76e2eda14088555979 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Tue, 15 Oct 2019 12:53:44 +0200 Subject: [PATCH] Properly adjust wire intersection tolerance based on vertex clustering --- src/ifcgeom/IfcGeomFunctions.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ifcgeom/IfcGeomFunctions.cpp b/src/ifcgeom/IfcGeomFunctions.cpp index b421adf1e1..6f8e3bc957 100644 --- a/src/ifcgeom/IfcGeomFunctions.cpp +++ b/src/ifcgeom/IfcGeomFunctions.cpp @@ -3684,7 +3684,9 @@ bool IfcGeom::Kernel::wire_intersections(const TopoDS_Wire& wire, TopTools_ListO // ShapeAnalysis_Wire saw(wd, face, getValue(GV_PRECISION)); const double eps = faceset_helper_ - ? faceset_helper_->epsilon() + // eps is added to both ends of the parametric domain, so 3. is chosen to be on the safe side here. + ? (faceset_helper_->epsilon() / 3.) + // @todo re-evaluate 2. here for the reasons above: : (std::min)(min_edge_length(wire) / 2., getValue(GV_PRECISION) * 10.); for (int i = 2; i < n; ++i) {