From: Ekaterina Sukhareva Date: Tue, 6 Feb 2024 11:01:51 +0000 (+0000) Subject: EDF 25230 - Impossible to create directly a face X-Git-Tag: V9_13_0a1~11 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=refs%2Fheads%2F40851_CreateFaceDirectly;p=modules%2Fgeom.git EDF 25230 - Impossible to create directly a face --- 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);