0026359: Revolution shape of Parabola Curve has no triangles
authorkgv <kgv@opencascade.com>
Thu, 25 Jun 2015 09:47:26 +0000 (12:47 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 25 Jun 2015 09:48:38 +0000 (12:48 +0300)
Adaptor3d_IsoCurve::Circle() - prevent parallel check with NULL-vector

Test case for issue CR26359

src/Adaptor3d/Adaptor3d_IsoCurve.cxx
tests/bugs/moddata_3/bug26359 [new file with mode: 0755]

index 54744b0..10a6ea8 100644 (file)
@@ -766,14 +766,15 @@ gp_Circ Adaptor3d_IsoCurve::Circle() const
   case GeomAbs_SurfaceOfRevolution: 
     {
       if (myIso == GeomAbs_IsoV) {
-       gp_Ax1 Ax1 = mySurface->AxeOfRevolution();
-       gp_Vec DX(Ax1.Location(), Value(0));
-        if(DX.IsParallel(Ax1.Direction(),Precision::Angular())) {
-          return gp_Circ(gp_Ax2(Value(0), Ax1.Direction()),0);
+        const gp_Pnt aVal0 = Value (0.0);
+        gp_Ax1 Ax1 = mySurface->AxeOfRevolution();
+        if (gp_Lin (Ax1).Contains (aVal0, Precision::Confusion())) {
+          return gp_Circ(gp_Ax2(aVal0, Ax1.Direction()),0);
         }
         else {
+          gp_Vec DX(Ax1.Location(), aVal0);
           axes = gp_Ax3(Ax1.Location(), Ax1.Direction(), DX);
-          computeHR(axes,Value(0),h,radius);
+          computeHR(axes,aVal0,h,radius);
           gp_Vec VT = axes.Direction();
           axes.Translate(VT * h);
           return gp_Circ(axes.Ax2(),radius);
diff --git a/tests/bugs/moddata_3/bug26359 b/tests/bugs/moddata_3/bug26359
new file mode 100755 (executable)
index 0000000..a0f471f
--- /dev/null
@@ -0,0 +1,36 @@
+puts "============"
+puts "CR26359"
+puts "============"
+puts ""
+###################################################################################
+# Revolution shape of Parabola Curve has no triangles
+###################################################################################
+
+vinit View1
+vclear
+vaxo
+vsetdispmode 1
+
+restore [locate_data_file bug26359_parabola.brep] p
+
+vdisplay p
+vfit
+
+set trinfo_s [trinfo p]
+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"
+}
+
+vdump ${imagedir}/${casename}.png