From 77e39787b4bf16e70d1b91c5146932b8310ca70f Mon Sep 17 00:00:00 2001 From: aml <aml@opencascade.com> Date: Thu, 12 Mar 2015 12:21:29 +0300 Subject: [PATCH] 0025841: Incorrect edge displaying Handling of too big step changed. Test-case for issue #25841 Small correction in test-case --- src/BRepMesh/BRepMesh_EdgeTessellator.cxx | 4 ++-- src/GCPnts/GCPnts_TangentialDeflection.gxx | 5 +++++ tests/bugs/modalg_5/bug25841 | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 tests/bugs/modalg_5/bug25841 diff --git a/src/BRepMesh/BRepMesh_EdgeTessellator.cxx b/src/BRepMesh/BRepMesh_EdgeTessellator.cxx index d0c636d9d8..dfa12b8604 100644 --- a/src/BRepMesh/BRepMesh_EdgeTessellator.cxx +++ b/src/BRepMesh/BRepMesh_EdgeTessellator.cxx @@ -73,7 +73,7 @@ BRepMesh_EdgeTessellator::BRepMesh_EdgeTessellator( if (aCurveType == GeomAbs_BSplineCurve) { - // TODO: remove this code block when #24959 is fixed + // bug24220 const Standard_Integer aNbInt = myCOnS.NbIntervals(GeomAbs_C1); if ( aNbInt > 0 ) { @@ -99,7 +99,7 @@ BRepMesh_EdgeTessellator::BRepMesh_EdgeTessellator( } } } - + // PTv, chl/922/G9, Take into account internal vertices // it is necessary for internal edges, which do not split other edges, by their vertex TopExp_Explorer aVertexIt(theEdge, TopAbs_VERTEX); diff --git a/src/GCPnts/GCPnts_TangentialDeflection.gxx b/src/GCPnts/GCPnts_TangentialDeflection.gxx index 017e43f3dc..54c0b3bc90 100644 --- a/src/GCPnts/GCPnts_TangentialDeflection.gxx +++ b/src/GCPnts/GCPnts_TangentialDeflection.gxx @@ -473,6 +473,11 @@ void GCPnts_TangentialDeflection::PerformCurve (const TheCurve& C) else { if (Coef >= 1.5) { + if (!aPrevPoint.IsEqual(points.Last(), Precision::Confusion())) + { + parameters.Append (U1); + points .Append (aPrevPoint); + } U2 = MiddleU; Du = U2-U1; CurrentPoint = MiddlePoint; diff --git a/tests/bugs/modalg_5/bug25841 b/tests/bugs/modalg_5/bug25841 new file mode 100644 index 0000000000..44aba6c215 --- /dev/null +++ b/tests/bugs/modalg_5/bug25841 @@ -0,0 +1,15 @@ +puts "========" +puts "OCC25841" +puts "========" +puts "" +############################# +# Incorrect edge displaying +############################# + +restore [locate_data_file OCC25841_Curve_2.brep] a +vinit +vclear +vfront +vdisplay a +vfit +set only_screen 1