Salome HOME
Copyright update 2022
[modules/shaper.git] / src / GeomAlgoAPI / GeomAlgoAPI_UnifySameDomain.cpp
index 496ec907949479afe454c09898d307042a47e32c..0c02dbb509aca2a40af3bd605b4832fecaaa9a6a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2019  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2022  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -23,6 +23,7 @@
 #include <GeomAlgoAPI_DFLoader.h>
 #include <GeomAlgoAPI_ShapeTools.h>
 
+#include <BRep_Tool.hxx>
 #include <TopExp_Explorer.hxx>
 #include <TopoDS_Shape.hxx>
 #include <Precision.hxx>
@@ -72,29 +73,18 @@ void GeomAlgoAPI_UnifySameDomain::build(const ListOfShape& theShapes)
 }
 
 // calculates maximum possible tolerance on edges of shape
-// (method from GEOM module BlockFix_UnionFaces.cxx)
 static Standard_Real defineLinearTolerance(const TopoDS_Shape& theShape)
 {
-  Standard_Real aTol = Precision::Confusion();
+  Standard_Real aMaxTol = Precision::Confusion();
 
-  Standard_Real MinSize = RealLast();
   TopExp_Explorer Explo(theShape, TopAbs_EDGE);
   for (; Explo.More(); Explo.Next())
   {
     const TopoDS_Edge& anEdge = TopoDS::Edge(Explo.Current());
-    Bnd_Box aBox;
-    BRepBndLib::Add(anEdge, aBox);
-    Standard_Real Xmin, Ymin, Zmin, Xmax, Ymax, Zmax;
-    aBox.Get(Xmin, Ymin, Zmin, Xmax, Ymax, Zmax);
-    Standard_Real MaxSize = Max(Xmax - Xmin, Max(Ymax - Ymin, Zmax - Zmin));
-    if (MaxSize < MinSize)
-      MinSize = MaxSize;
+    aMaxTol = Max(aMaxTol, BRep_Tool::Tolerance(anEdge));
   }
 
-  if (!Precision::IsInfinite(MinSize))
-    aTol = 0.1 * MinSize;
-
-  return aTol;
+  return aMaxTol;
 }
 
 //==================================================================================================