From 34fbe24917b6d766ae6a8f897cc9ce6deca6b6cb Mon Sep 17 00:00:00 2001 From: kgv Date: Thu, 25 Jun 2015 12:47:26 +0300 Subject: [PATCH] 0026359: Revolution shape of Parabola Curve has no triangles Adaptor3d_IsoCurve::Circle() - prevent parallel check with NULL-vector Test case for issue CR26359 --- src/Adaptor3d/Adaptor3d_IsoCurve.cxx | 11 +++++---- tests/bugs/moddata_3/bug26359 | 36 ++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) create mode 100755 tests/bugs/moddata_3/bug26359 diff --git a/src/Adaptor3d/Adaptor3d_IsoCurve.cxx b/src/Adaptor3d/Adaptor3d_IsoCurve.cxx index 54744b0c81..10a6ea8fad 100644 --- a/src/Adaptor3d/Adaptor3d_IsoCurve.cxx +++ b/src/Adaptor3d/Adaptor3d_IsoCurve.cxx @@ -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 index 0000000000..a0f471f470 --- /dev/null +++ b/tests/bugs/moddata_3/bug26359 @@ -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