0025179: BRepMesh cannot build a mesh on specific geometry
authoroan <oan@opencascade.com>
Thu, 4 Sep 2014 10:21:41 +0000 (14:21 +0400)
committerbugmaster <bugmaster@opencascade.com>
Thu, 4 Sep 2014 10:24:06 +0000 (14:24 +0400)
Check for zero division in GCPnts_TangentialDeflection

Check that mid point does not coincide with end points

Test case for issue CR25179

src/GCPnts/GCPnts_TangentialDeflection.gxx
tests/bugs/moddata_3/bug25179 [new file with mode: 0755]

index ac00191..5cf77e3 100644 (file)
@@ -382,9 +382,13 @@ void GCPnts_TangentialDeflection::PerformCurve (const TheCurve& C)
       V1.Subtract (MiddlePoint.XYZ ());
       L1 = V1.Modulus ();
       L2 = V2.Modulus ();
-      Standard_Real angg = V1.CrossMagnitude(V2)/(L1*L2);
-      if (L1 > LTol && L2 > LTol) ACoef = angg/AngleMax;
-      else                        ACoef = 0.0;
+      if (L1 > LTol && L2 > LTol)
+      {
+        Standard_Real angg = V1.CrossMagnitude(V2) / (L1 * L2);
+        ACoef = angg / AngleMax;
+      }
+      else
+        ACoef = 0.0;
 
       if (ACoef >= FCoef) Coef = ACoef;      //On retient le plus penalisant
       else                Coef = FCoef;
diff --git a/tests/bugs/moddata_3/bug25179 b/tests/bugs/moddata_3/bug25179
new file mode 100755 (executable)
index 0000000..cbc9611
--- /dev/null
@@ -0,0 +1,37 @@
+puts "============"
+puts "CR25179"
+puts "============"
+puts ""
+###################################################################################
+# BRepMesh cannot build a mesh on specific geometry
+###################################################################################
+
+restore [locate_data_file bug25179_nurbs-with-partial-seam.brep] result
+
+tclean result
+incmesh result 0.1
+
+set trinfo_s [trinfo result]
+regexp {([0-9]+) triangles} ${trinfo_s} str nbtri_s
+regexp {([0-9]+) nodes} ${trinfo_s} str nbnod_s
+regexp {deflection ([0-9.+e-]+)} ${trinfo_s} str defl_s
+
+if { ${nbtri_s} == 0 } {
+   puts "Error: shape contains 0 triangles"
+}
+
+if { ${nbnod_s} == 0 } {
+   puts "Error: shape contains 0 nodes"
+}
+
+if { ${defl_s} == 0 } {
+   puts "Error: deflection is 0"
+}
+
+if [catch { tricheck result } ] {
+  puts "Error : Problem of build a mesh on specific geometry"
+} else {
+  puts "OK : Building a mesh on specific geometry is good"
+}
+
+set 3dviewer 1