0031258: Mesh - OCCT 7.4.0 VIS get wrong render data
authoroan <oan@opencascade.com>
Tue, 21 Jan 2020 10:21:38 +0000 (13:21 +0300)
committerbugmaster <bugmaster@opencascade.com>
Wed, 22 Jan 2020 07:16:28 +0000 (10:16 +0300)
Check intervals for infinite value causing exception in GeomLib::NormEstim

src/BRepMesh/BRepMesh_NURBSRangeSplitter.cxx
tests/bugs/mesh/bug31258 [new file with mode: 0644]

index 332be97..429a180 100644 (file)
@@ -269,11 +269,17 @@ namespace
     for (; aIntervalU <= theIntervals[0].Upper (); ++aIntervalU)
     {
       const Standard_Real aParamU = theIntervals[0].Value(aIntervalU);
+      if (Precision::IsInfinite (aParamU))
+        continue;
+
       Standard_Integer aIntervalV = theIntervals[1].Lower ();
       for (; aIntervalV <= theIntervals[1].Upper (); ++aIntervalV)
       {
         gp_Dir aNorm;
         const Standard_Real aParamV = theIntervals[1].Value(aIntervalV);
+        if (Precision::IsInfinite (aParamV))
+          continue;
+
         if (GeomLib::NormEstim (theSurf, gp_Pnt2d (aParamU, aParamV), Precision::Confusion (), aNorm) != 0)
         {
           return Standard_True;
diff --git a/tests/bugs/mesh/bug31258 b/tests/bugs/mesh/bug31258
new file mode 100644 (file)
index 0000000..d5a716f
--- /dev/null
@@ -0,0 +1,16 @@
+puts "======="
+puts "0031258: Mesh - OCCT 7.4.0 VIS get wrong render data"
+puts "======="
+puts ""
+
+restore [locate_data_file bug31258.brep] result
+tclean result
+
+vinit
+vsetdispmode 1
+vdisplay result
+vfit
+
+checktrinfo result -tri 166 -nod 102
+
+checkview -screenshot -3d -path ${imagedir}/${test_image}.png