Fixes for edge curves and non-planar faces with inner boundaries. #338

This commit is contained in:
Thomas Krijnen
2018-12-29 14:34:47 +01:00
parent 7022e842bf
commit bf50d0534b
2 changed files with 25 additions and 3 deletions
+11
View File
@@ -320,6 +320,17 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcFace* l, TopoDS_Shape& face) {
} else {
mf->Add(wire);
// Same as above:
// In case of (non-planar) face surface, p-curves need to be computed.
if (BRep_Tool::Surface(mf->Face())->DynamicType() != STANDARD_TYPE(Geom_Plane)) {
TopExp_Explorer exp(wire, TopAbs_EDGE);
for (; exp.More(); exp.Next()) {
const TopoDS_Edge& edge = TopoDS::Edge(exp.Current());
ShapeFix_Edge fix_edge;
fix_edge.FixAddPCurve(edge, mf->Face(), false, getValue(GV_PRECISION));
}
}
}
processed ++;
}