Optimize generation of faces with large (n > 128) number of edges.

This commit is contained in:
Thomas Krijnen
2018-05-14 11:06:07 +02:00
parent 2ed2e9cf86
commit 637d3e2eb6
2 changed files with 13 additions and 2 deletions
+9 -1
View File
@@ -213,7 +213,15 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcFace* l, TopoDS_Shape& face) {
process_wire:
if (face_surface.IsNull()) {
mf = new BRepBuilderAPI_MakeFace(wire);
if (count(wire, TopAbs_EDGE) > 128) {
// tfk: optimization find the underlying surface ourselves since it's going
// to be planar in IFC if no explicit surface is given. Should we always do this?
gp_Pln pln;
approximate_plane_through_wire(wire, pln);
mf = new BRepBuilderAPI_MakeFace(pln, wire, true);
} else {
mf = new BRepBuilderAPI_MakeFace(wire);
}
} else {
/// @todo check necessity of false here
mf = new BRepBuilderAPI_MakeFace(face_surface, wire, false);