From a8effa82895b2f63e61f9ae198a871a7d3bceac3 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Tue, 25 Sep 2018 12:46:20 +0200 Subject: [PATCH 1/2] No need to cast to TopoDS_Face anymore --- src/ifcgeom/IfcGeomFaces.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ifcgeom/IfcGeomFaces.cpp b/src/ifcgeom/IfcGeomFaces.cpp index d2cc535f2d..aab57062ad 100644 --- a/src/ifcgeom/IfcGeomFaces.cpp +++ b/src/ifcgeom/IfcGeomFaces.cpp @@ -407,7 +407,7 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcArbitraryProfileDefWithVoids* } ShapeFix_Shape sfs(mf.Face()); sfs.Perform(); - face = TopoDS::Face(sfs.Shape()); + face = sfs.Shape(); return true; } From 3102a1c17942c28646acfb62b132954c876ddb96 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Tue, 25 Sep 2018 12:47:06 +0200 Subject: [PATCH 2/2] Check for empty bounding boxes in boolean op filter --- src/ifcgeom/IfcGeomFunctions.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ifcgeom/IfcGeomFunctions.cpp b/src/ifcgeom/IfcGeomFunctions.cpp index e58254729a..8148f78680 100644 --- a/src/ifcgeom/IfcGeomFunctions.cpp +++ b/src/ifcgeom/IfcGeomFunctions.cpp @@ -262,11 +262,19 @@ namespace { Bnd_Box A; BRepBndLib::Add(a, A); + if (A.IsVoid()) { + return; + } + TopTools_ListIteratorOfListOfShape it(b); for (; it.More(); it.Next()) { Bnd_Box B; BRepBndLib::Add(it.Value(), B); + if (B.IsVoid()) { + continue; + } + if (A.Distance(B) < p) { c.Append(it.Value()); }