0027029: Possible regression in test de iges_1 L6 because of fix for issue 26837
authornbv <nbv@opencascade.com>
Wed, 23 Dec 2015 14:43:19 +0000 (17:43 +0300)
committerabv <abv@opencascade.com>
Thu, 24 Dec 2015 14:30:46 +0000 (17:30 +0300)
In BRepLib::SameRange, allow exceeding curve range for periodic curves.

Test cases returned to the state before fix for issue #26837.

src/GeomLib/GeomLib.cxx
tests/de/iges_1/L6
tests/de/iges_1/P2

index 063748f..972dfb8 100644 (file)
@@ -955,10 +955,26 @@ void GeomLib::SameRange(const Standard_Real         Tolerance,
   }
   else 
   { // On segmente le resultat
-    Standard_Real Udeb = Max(CurvePtr->FirstParameter(), FirstOnCurve);
-    Standard_Real Ufin = Min(CurvePtr->LastParameter(), LastOnCurve);
-    Handle(Geom2d_TrimmedCurve) TC =
-      new Geom2d_TrimmedCurve( CurvePtr, Udeb, Ufin );
+    Handle(Geom2d_TrimmedCurve) TC;
+    Handle(Geom2d_Curve) aCCheck = CurvePtr;
+
+    if(aCCheck->IsKind(STANDARD_TYPE(Geom2d_TrimmedCurve)))
+    {
+      aCCheck = Handle(Geom2d_TrimmedCurve)::DownCast(aCCheck)->BasisCurve();
+    }
+
+    if(aCCheck->IsPeriodic())
+    {
+      TC = new Geom2d_TrimmedCurve( CurvePtr, FirstOnCurve, LastOnCurve );
+    }
+    else
+    {
+      const Standard_Real Udeb = Max(CurvePtr->FirstParameter(), FirstOnCurve);
+      const Standard_Real Ufin = Min(CurvePtr->LastParameter(), LastOnCurve);
+
+      TC = new Geom2d_TrimmedCurve( CurvePtr, Udeb, Ufin );
+    }
+
     //
     Handle(Geom2d_BSplineCurve) BS =
       Geom2dConvert::CurveToBSplineCurve(TC);
index 2cb129a..f39c413 100644 (file)
@@ -1,6 +1,5 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
 puts "TODO CR23096 ALL: LABELS : Faulty" 
-puts "TODO CR27029 ALL: Error : 1 differences with reference data found" 
 
 set filename PRO11414-2.igs
 
index c7985d4..b5055e2 100755 (executable)
@@ -8,12 +8,12 @@ set filename USA60293.igs
 
 set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
-TPSTAT      : Faulties = 0  ( 0 )  Warnings = 92  ( 56 )  Summary  = 92  ( 56 )
+TPSTAT      : Faulties = 0  ( 0 )  Warnings = 86  ( 56 )  Summary  = 86  ( 56 )
 CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 0  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 793  ( 793 )   Summary  = 9250  ( 9252 )
-STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 793  ( 793 )   FreeWire = 0  ( 0 )   FreeEdge  = 8 ( 8 )   SharedEdge = 3848  ( 3849 )
-TOLERANCE   : MaxTol   =   0.9292857408  (   0.9292857413 )  AvgTol   =   0.05601807565  (   0.05638192646 )
-LABELS      : N0Labels = 800  ( 800 )  N1Labels = 2  ( 1048 )  N2Labels = 0  ( 0 )   TotalLabels = 802  ( 1848 )   NameLabels = 800  ( 800 )   ColorLabels = 801  ( 1848 )   LayerLabels = 0  ( 0 )
+NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 793  ( 793 )   Summary  = 9249  ( 9251 )
+STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 793  ( 793 )   FreeWire = 0  ( 0 )   FreeEdge  = 8 ( 8 )   SharedEdge = 3847  ( 3848 )
+TOLERANCE   : MaxTol   =   0.9292857408  (   0.9292857413 )  AvgTol   =   0.05474076147  (   0.05472794112 )
+LABELS      : N0Labels = 800  ( 800 )  N1Labels = 2  ( 1047 )  N2Labels = 0  ( 0 )   TotalLabels = 802  ( 1847 )   NameLabels = 800  ( 800 )   ColorLabels = 801  ( 1847 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 9  ( 9 )
 COLORS      : Colors   = BLUE1 BURLYWOOD2 CYAN1 GREEN LIGHTSTEELBLUE ORCHID2 RED SEAGREEN2 YELLOW  ( BLUE1 BURLYWOOD2 CYAN1 GREEN LIGHTSTEELBLUE ORCHID2 RED SEAGREEN2 YELLOW )