X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMImpl%2FGEOMImpl_FilletDriver.cxx;h=034d2f274d8e56ffad30d3d32987ab8a16740f4b;hb=58803ba33ee53a5944d565373782e5f0868c5461;hp=f8b6756a0b8839353751e1bf0a241a58cbf0a750;hpb=e045ee61d763bc3ab132afc828475adef1712355;p=modules%2Fgeom.git diff --git a/src/GEOMImpl/GEOMImpl_FilletDriver.cxx b/src/GEOMImpl/GEOMImpl_FilletDriver.cxx index f8b6756a0..034d2f274 100644 --- a/src/GEOMImpl/GEOMImpl_FilletDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_FilletDriver.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,50 +20,29 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include - #include #include #include #include +#include #include #include -#include -#include - #include #include #include #include #include - -#include -#include - -#include -#include #include -// VSR 08/12/2014: debug PipeTShape function -// Uncomment the macro below to correct tolerance of resulting face after creating fillet -#define FIX_FACE_TOLERANCE - -namespace -{ - bool FixShape( TopoDS_Shape& shape, - TopAbs_ShapeEnum type = TopAbs_SHAPE, - Standard_Real tolerance = Precision::Confusion() ) - { - ShapeFix_ShapeTolerance aSFT; - aSFT.LimitTolerance( shape, tolerance, tolerance, type ); - Handle(ShapeFix_Shape) aSfs = new ShapeFix_Shape( shape ); - aSfs->Perform(); - shape = aSfs->Shape(); - BRepCheck_Analyzer ana( shape, false ); - return ana.IsValid(); - } -} +// Debug PipeTShape function: uncomment the macro below to correct tolerance +// of resulting face after fillet creation +// VSR 30/12/2014: macro disabled +//#define FIX_FACE_TOLERANCE +// Debug PipeTShape function: uncomment the macro below to correct tolerance +// of resulting curves after fillet creation +// VSR 30/12/2014: macro disabled +//#define FIX_CURVES_TOLERANCES //======================================================================= //function : GetID @@ -151,17 +130,17 @@ Standard_Integer GEOMImpl_FilletDriver::Execute(TFunction_Logbook& log) const if (!fill.IsDone()) { StdFail_NotDone::Raise("Fillet can't be computed on the given shape with the given radius"); } - aShape = fill.Shape(); + aShape = GEOMUtils::ReduceCompound( fill.Shape() ); if (aShape.IsNull()) return 0; -#ifdef FIX_FACE_TOLERANCE - bool isOk = FixShape(aShape, TopAbs_FACE); +#if defined(FIX_CURVES_TOLERANCES) + bool isOk = GEOMUtils::FixShapeCurves(aShape); +#elif defined(FIX_FACE_TOLERANCE) + bool isOk = GEOMUtils::FixShapeTolerance(aShape, TopAbs_FACE); #else - // Check shape validity - BRepCheck_Analyzer ana(aShape, false); // 08.07.2008 added by skl during fixing bug 19761 from Mantis - bool isOk = ana.IsValid() || FixShape(aShape); + bool isOk = GEOMUtils::CheckShape(aShape) || GEOMUtils::FixShapeTolerance(aShape); #endif if ( !isOk ) StdFail_NotDone::Raise("Fillet algorithm have produced an invalid shape result");