0025841: Incorrect edge displaying
authoraml <aml@opencascade.com>
Thu, 12 Mar 2015 09:21:29 +0000 (12:21 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 12 Mar 2015 09:22:14 +0000 (12:22 +0300)
Handling of too big step changed.
Test-case for issue #25841

Small correction in test-case

src/BRepMesh/BRepMesh_EdgeTessellator.cxx
src/GCPnts/GCPnts_TangentialDeflection.gxx
tests/bugs/modalg_5/bug25841 [new file with mode: 0644]

index d0c636d..dfa12b8 100644 (file)
@@ -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);
index 017e43f..54c0b3b 100644 (file)
@@ -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 (file)
index 0000000..44aba6c
--- /dev/null
@@ -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