]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Mantis issue 0021465: EDF 2067 GEOM: Extrusion along a path leads to a self-intersect...
authorjfa <jfa@opencascade.com>
Wed, 8 Feb 2012 11:16:13 +0000 (11:16 +0000)
committerjfa <jfa@opencascade.com>
Wed, 8 Feb 2012 11:16:13 +0000 (11:16 +0000)
src/GEOMImpl/GEOMImpl_PipeDriver.cxx

index 7bb6a750330c70ba52a01fd17b8b734bfbba16a3..2a5bcadca234c20708255ff1d00fe7440205e5da 100644 (file)
@@ -2440,8 +2440,18 @@ Standard_Integer GEOMImpl_PipeDriver::Execute(TFunction_Logbook& log) const
 
   // Glue (for bug 0020207)
   TopExp_Explorer anExpV (aShape, TopAbs_VERTEX);
-  if (anExpV.More())
-    aShape = GEOMImpl_GlueDriver::GlueFaces(aShape, Precision::Confusion(), Standard_True);
+  if (anExpV.More()) {
+    Standard_Real aVertMaxTol = -RealLast();
+    for (; anExpV.More(); anExpV.Next()) {
+      TopoDS_Vertex aVertex = TopoDS::Vertex(anExpV.Current());
+      Standard_Real aTol = BRep_Tool::Tolerance(aVertex);
+      if (aTol > aVertMaxTol)
+        aVertMaxTol = aTol;
+    }
+    aVertMaxTol += Precision::Confusion();
+    aShape = GEOMImpl_GlueDriver::GlueFaces(aShape, aVertMaxTol, Standard_True);
+    //aShape = GEOMImpl_GlueDriver::GlueFaces(aShape, Precision::Confusion(), Standard_True);
+  }
 
   TopoDS_Shape aRes = GEOMImpl_IShapesOperations::CompsolidToCompound(aShape);
   aFunction->SetValue(aRes);