From: skv Date: Fri, 18 Apr 2014 07:06:37 +0000 (+0400) Subject: 0022551: EDF 2857 - 7832 GEOM : problem with projection X-Git-Tag: V7_4_0rc1~17 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=c481b6871aad775ca8575f471a44b87828167e78;p=modules%2Fgeom.git 0022551: EDF 2857 - 7832 GEOM : problem with projection --- diff --git a/src/GEOMImpl/GEOMImpl_ProjectionDriver.cxx b/src/GEOMImpl/GEOMImpl_ProjectionDriver.cxx index 8300e3847..3e025ccd0 100644 --- a/src/GEOMImpl/GEOMImpl_ProjectionDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_ProjectionDriver.cxx @@ -183,12 +183,26 @@ Standard_Integer GEOMImpl_ProjectionDriver::Execute(TFunction_Logbook& log) cons BRepOffsetAPI_NormalProjection OrtProj (aFaceShape); OrtProj.Add(anOriginal); - //Standard_Real tol = 1.e-4; - //Standard_Real tol2d = Pow(tol, 2./3); - //GeomAbs_Shape Continuity = GeomAbs_C2; - //Standard_Integer MaxDeg = 14; - //Standard_Integer MaxSeg = 16; - //OrtProj.SetParams(tol, tol2d, Continuity, MaxDeg, MaxSeg); + // Compute maximal tolerance of projection. + TopExp_Explorer anExp(anOriginal,TopAbs_VERTEX); + Standard_Real aMaxTol = Precision::Confusion(); + + for(; anExp.More(); anExp.Next()) { + const TopoDS_Vertex aVtx = TopoDS::Vertex(anExp.Current()); + const Standard_Real aCurTol = BRep_Tool::Tolerance(aVtx); + + if (aMaxTol < aCurTol) { + aMaxTol = aCurTol; + } + } + + Standard_Real tol2d = Pow(aMaxTol, 2./3); + GeomAbs_Shape Continuity = GeomAbs_C2; + Standard_Integer MaxDeg = 14; + Standard_Integer MaxSeg = 16; + + OrtProj.SetParams(aMaxTol, tol2d, Continuity, MaxDeg, MaxSeg); + try { OrtProj.Build(); } catch (Standard_Failure) {