From: jfa Date: Mon, 25 Mar 2024 13:44:54 +0000 (+0000) Subject: [bos #32155] EDF 25230 - face non planar X-Git-Tag: V9_14_0a1~2 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=refs%2Fheads%2Fjfa%2F32155_MakeFaceWires_Fix;p=modules%2Fgeom.git [bos #32155] EDF 25230 - face non planar --- diff --git a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx index 0923bd112..b23fff405 100644 --- a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx @@ -531,10 +531,24 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(Handle(TFunction_Logbook)& log) c Handle(TopTools_HSequenceOfShape) aSeqClosedWires = new TopTools_HSequenceOfShape; Handle(TopTools_HSequenceOfShape) aSeqOpenWires = new TopTools_HSequenceOfShape; for (ind = 1; ind <= aSeqWiresOut->Length(); ind++) { - if (aSeqWiresOut->Value(ind).Closed()) - aSeqClosedWires->Append(aSeqWiresOut->Value(ind)); - else - aSeqOpenWires->Append(aSeqWiresOut->Value(ind)); + TopoDS_Shape aWireShape = aSeqWiresOut->Value(ind); + if (aWireShape.Closed()) { + TopoDS_Wire aWire = TopoDS::Wire(aWireShape); + BRepTools_WireExplorer wexp (aWire); + if (wexp.More()) { + TopoDS_Edge anEdge = wexp.Current(); + wexp.Next(); + if (!wexp.More()) { // one edge in the wire + if (BRep_Tool::Degenerated(anEdge) || !BRep_Tool::IsGeometric(anEdge)) { + continue; + } + } + } + aSeqClosedWires->Append(aWireShape); + } + else { + aSeqOpenWires->Append(aWireShape); + } } if (aSeqClosedWires->Length() < 1) {