// Try to build a face from a set of wires and edges
int ind;
+ bool isPlanarWanted = aCI.GetIsPlanar();
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
int nbshapes = aShapes->Length();
TopExp_Explorer anExpE_i (aSh_i, TopAbs_EDGE);
for (; anExpE_i.More(); anExpE_i.Next()) {
if (aMapEdges.Add(anExpE_i.Current())) {
+ const TopoDS_Edge& E = TopoDS::Edge(anExpE_i.Current());
+ if ((BRep_Tool::Degenerated(E) && isPlanarWanted) ||
+ !BRep_Tool::IsGeometric(E))
+ continue;
+
// Copy the original shape.
TopoDS_Shape aShapeCopy;
-
- TNaming_CopyShape::CopyTool
- (anExpE_i.Current(), aMapTShapes, aShapeCopy);
+ TNaming_CopyShape::CopyTool(E, aMapTShapes, aShapeCopy);
aSeqEdgesIn->Append(aShapeCopy);
}
}
// 4.a. Basic face
TopoDS_Shape aFFace;
TopoDS_Wire aW1 = TopoDS::Wire(aSeqClosedWires->Value(1));
- aWarning = GEOMImpl_Block6Explorer::MakeFace(aW1, aCI.GetIsPlanar(), aFFace);
+ aWarning = GEOMImpl_Block6Explorer::MakeFace(aW1, isPlanarWanted, aFFace);
if (aFFace.IsNull()) {
Standard_ConstructionError::Raise("Face construction failed");
}