From: jfa Date: Wed, 8 Feb 2012 11:16:13 +0000 (+0000) Subject: Mantis issue 0021465: EDF 2067 GEOM: Extrusion along a path leads to a self-intersect... X-Git-Tag: V6_5_0a1~74 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=20ffcb034a939e0a48edde0d02d649398d240128;p=modules%2Fgeom.git Mantis issue 0021465: EDF 2067 GEOM: Extrusion along a path leads to a self-intersected shape. GlueFaces with maximum shape tolerance. --- diff --git a/src/GEOMImpl/GEOMImpl_PipeDriver.cxx b/src/GEOMImpl/GEOMImpl_PipeDriver.cxx index 7bb6a7503..2a5bcadca 100644 --- a/src/GEOMImpl/GEOMImpl_PipeDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PipeDriver.cxx @@ -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);