From c389c09498e5046628be5d9c16413bad71fab6f5 Mon Sep 17 00:00:00 2001 From: skv Date: Thu, 24 Dec 2015 10:30:49 +0300 Subject: [PATCH] 0022870: EDF 10111 GEOM: MakePipe of a wire along an edge fails. --- src/GEOMImpl/GEOMImpl_PipeDriver.cxx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/GEOMImpl/GEOMImpl_PipeDriver.cxx b/src/GEOMImpl/GEOMImpl_PipeDriver.cxx index cf660675f..ef5b07e79 100644 --- a/src/GEOMImpl/GEOMImpl_PipeDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PipeDriver.cxx @@ -108,6 +108,8 @@ #define GROUP_SIDE2 3 #define GROUP_OTHER 4 +static const Standard_Real TolPipeSurf = 5.e-4; + static bool FillGroups(const TopTools_SequenceOfShape *theGroups, const TopTools_IndexedMapOfShape &theIndices, Handle(TColStd_HArray1OfInteger) *theGroupIds); @@ -182,7 +184,8 @@ static Standard_Boolean BuildPipeShell(BRepOffsetAPI_MakePipeShell &theBuilder) Standard_Boolean isDone = theBuilder.IsDone(); - if (!isDone) { + if (!isDone || + theBuilder.ErrorOnSurface() > TolPipeSurf) { // Try to use Descrete Trihedron mode. theBuilder.SetDiscreteMode(); theBuilder.Build(); @@ -3124,7 +3127,7 @@ Standard_Integer GEOMImpl_PipeDriver::Execute (TFunction_Logbook& log) const GeomFill_Trihedron theBestMode = EvaluateBestSweepMode(aWirePath); BRepOffsetAPI_MakePipe aMkPipe(aWirePath, aShapeBase, theBestMode); - if (aMkPipe.IsDone()) { + if (aMkPipe.IsDone() && aMkPipe.ErrorOnSurface() <= TolPipeSurf) { aShape = aMkPipe.Shape(); if (!CreateGroups(aShapeBase, aWirePath, aMkPipe, aCI)) { -- 2.39.2