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