From aecc16bb8400d9673445a0485fc625ed28f71b9c Mon Sep 17 00:00:00 2001 From: Ekaterina Sukhareva Date: Tue, 6 Feb 2024 11:01:51 +0000 Subject: [PATCH] EDF 25230 - Impossible to create directly a face --- src/GEOMImpl/GEOMImpl_ShapeDriver.cxx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx index 8f1f24850..0d9f65537 100644 --- a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx @@ -494,6 +494,7 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(Handle(TFunction_Logbook)& log) c Handle(TopTools_HSequenceOfShape) aSeqEdgesIn = new TopTools_HSequenceOfShape; TColStd_IndexedDataMapOfTransientTransient aMapTShapes; + Standard_Real aTolerance = Precision::Confusion(); for (ind = 1; ind <= nbshapes; ind++) { Handle(GEOM_Function) aRefSh_i = Handle(GEOM_Function)::DownCast(aShapes->Value(ind)); TopoDS_Shape aSh_i = aRefSh_i->GetValue(); @@ -503,7 +504,11 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(Handle(TFunction_Logbook)& log) c if (aMapEdges.Add(anExpE_i.Current())) { // Copy the original shape. TopoDS_Shape aShapeCopy; - + Standard_Real aCurTol = BRep_Tool::MaxTolerance(anExpE_i.Current(), TopAbs_EDGE); + if(aCurTol > aTolerance) + { + aTolerance = aCurTol; + } TNaming_CopyShape::CopyTool (anExpE_i.Current(), aMapTShapes, aShapeCopy); aSeqEdgesIn->Append(aShapeCopy); @@ -517,7 +522,7 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(Handle(TFunction_Logbook)& log) c // 2. Connect edges to wires of maximum length Handle(TopTools_HSequenceOfShape) aSeqWiresOut; - ShapeAnalysis_FreeBounds::ConnectEdgesToWires(aSeqEdgesIn, Precision::Confusion(), + ShapeAnalysis_FreeBounds::ConnectEdgesToWires(aSeqEdgesIn, aTolerance, /*shared*/Standard_False, aSeqWiresOut); //modified by NIZNHY-PKV Wed Dec 28 13:46:55 2011f //KeepEdgesOrder(aSeqEdgesIn, aSeqWiresOut); -- 2.39.2