Don't do brute-force edge sewing in case of non-manifold faceset from wire intersections or triangulations

This commit is contained in:
Thomas Krijnen
2019-04-24 17:15:18 +02:00
parent 587edca99f
commit 4792fd9efe
+5 -2
View File
@@ -501,7 +501,11 @@ bool IfcGeom::Kernel::create_solid_from_faces(const TopTools_ListOfShape& face_l
bool has_shared_edges = false; bool has_shared_edges = false;
TopTools_MapOfShape edge_set; TopTools_MapOfShape edge_set;
if (!faceset_helper_ || !faceset_helper_->non_manifold()) { // In case there are wire interesections or failures in non-planar wire triangulations
// the idea is to let occt do an exhaustive search of edge partners. But we have not
// found a case where this actually improves boolean ops later on.
// if (!faceset_helper_ || !faceset_helper_->non_manifold()) {
for (face_iterator.Initialize(face_list); face_iterator.More(); face_iterator.Next()) { for (face_iterator.Initialize(face_list); face_iterator.More(); face_iterator.Next()) {
// As soon as is detected one of the edges is shared, the assumption is made no // As soon as is detected one of the edges is shared, the assumption is made no
// additional sewing is necessary. // additional sewing is necessary.
@@ -516,7 +520,6 @@ bool IfcGeom::Kernel::create_solid_from_faces(const TopTools_ListOfShape& face_l
} }
} }
} }
}
BRepOffsetAPI_Sewing sewing_builder; BRepOffsetAPI_Sewing sewing_builder;
sewing_builder.SetTolerance(getValue(GV_PRECISION)); sewing_builder.SetTolerance(getValue(GV_PRECISION));