0025593: Number of intersection points for 2d curves depends on the order of argument...
authornbv <nbv@opencascade.com>
Thu, 16 Apr 2015 07:32:53 +0000 (10:32 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 16 Apr 2015 07:34:12 +0000 (10:34 +0300)
1. Unification of the polygons creation (it is regardless of arguments order).
2. Output of 2dintersect DRAW-command was changed.
3. Geom2dGcc_Circ2d2TanRadGeo.cxx:
     Precise intersection point found by Extrema Curve-Curve method (dot product between every tangent vector and vector between points on two curves must be equal to zero).
4. Some comments have been translated from French to English.

Some test case have been updated.

Changes in accordance with the last remark

Test case for issue CR25593

41 files changed:
src/Geom2dGcc/Geom2dGcc_Circ2d2TanRad.cxx
src/Geom2dGcc/Geom2dGcc_Circ2d2TanRadGeo.cxx
src/GeomliteTest/GeomliteTest_API2dCommands.cxx
src/IntCurve/IntCurve_IntPolyPolyGen.gxx
src/IntCurve/IntCurve_Polygon2dGen.cdl
src/IntCurve/IntCurve_Polygon2dGen.gxx
tests/bugs/modalg_4/bug714
tests/bugs/modalg_5/bug24303
tests/bugs/modalg_6/bug25593 [new file with mode: 0755]
tests/de/iges_1/G6
tests/de/iges_1/J9
tests/de/iges_1/K3
tests/de/iges_1/L8
tests/de/iges_1/M7
tests/de/iges_1/N9
tests/de/iges_1/P5
tests/de/iges_1/P8
tests/de/iges_1/R1
tests/de/iges_1/R8
tests/de/iges_2/B8
tests/de/iges_2/C2
tests/de/iges_2/I7
tests/de/iges_3/A4
tests/de/step_2/B6
tests/de/step_2/M4
tests/de/step_2/M6
tests/de/step_2/S1
tests/de/step_2/S9
tests/de/step_2/T9
tests/de/step_2/W7
tests/de/step_2/Y5
tests/de/step_3/A9
tests/de/step_3/C4
tests/de/step_3/C6
tests/de/step_3/D3
tests/de/step_3/D8
tests/de/step_3/D9
tests/de/step_3/F4
tests/de/step_4/E6
tests/de/step_5/A1
tests/heal/split_angle/F2

index f7e0cc9..8bdfc60 100644 (file)
@@ -30,6 +30,7 @@
 #include <Standard_NegativeValue.hxx>
 #include <Standard_OutOfRange.hxx>
 
+static const Standard_Integer aNbSolMAX = 16;
 
 // circulaire tangent a deux cercles et de rayon donne
 //====================================================
@@ -50,17 +51,17 @@ Geom2dGcc_Circ2d2TanRad::
                            const Geom2dGcc_QualifiedCurve& Qualified2 ,
                            const Standard_Real             Radius     ,
                            const Standard_Real             Tolerance  ):
-  cirsol(1,16)   ,
-  qualifier1(1,16),
-  qualifier2(1,16),
-  TheSame1(1,16) ,
-  TheSame2(1,16) ,
-  pnttg1sol(1,16),
-  pnttg2sol(1,16),
-  par1sol(1,16)  ,
-  par2sol(1,16)  ,
-  pararg1(1,16)  ,
-  pararg2(1,16)  
+  cirsol(1,aNbSolMAX)   ,
+  qualifier1(1,aNbSolMAX),
+  qualifier2(1,aNbSolMAX),
+  TheSame1(1,aNbSolMAX) ,
+  TheSame2(1,aNbSolMAX) ,
+  pnttg1sol(1,aNbSolMAX),
+  pnttg2sol(1,aNbSolMAX),
+  par1sol(1,aNbSolMAX)  ,
+  par2sol(1,aNbSolMAX)  ,
+  pararg1(1,aNbSolMAX)  ,
+  pararg2(1,aNbSolMAX)  
 {
   if (Radius < 0.) { Standard_NegativeValue::Raise(); }
   else {
index dd5b3bc..fd5167d 100644 (file)
@@ -32,6 +32,8 @@
 #include <Geom2dGcc_CurveToolGeo.hxx>
 #include <Geom2dInt_GInter.hxx>
 
+static const Standard_Integer aNbSolMAX = 16;
+
 // circulaire tant a une courbe et une droite ,de rayon donne
 //==============================================================
 
@@ -56,17 +58,17 @@ Geom2dGcc_Circ2d2TanRadGeo (const GccEnt_QualifiedLin&  Qualified1,
 // initialisation des champs.                                            +
 //========================================================================
 
-cirsol(1,16)   ,
-qualifier1(1,16),
-qualifier2(1,16),
-TheSame1(1,16) ,
-TheSame2(1,16) ,
-pnttg1sol(1,16),
-pnttg2sol(1,16),
-par1sol(1,16)  ,
-par2sol(1,16)  ,
-pararg1(1,16)  ,
-pararg2(1,16)  
+cirsol(1,aNbSolMAX)   ,
+qualifier1(1,aNbSolMAX),
+qualifier2(1,aNbSolMAX),
+TheSame1(1,aNbSolMAX) ,
+TheSame2(1,aNbSolMAX) ,
+pnttg1sol(1,aNbSolMAX),
+pnttg2sol(1,aNbSolMAX),
+par1sol(1,aNbSolMAX)  ,
+par2sol(1,aNbSolMAX)  ,
+pararg1(1,aNbSolMAX)  ,
+pararg2(1,aNbSolMAX)  
 {
 
   //========================================================================
@@ -244,17 +246,17 @@ Geom2dGcc_Circ2d2TanRadGeo (const GccEnt_QualifiedCirc& Qualified1,
 // initialisation des champs.                                            +
 //========================================================================
 
-cirsol(1,16)   ,
-qualifier1(1,16),
-qualifier2(1,16),
-TheSame1(1,16) ,
-TheSame2(1,16) ,
-pnttg1sol(1,16),
-pnttg2sol(1,16),
-par1sol(1,16)  ,
-par2sol(1,16)  ,
-pararg1(1,16)  ,
-pararg2(1,16)  
+cirsol(1,aNbSolMAX)   ,
+qualifier1(1,aNbSolMAX),
+qualifier2(1,aNbSolMAX),
+TheSame1(1,aNbSolMAX) ,
+TheSame2(1,aNbSolMAX) ,
+pnttg1sol(1,aNbSolMAX),
+pnttg2sol(1,aNbSolMAX),
+par1sol(1,aNbSolMAX)  ,
+par2sol(1,aNbSolMAX)  ,
+pararg1(1,aNbSolMAX)  ,
+pararg2(1,aNbSolMAX)  
 {
 
   //========================================================================
@@ -437,17 +439,17 @@ Geom2dGcc_Circ2d2TanRadGeo (const Geom2dGcc_QCurve& Qualified1,
 // initialisation des champs.                                            +
 //========================================================================
 
-cirsol(1,16)   ,
-qualifier1(1,16),
-qualifier2(1,16),
-TheSame1(1,16) ,
-TheSame2(1,16) ,
-pnttg1sol(1,16),
-pnttg2sol(1,16),
-par1sol(1,16)  ,
-par2sol(1,16)  ,
-pararg1(1,16)  ,
-pararg2(1,16)  
+cirsol(1,aNbSolMAX)   ,
+qualifier1(1,aNbSolMAX),
+qualifier2(1,aNbSolMAX),
+TheSame1(1,aNbSolMAX) ,
+TheSame2(1,aNbSolMAX) ,
+pnttg1sol(1,aNbSolMAX),
+pnttg2sol(1,aNbSolMAX),
+par1sol(1,aNbSolMAX)  ,
+par2sol(1,aNbSolMAX)  ,
+pararg1(1,aNbSolMAX)  ,
+pararg2(1,aNbSolMAX)  
 {
 
   //========================================================================
@@ -528,197 +530,170 @@ pararg2(1,16)
   }
 }
 
+//=======================================================================
+//function : PrecRoot
+//purpose  : In case, when curves has tangent zones, intersection point
+//            found may be precised. This function uses precision algorithm
+//            of Extrema Curve-Curve method (dot product between every
+//            tangent vector and vector between points in two curves must
+//            be equal to zero).
+//=======================================================================
 static void PrecRoot(const Adaptor3d_OffsetCurve& theC1,
                      const Adaptor3d_OffsetCurve& theC2,
                      const Standard_Real theU0,
                      const Standard_Real theV0,
-                     const Standard_Real theUmin,
-                     const Standard_Real theUmax,
-                     const Standard_Real theVmin,
-                     const Standard_Real theVmax,
                      Standard_Real& theUfinal,
                      Standard_Real& theVfinal)
 {
-  const Standard_Real aInitStepU = (theUmax - theUmin)/2.0,
-    aInitStepV = (theVmax - theVmin)/2.0;
+/*
+It is necessary for precision to solve the system
+
+    \left\{\begin{matrix}
+    (x_{1}(u)-x_{2}(v))*{x_{1}(u)}'+(y_{1}(u)-y_{2}(v))*{y_{1}(u)}'=0\\ 
+    (x_{1}(u)-x_{2}(v))*{x_{2}(v)}'+(y_{1}(u)-y_{2}(v))*{y_{2}(v)}'=0
+    \end{matrix}\right.
+
+Precision of any 2*2-system (two equation and two variables)
+
+    \left\{\begin{matrix}
+    S_{1}(u,v)=0\\ 
+    S_{2}(u,v)=0
+    \end{matrix}\right.
+
+by Newton method can be made as follows:
+
+    u=u_{0}-\left (\frac{\frac{\partial S_{2}}{\partial v}*S_{1}-
+      \frac{\partial S_{1}}{\partial v}*S_{2}}
+      {\frac{\partial S_{1}}{\partial u}*
+      \frac{\partial S_{2}}{\partial v}-
+      \frac{\partial S_{1}}{\partial v}*
+      \frac{\partial S_{2}}{\partial u}}  \right )_{u_{0},v_{0}}\\ 
+    v=v_{0}-\left (\frac{\frac{\partial S_{1}}{\partial u}*S_{2}-
+      \frac{\partial S_{2}}{\partial u}*S_{1}}
+      {\frac{\partial S_{1}}{\partial u}*
+      \frac{\partial S_{2}}{\partial v}-
+      \frac{\partial S_{1}}{\partial v}*
+      \frac{\partial S_{2}}{\partial u}}  \right )_{u_{0},v_{0}}
+    \end{matrix}\right.
+
+where u_{0} and v_{0} are initial values or values computed on previous iteration.
+*/
 
-  Standard_Real aStepU = aInitStepU, aStepV = aInitStepV;
+  theUfinal = theU0;
+  theVfinal = theV0;
 
-  const Standard_Real aTol = Precision::PConfusion() * Precision::PConfusion();
   const Standard_Integer aNbIterMax = 100;
 
-  gp_Pnt2d aP1, aP2;
-  gp_Vec2d aD1, aD2;
+  Standard_Real aU = theU0, aV = theV0;
+  gp_Pnt2d aPu, aPv;
+  gp_Vec2d aD1u, aD1v, aD2u, aD2v;
 
-  Geom2dGcc_CurveToolGeo::D1(theC1, theU0, aP1, aD1);
-  Geom2dGcc_CurveToolGeo::D1(theC2, theV0, aP2, aD2);
+  Standard_Integer aNbIter = 0;
 
-  gp_Vec2d vP12(aP1.XY() - aP2.XY());
+  Standard_Real aStepU = 0.0, aStepV = 0.0;
 
-  Standard_Real aU = theU0, aV = theV0;
-  theUfinal = theU0;
-  theVfinal = theV0;
+  Standard_Real aSQDistPrev = RealFirst();
 
-  Standard_Real aSQDistPrev = aP1.SquareDistance(aP2);
+  Geom2dGcc_CurveToolGeo::D2(theC1, aU, aPu, aD1u, aD2u);
+  Geom2dGcc_CurveToolGeo::D2(theC2, aV, aPv, aD1v, aD2v);
 
-  Standard_Integer aNbIter = 1;
+  const Standard_Real aCrProd = Abs(aD1u.Crossed(aD1v));
+  if(aCrProd*aCrProd > 1.0e-6*
+      aD1u.SquareMagnitude()*aD1v.SquareMagnitude())
+  {
+    //Curves are not tangent. Therefore, we consider that 
+    //2D-intersection algorithm have found good point which
+    //did not need in more precision.
+    return;
+  }
 
   do
   {
-    Standard_Real aDetH = aD1.Y()*aD2.X() - aD1.X()*aD2.Y();
-    if(aDetH == 0.0)
-      break;
-
-    aU += aStepU*(aD2.Y() * vP12.X() - aD2.X()*vP12.Y())/aDetH;
-    aV += aStepV*(aD1.Y() * vP12.X() - aD1.X()*vP12.Y())/aDetH;
-
-    if(Abs(aU - theUmin) > 1000.0)
-      //method diverges
-      return;
-
-    if(Abs(aU - theUmax) > 1000.0)
-      //method diverges
-      return;
+    aNbIter++;
 
-    if(Abs(aV - theVmin) > 1000.0)
-      //method diverges
-      return;
+    gp_Vec2d aVuv(aPv, aPu);
 
-    if(Abs(aV - theVmax) > 1000.0)
-      //method diverges
-      return;
-
-    Geom2dGcc_CurveToolGeo::D1(theC1, aU, aP1, aD1);
-    Geom2dGcc_CurveToolGeo::D1(theC2, aV, aP2, aD2);
-    const Standard_Real aSQDist = aP1.SquareDistance(aP2);
-
-    if(Precision::IsInfinite(aSQDist))
-      //method diverges
-      return;
-
-    vP12.SetXY(aP1.XY() - aP2.XY());
+    Standard_Real aSQDist = aVuv.SquareMagnitude();
+    if(IsEqual(aSQDist, 0.0))
+      break;
 
-    if(aSQDist < aSQDistPrev)
+    if((aNbIter == 1) || (aSQDist < aSQDistPrev))
     {
       aSQDistPrev = aSQDist;
-      aStepU = aInitStepU;
-      aStepV = aInitStepV;
       theUfinal = aU;
       theVfinal = aV;
     }
-    else
-    {
-      aStepU /= 2.0;
-      aStepV /= 2.0;
-    }
-  }
-  while((aNbIter++ < aNbIterMax) && ((aStepU > aTol) || (aStepV > aTol)));
-
-  Standard_Boolean isInBound = Standard_True;
-  if(theUfinal < theUmin)
-  {
-    aU = theUfinal;
-    aV = theVfinal;
-
-    theUfinal = theUmin;
-    isInBound = Standard_False;
-  }
-
-  if(theUfinal > theUmax)
-  {
-    aU = theUfinal;
-    aV = theVfinal;
 
-    theUfinal = theUmax;
-    isInBound = Standard_False;
-  }
 
-  if(!isInBound)
-  {
-    Geom2dGcc_CurveToolGeo::D1(theC1, aU, aP1, aD1);
-    Geom2dGcc_CurveToolGeo::D1(theC2, aV, aP2, aD2);
-    Standard_Real aV1 = (aD2.X() == 0.0) ? aV :((theUfinal - aU)*aD1.X() + aV*aD2.X() + (aP1.X() - aP2.X()))/aD2.X();
-    Standard_Real aV2 = (aD2.Y() == 0.0) ? aV :((theUfinal - aU)*aD1.Y() + aV*aD2.Y() + (aP1.Y() - aP2.Y()))/aD2.Y();
+    Standard_Real aG1 = aD1u.Magnitude();
+    Standard_Real aG2 = aD1v.Magnitude();
 
-    if(aV1 < theVmin)
-      aV1 = theVmin;
+    if(IsEqual(aG1, 0.0) || IsEqual(aG2, 0.0))
+    {//Here we do not processing singular cases.
+      break;
+    }
 
-    if(aV1 > theVmax)
-      aV1 = theVmax;
+    Standard_Real aF1 = aVuv.Dot(aD1u);
+    Standard_Real aF2 = aVuv.Dot(aD1v);
 
-    if(aV2 < theVmin)
-      aV2 = theVmin;
+    Standard_Real aFIu = aVuv.Dot(aD2u);
+    Standard_Real aFIv = aVuv.Dot(aD2v);
+    Standard_Real aPSIu = aD1u.Dot(aD2u);
+    Standard_Real aPSIv = aD1v.Dot(aD2v);
 
-    if(aV2 > theVmax)
-      aV2 = theVmax;
+    Standard_Real aTheta = aD1u*aD1v;
 
-    aP1 = Geom2dGcc_CurveToolGeo::Value(theC1,theUfinal);
-    aP2 = Geom2dGcc_CurveToolGeo::Value(theC2,aV1);
+    Standard_Real aS1 = aF1/aG1;
+    Standard_Real aS2 = aF2/aG2;
 
-    Standard_Real aSQ1 = aP1.SquareDistance(aP2);
+    Standard_Real aDS1u = (aG1*aG1+aFIu)/aG1 - (aS1*aPSIu/(aG1*aG1));
+    Standard_Real aDS1v = -aTheta/aG1;
+    Standard_Real aDS2u = aTheta/aG2;
+    Standard_Real aDS2v = (aFIv-aG2*aG2)/aG2 - (aS2*aPSIv/(aG2*aG2));
 
-    aP2 = Geom2dGcc_CurveToolGeo::Value(theC2,aV2);
-    Standard_Real aSQ2 = aP1.SquareDistance(aP2);
+    Standard_Real aDet = aDS1u*aDS2v-aDS1v*aDS2u;
 
-    if(aSQ1 < aSQ2)
-      theVfinal = aV1;
+    if(IsEqual(aDet, 0.0))
+    {
+      if(!IsEqual(aStepV, 0.0) && !IsEqual(aDS1u, 0.0))
+      {
+        aV += aStepV;
+        aU = aU - (aDS1v*aStepV - aS1)/aDS1u;
+      }
+      else if(!IsEqual(aStepU, 0.0) && !IsEqual(aDS1v, 0.0))
+      {
+        aU += aStepU;
+        aV = aV - (aDS1u*aStepU - aS1)/aDS1v;
+      }
+      else
+      {
+        break;
+      }
+    }
     else
-      theVfinal = aV2;
-
-    return;
-  }
-
-  if(theVfinal < theVmin)
-  {
-    aU = theUfinal;
-    aV = theVfinal;
-
-    theVfinal = theVmin;
-    isInBound = Standard_False;
-  }
+    {
+      aStepU = -(aS1*aDS2v-aS2*aDS1v)/aDet;
+      aStepV = -(aS2*aDS1u-aS1*aDS2u)/aDet;
+
+      if(Abs(aStepU) < Epsilon(Abs(aU)))
+      {
+        if(Abs(aStepV) < Epsilon(Abs(aV)))
+        {
+          break;
+        }
+      }
 
-  if(theVfinal > theVmax)
-  {
-    aU = theUfinal;
-    aV = theVfinal;
+      aU += aStepU;
+      aV += aStepV;
+    }
 
-    theVfinal = theVmax;
-    isInBound = Standard_False;
+    Geom2dGcc_CurveToolGeo::D2(theC1, aU, aPu, aD1u, aD2u);
+    Geom2dGcc_CurveToolGeo::D2(theC2, aV, aPv, aD1v, aD2v);
   }
+  while(aNbIter <= aNbIterMax);
+}
 
-  if(isInBound)
-    return;
-
-  Geom2dGcc_CurveToolGeo::D1(theC1, aU, aP1, aD1);
-  Geom2dGcc_CurveToolGeo::D1(theC2, aV, aP2, aD2);
-  Standard_Real aU1 = (aD1.X() == 0.0) ? aU :((theVfinal - aV)*aD2.X() + aU*aD1.X() + (aP2.X() - aP1.X()))/aD1.X();
-  Standard_Real aU2 = (aD1.Y() == 0.0) ? aU :((theVfinal - aV)*aD2.Y() + aU*aD1.Y() + (aP2.Y() - aP1.Y()))/aD1.Y();
-
-  if(aU1 < theUmin)
-    aU1 = theUmin;
-
-  if(aU1 > theUmax)
-    aU1 = theUmax;
-
-  if(aU2 < theUmin)
-    aU2 = theUmin;
-
-  if(aU2 > theUmax)
-    aU2 = theUmax;
-
-  aP2 = Geom2dGcc_CurveToolGeo::Value(theC2,theVfinal);
-  aP1 = Geom2dGcc_CurveToolGeo::Value(theC1,aU1);
-
-  Standard_Real aSQ1 = aP1.SquareDistance(aP2);
-
-  aP1 = Geom2dGcc_CurveToolGeo::Value(theC1,aU2);
-  Standard_Real aSQ2 = aP1.SquareDistance(aP2);
 
-  if(aSQ1 < aSQ2)
-    theUfinal = aU1;
-  else
-    theUfinal = aU2;  
-}
 
 // circulaire tant a deux courbes ,de rayon donne
 //==================================================
@@ -733,7 +708,6 @@ static void PrecRoot(const Adaptor3d_OffsetCurve& theC1,
 // On cree la solution qu on ajoute aux solutions deja trouvees.         +
 // On remplit les champs.                                                +
 //========================================================================
-
 Geom2dGcc_Circ2d2TanRadGeo::
 Geom2dGcc_Circ2d2TanRadGeo (const Geom2dGcc_QCurve& Qualified1,
                             const Geom2dGcc_QCurve& Qualified2,
@@ -744,17 +718,17 @@ Geom2dGcc_Circ2d2TanRadGeo (const Geom2dGcc_QCurve& Qualified1,
 // initialisation des champs.                                            +
 //========================================================================
 
-cirsol(1,16)   ,
-qualifier1(1,16),
-qualifier2(1,16),
-TheSame1(1,16) ,
-TheSame2(1,16) ,
-pnttg1sol(1,16),
-pnttg2sol(1,16),
-par1sol(1,16)  ,
-par2sol(1,16)  ,
-pararg1(1,16)  ,
-pararg2(1,16)  
+cirsol(1,aNbSolMAX)   ,
+qualifier1(1,aNbSolMAX),
+qualifier2(1,aNbSolMAX),
+TheSame1(1,aNbSolMAX) ,
+TheSame2(1,aNbSolMAX) ,
+pnttg1sol(1,aNbSolMAX),
+pnttg2sol(1,aNbSolMAX),
+par1sol(1,aNbSolMAX)  ,
+par2sol(1,aNbSolMAX)  ,
+pararg1(1,aNbSolMAX)  ,
+pararg2(1,aNbSolMAX)  
 {
 
   //========================================================================
@@ -881,6 +855,8 @@ pararg2(1,16)
         Intp.Perform(C1,C2,Tol,Tol);
         if (Intp.IsDone()) {
           if (!Intp.IsEmpty()) {
+            const Standard_Real aSQApproxTol = Precision::Approximation() *
+                                                Precision::Approximation();
             for (Standard_Integer i = 1 ; i <= Intp.NbPoints() ; i++)
             {
               Standard_Real aU0 = Intp.Point(i).ParamOnFirst();
@@ -897,21 +873,16 @@ pararg2(1,16)
               gp_Pnt2d P21 = Geom2dGcc_CurveToolGeo::Value(C1,aU2);
               gp_Pnt2d P22 = Geom2dGcc_CurveToolGeo::Value(C2,aV2);
 
-              Standard_Real aDist1112 = P11.Distance(P12);
-              Standard_Real aDist1122 = P11.Distance(P22);
+              Standard_Real aDist1112 = P11.SquareDistance(P12);
+              Standard_Real aDist1122 = P11.SquareDistance(P22);
 
-              Standard_Real aDist1221 = P12.Distance(P21);
-              Standard_Real aDist2122 = P21.Distance(P22);
+              Standard_Real aDist1221 = P12.SquareDistance(P21);
+              Standard_Real aDist2122 = P21.SquareDistance(P22);
 
-              if( Min(aDist1112, aDist1122) <= Precision::Approximation() &&
-                Min(aDist1221, aDist2122) <= Precision::Approximation())
+              if( (Min(aDist1112, aDist1122) <= aSQApproxTol) &&
+                  (Min(aDist1221, aDist2122) <= aSQApproxTol))
               {
-                PrecRoot(C1, C2, aU0, aV0,
-                  Max(Geom2dGcc_CurveToolGeo::FirstParameter(C1), aU0 - 10.0),
-                  Min(Geom2dGcc_CurveToolGeo::LastParameter(C1), aU0 + 10.0),
-                  Max(Geom2dGcc_CurveToolGeo::FirstParameter(C2), aV0 - 10.0),
-                  Min(Geom2dGcc_CurveToolGeo::LastParameter(C2), aV0 + 10.0),
-                  aU0, aV0);
+                PrecRoot(C1, C2, aU0, aV0, aU0, aV0);
               }
 
               NbrSol++;
index dc21320..e657e38 100644 (file)
@@ -41,6 +41,7 @@
 #include <Geom2d_Circle.hxx>
 #include <IntAna2d_AnaIntersection.hxx>
 #include <IntAna2d_IntPoint.hxx>
+#include <IntRes2d_IntersectionPoint.hxx>
 
 #include <stdio.h>
 #ifdef WNT
@@ -275,7 +276,6 @@ static Standard_Integer extrema(Draw_Interpretor& di, Standard_Integer n, const
   return 0;
 }
 
-
 //=======================================================================
 //function : intersect
 //purpose  : 
@@ -319,7 +319,10 @@ static Standard_Integer intersect(Draw_Interpretor& di, Standard_Integer n, cons
 
   for ( i = 1; i <= Intersector.NbPoints(); i++) {
     gp_Pnt2d P = Intersector.Point(i);
+
     di<<"Intersection point "<<i<<" : "<<P.X()<<" "<<P.Y()<<"\n";
+    di<<"parameter on the fist: "<<Intersector.Intersector().Point(i).ParamOnFirst();
+    di<<" parameter on the second: "<<Intersector.Intersector().Point(i).ParamOnSecond()<<"\n";
     Handle(Draw_Marker2D) mark = new Draw_Marker2D( P, Draw_X, Draw_vert); 
     dout << mark;
   }
index ba8ac30..e63dc32 100644 (file)
@@ -104,7 +104,7 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
   Standard_Real TlConf=(TheTolConf < TOL_CONF_MINI)? TOL_CONF_MINI : TheTolConf;
   Perform(C1,D1,C2,D2,TlConf,Tl,0,DU,DV);
   //----------------------------------------------------------------------
-  //-- Traitement des points en bouts 
+  //-- Processing of end points
   //----------------------------------------------------------------------
   Standard_Boolean HeadOn1 = Standard_False;
   Standard_Boolean HeadOn2 = Standard_False;
@@ -115,14 +115,14 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
 
 
   //--------------------------------------------------------------------
-  //-- On ne rejette les points Head Head ... End End 
-  //-- si ils figurent deja dans un bout de segment 
-  //-- ( On ne peut pas tester les egalites sur les parametres)
-  //-- ( ces points n etant pas trouves a EpsX pres           )
-  //-- PosSegment =            1    si Head Head
-  //--                       2      si Head End
-  //--                     4        si End  Head
-  //--                   8          si End  End
+  //-- The points Head Head ... End End are not rejected if
+  //-- they are already present at the end of segment 
+  //-- ( It is not possible to test the equities on the parameters)
+  //-- ( these points are not found at EpsX precision    )
+  //-- PosSegment =            1    if Head Head
+  //--                       2      if Head End
+  //--                     4        if End  Head
+  //--                   8          if End  End
   //--------------------------------------------------------------------
   Standard_Integer PosSegment = 0;
 
@@ -227,14 +227,14 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
   Standard_Integer n=this->NbPoints();
 
   //--------------------------------------------------------------------
-  //-- On ne rejette les points Head Head ... End End 
-  //-- si ils figurent deja dans un bout de segment 
-  //-- ( On ne peut pas tester les egalites sur les parametres)
-  //-- ( ces points n etant pas trouves a EpsX pres           )
-  //-- PosSegment =            1    si Head Head
-  //--                       2      si Head End
-  //--                     4        si End  Head
-  //--                   8          si End  End
+   //-- The points Head Head ... End End are not rejected if
+  //-- they are already present at the end of segment 
+  //-- ( It is not possible to test the equities on the parameters)
+  //-- ( these points are not found at EpsX precision    )
+  //-- PosSegment =            1    if Head Head
+  //--                       2      if Head End
+  //--                     4        if End  Head
+  //--                   8          if End  End
   //--------------------------------------------------------------------
   Standard_Integer PosSegment = 0;
 
@@ -298,10 +298,10 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
 
   if(NbIter>3 || (NbIter>2 && nbsamples>100)) return;
 
-  nbsamples*=2;   //---  On prend systematiquement 2 fois plus de points que 
-                  //--   sur une courbe normale.  
-                  //--   Les courbes auto-intersectantes donne souvent des 
-                  //--   polygones assez loin de la courbe a parametre ct.
+  nbsamples*=2;   //---  We take systematically two times more points 
+                  //--   than on a normal curve.  
+                  //--   Auto-intersecting curves often produce  
+                  //--   polygons rather far from the curve with parameter ct.
 
   if(NbIter>0) { 
     nbsamples=(3*(nbsamples*NbIter))/2;
@@ -313,9 +313,9 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
   }
   //-- Poly1.Dump();
   //----------------------------------------------------------------------
-  //-- Si la deflection est inferieure a la Tolerance de Confusion
-  //-- Alors la deflection du polygone est fixee a TolConf
-  //-- (Detection des Zones de Tangence)
+  //-- If the deflection is less than the Tolerance of Confusion
+  //-- then the deflection of the polygon is set in TolConf
+  //-- (Detection of Tangency Zones)
   //----------------------------------------------------------------------
   if(Poly1.DeflectionOverEstimation() < TolConf) { 
     Poly1.SetDeflectionOverEstimation(TolConf);
@@ -326,13 +326,13 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
   Standard_Real U,V;
   
   //----------------------------------------------------------------------
-  //-- Traitement des SectionPoint 
+  //-- Processing of SectionPoint 
   //----------------------------------------------------------------------
   Standard_Integer Nbsp = InterPP.NbSectionPoints();
   if(Nbsp>=1) {
     
     //-- ---------------------------------------------------------------------
-    //-- tri  tri  tri  tri  tri  tri  tri  tri  tri  tri  tri  tri  tri  tri 
+    //-- filtering, filtering, filtering ...
     //-- 
     Standard_Integer* TriIndex     = new Standard_Integer [Nbsp+1];
     Standard_Integer* PtrSegIndex1 = new Standard_Integer [Nbsp+1];
@@ -401,7 +401,7 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
          
                EIP.Perform(Poly1,Poly1,SegIndex1,SegIndex2,ParamOn1,ParamOn2);
                if(EIP.NbRoots()==0) {
-                 //-- On supprime tous les segments voisins 
+                 //-- All neighbor segments are removed 
                  for(Standard_Integer k=sp+1;k<=Nbsp;k++) { 
                    Standard_Integer kk=TriIndex[k];
                    // --- avoid negative indicies as well as in outer done
@@ -415,7 +415,7 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
                }         
                else if(EIP.NbRoots()>=1) { 
                  //--------------------------------------------------------------------
-                 //-- On verifie que le point trouve est bien une racine
+                 //-- It is checked if the found point is a root
                  //--------------------------------------------------------------------
                  EIP.Roots(U,V);
 
@@ -426,15 +426,15 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
            
                  if(Abs(U-V)<=EpsX1) { 
                    //-----------------------------------------
-                   //-- Solution non valide 
-                   //-- Les maths ont du converger vers une 
-                   //-- solution triviale ( point U = V )
+                   //-- Solution not valid 
+                   //-- The maths should have converged in a 
+                   //-- trivial solution  ( point U = V )
                    //-----------------------------------------
                    Dist = TolConf+1.0;
                  }
            
                  //-----------------------------------------------------------------
-                 //-- On verifie que le point (u,v) n existe pas deja 
+                 //-- It is checked if the point (u,v) already exists  
                  //--
                  done = Standard_True;
                  Standard_Integer nbp=NbPoints();
@@ -448,12 +448,12 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
                    }
                  }
            
-                 if(Dist <= TolConf) {    //-- Ou le point est deja present
+                 if(Dist <= TolConf) {    //-- Or the point is already present
                    IntRes2d_Position Pos1 = IntRes2d_Middle;
                    IntRes2d_Position Pos2 = IntRes2d_Middle;
                    IntRes2d_Transition  Trans1,Trans2;
                    //-----------------------------------------------------------------
-                   //-- Calcul des Positions des Points sur la courbe
+                   //-- Calculate Positions of Points on the curve
                    //--
                    if(P1.Distance(DomainOnCurve1.FirstPoint())<=DomainOnCurve1.FirstTolerance())    
                            Pos1 = IntRes2d_Head;
@@ -599,13 +599,13 @@ Standard_Boolean HeadOrEndPoint( const IntRes2d_Domain& D1
     }
 
     //--------------------------------------------------------------------
-    //-- On Teste si un point de bout de segment a deja ces trnasitions 
-    //-- Si Oui, on ne cree pas de nouveau point
+    //-- It is tested if a point at the end of segment already has its transitions
+    //-- If Yes, the new point is not created
     //-- 
-    //-- PosSegment =            1    si Head Head
-    //--                       2      si Head End
-    //--                     4        si End  Head
-    //--                   8          si End  End
+    //-- PosSegment =            1    if Head Head
+    //--                       2      if Head End
+    //--                     4        if End  Head
+    //--                   8          if End  End
     //--------------------------------------------------------------------
     if(Pos1 == IntRes2d_Head) { 
       if((Pos2 == IntRes2d_Head)&&(PosSegment & 1)) return(Standard_False);
@@ -675,35 +675,30 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
   /////////////////////////////////////////////
 
   
-  NCollection_Handle<IntCurve_ThePolygon2d> aPoly1 ,aPoly2;
-  if(nbsamplesOnC2 > nbsamplesOnC1) { 
-    aPoly1 = new IntCurve_ThePolygon2d(C1,nbsamplesOnC1,D1,Tol);  
-    if(aPoly1->DeflectionOverEstimation() < TolConf) { 
-      aPoly2 = new IntCurve_ThePolygon2d(C2,nbsamplesOnC2,D2,Tol);
-    }
-    else { 
-      aPoly2 = new IntCurve_ThePolygon2d(C2,nbsamplesOnC2,D2,Tol,aPoly1->Bounding());
-      aPoly1->SetDeflectionOverEstimation( aPoly2->DeflectionOverEstimation()
-                                           + aPoly1->DeflectionOverEstimation());
-      aPoly1->ComputeWithBox(C1,aPoly2->Bounding());
-    }
-  }
-  else { 
-    aPoly2 = new IntCurve_ThePolygon2d(C2,nbsamplesOnC2,D2,Tol);  
-    if(aPoly2->DeflectionOverEstimation() < TolConf) {
-      aPoly1 = new IntCurve_ThePolygon2d(C1,nbsamplesOnC1,D1,Tol);
-    }
-    else { 
-      aPoly1 = new IntCurve_ThePolygon2d(C1,nbsamplesOnC1,D1,Tol,aPoly2->Bounding());
-      aPoly2->SetDeflectionOverEstimation( aPoly2->DeflectionOverEstimation()
-                                           + aPoly1->DeflectionOverEstimation());
-      aPoly2->ComputeWithBox(C2,aPoly1->Bounding());
-    }
+  NCollection_Handle<IntCurve_ThePolygon2d>
+    aPoly1 = new IntCurve_ThePolygon2d(C1,nbsamplesOnC1,D1,Tol),
+    aPoly2 = new IntCurve_ThePolygon2d(C2,nbsamplesOnC2,D2,Tol);
+
+  if( (aPoly1->DeflectionOverEstimation() > TolConf) ||
+      (aPoly2->DeflectionOverEstimation() > TolConf))
+  {
+    const Standard_Real aDeflectionSum = 
+      Max(aPoly1->DeflectionOverEstimation(), TolConf) + 
+      Max(aPoly2->DeflectionOverEstimation(), TolConf);
+
+    aPoly2->SetDeflectionOverEstimation(aDeflectionSum);
+    aPoly1->SetDeflectionOverEstimation(aDeflectionSum);
+
+    const Bnd_Box2d aB1 = aPoly1->Bounding(), aB2 = aPoly2->Bounding();
+
+    aPoly1->ComputeWithBox(C1, aB2);
+    aPoly2->ComputeWithBox(C2, aB1);
   }
+
   //----------------------------------------------------------------------
-  //-- Si la deflection est inferieure a la Tolerance de Confusion
-  //-- Alors la deflection du polygone est fixee a TolConf
-  //-- (Detection des Zones de Tangence)
+  //-- if the deflection less then the Tolerance of Confusion
+  //-- Then the deflection of the polygon is set in TolConf
+  //-- (Detection of Tangency Zones)
   //----------------------------------------------------------------------
 
   if(aPoly1->DeflectionOverEstimation() < TolConf) { 
@@ -712,12 +707,12 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
   if(aPoly2->DeflectionOverEstimation() < TolConf) { 
     aPoly2->SetDeflectionOverEstimation(TolConf);
   }
-  //for case when a few polygon points were replaced by line
-  //if exact solution was not found 
-  //then search of precise solution will be repeat 
-  //for polygon conatins all initial points
-  //secondary search will be performed only for case when initial points
-  //were dropped
+  // for case when a few polygon points were replaced by line
+  // if exact solution was not found 
+  // then search of precise solution will be repeated 
+  // for polygon contains all initial points
+  // secondary search will be performed only for case when initial points
+  // were dropped
   Standard_Boolean isFullRepresentation = ( aPoly1->NbSegments() == nbsamplesOnC1 && 
            aPoly2->NbSegments() == nbsamplesOnC2 );
   
@@ -769,7 +764,7 @@ Standard_Boolean IntCurve_IntPolyPolyGen::findIntersect(
   Standard_Boolean AnErrorOccurred = Standard_False;
   done = Standard_True; // To prevent exception in nbp=NbPoints();
   //----------------------------------------------------------------------
-  //-- Traitement des SectionPoint 
+  //-- Processing of SectionPoint 
   //----------------------------------------------------------------------
   Standard_Integer Nbsp = InterPP.NbSectionPoints();
   for(Standard_Integer sp=1; sp <= Nbsp; sp++) {
@@ -792,7 +787,7 @@ Standard_Boolean IntCurve_IntPolyPolyGen::findIntersect(
     }
 
     //--------------------------------------------------------------------
-    //-- On verifie que le point trouve est bien une racine
+    //-- It is checked if the found point is really a root
     //--------------------------------------------------------------------
 
     EIP.Roots(U,V);
@@ -819,7 +814,7 @@ Standard_Boolean IntCurve_IntPolyPolyGen::findIntersect(
       Dist = P1.Distance(P2);
     }
     //-----------------------------------------------------------------
-    //-- On verifie que le point (u,v) n existe pas deja 
+    //-- It is checked if the point (u,v) does not exist already 
     //--
     Standard_Integer nbp=NbPoints();
     Standard_Real EpsX1 = 10.0*TheCurveTool::EpsX(C1);
@@ -833,12 +828,12 @@ Standard_Boolean IntCurve_IntPolyPolyGen::findIntersect(
       }
     }
 
-    if(Dist <= TolConf) {    //-- Ou le point est deja present
+    if(Dist <= TolConf) {    //-- Or the point is already present
       IntRes2d_Position Pos1 = IntRes2d_Middle;
       IntRes2d_Position Pos2 = IntRes2d_Middle;
       IntRes2d_Transition  Trans1,Trans2;
       //-----------------------------------------------------------------
-      //-- Calcul des Positions des Points sur la courbe
+      //-- Calculate the Positions of Points on the curve
       //--
       if(P1.Distance(DomainOnCurve1.FirstPoint())<=DomainOnCurve1.FirstTolerance())    
         Pos1 = IntRes2d_Head;
@@ -850,7 +845,7 @@ Standard_Boolean IntCurve_IntPolyPolyGen::findIntersect(
       else if(P2.Distance(DomainOnCurve2.LastPoint())<=DomainOnCurve2.LastTolerance()) 
         Pos2 = IntRes2d_End;
       //-----------------------------------------------------------------
-      //-- Calcul des Transitions (Voir IntImpParGen.cxx)
+      //-- Calculate the Transitions (see IntImpParGen.cxx)
       //--
       if(IntImpParGen::DetermineTransition (Pos1, Tan1, Trans1, Pos2, Tan2, Trans2, TolConf) == Standard_False) { 
         TheCurveTool::D2(C1,U,P1,Tan1,Norm1);
@@ -863,13 +858,13 @@ Standard_Boolean IntCurve_IntPolyPolyGen::findIntersect(
   }
   
   //----------------------------------------------------------------------
-  //-- Traitement des TangentZone
+  //-- Processing of TangentZone
   //----------------------------------------------------------------------
   Standard_Integer Nbtz = InterPP.NbTangentZones();
   for(Standard_Integer tz=1; tz <= Nbtz; tz++) {
     Standard_Integer NbPnts = InterPP.ZoneValue(tz).NumberOfPoints();
     //====================================================================
-    //== Recherche du premier et du dernier point dans la zone de tg.
+    //== Find the first and the last point in the tangency zone.
     //====================================================================
     Standard_Real ParamSupOnCurve2,ParamInfOnCurve2;
     Standard_Real ParamSupOnCurve1,ParamInfOnCurve1;
@@ -883,12 +878,11 @@ Standard_Boolean IntCurve_IntPolyPolyGen::findIntersect(
     for(Standard_Integer qq=1;qq<=NbPnts;qq++) { 
       const Intf_SectionPoint& SPnt1 = InterPP.ZoneValue(tz).GetPoint(qq);
       //====================================================================
-      //== On discretise sur les zones de tangence 
-      //== Test d arret : 
-      //==      Compteur 
-      //==     Deflection  < Tolerance 
-      //==  OU Echantillon < EpsX   (normalement la premiere condition est 
-      //==                           plus severe)
+      //== The zones of tangency are discretized 
+      //== Test of stop : Check if 
+      //==     (Deflection  < Tolerance)
+      //==  Or (Sample < EpsX)   (normally the first condition is 
+      //==                           more strict)
       //====================================================================
 //      Standard_Real _PolyUInf,_PolyUSup,_PolyVInf,_PolyVSup;
       Standard_Real _PolyUInf,_PolyVInf;
@@ -938,15 +932,15 @@ Standard_Boolean IntCurve_IntPolyPolyGen::findIntersect(
                               ,ParamInfOnCurve2,TolConf
                               ,TheCurveTool::Value(C2,ParamSupOnCurve2)
                               ,ParamSupOnCurve2,TolConf);
-      //-- On ne delete pas thePoly1(2) ,
-      //-- ils sont detruits enfin de fct. 
-      //-- !! Pas de return intempestif !!
+      //-- thePoly1(2) are not deleted,
+      //-- finally they are destroyed. 
+      //-- !! No untimely return !!
       Perform(C1,RecursD1,C2,RecursD2,Tol,TolConf,NbIter+1,DeltaU,DeltaV);
     }
     else { 
       //-----------------------------------------------------------------
-      //-- Calcul des Positions des Points sur la courbe et des 
-      //-- Transitions sur chaque borne du segment
+      //-- Calculate Positions of Points on the curve and  
+      //-- Transitions on each limit of the segment
       
       IntRes2d_Position Pos1 = IntRes2d_Middle;
       IntRes2d_Position Pos2 = IntRes2d_Middle;
index 4f820fa..6b9f1a5 100644 (file)
@@ -46,20 +46,6 @@ is
                    
                    returns Polygon2dGen from IntCurve;
 
-    Create         (Curve       : TheCurve;
-                   NbPnt       : Integer  from Standard;
-                   Domain      : Domain   from IntRes2d;
-                   Tol         : Real     from Standard;
-                   OtherBox    : Box2d    from Bnd)
-                   
-                   ---Purpose: Compute a polygon on the domain of the
-                   --          curve.   parameters of  the  begin and
-                   --          end of the curve (and its polygon) are
-                   --          adjusted to lie in the OtherBox.
-                   
-                   returns Polygon2dGen from IntCurve;
-
-
     ComputeWithBox(me       : in out; 
                    Curve    : TheCurve;
                   OtherBox : Box2d  from Bnd)
index 403516b..8f20b5a 100644 (file)
 
 #define MAJORATION_DEFLECTION 1.5
 //======================================================================
-//== On echantillonne sur le Domain de la Curve  NbPts Points 
-//== a parametres constants.
+//== We take samples on the Domain of the Curve  NbPts Points 
+//== with constant parameters.
 //== 
-//== On estime la fleche maximum en prenant la distance maxi entre la 
-//== droite Curve.Value(X(i))-->Curve.Value(X(i+1)) 
-//== et le point Curve.Value(X(i+1/2))
+//== We estimate the maximum deflection taking the max distance between the
+//== right Curve.Value(X(i))-->Curve.Value(X(i+1)) 
+//== and the point Curve.Value(X(i+1/2))
 //======================================================================
 //  Modified by Sergey KHROMOV - Mon Mar 24 12:02:43 2003 Begin
 IntCurve_Polygon2dGen::IntCurve_Polygon2dGen(const TheCurve&        C,
                                             const Standard_Integer tNbPts,
                                             const IntRes2d_Domain& D,
                                             const Standard_Real    Tol):
-//                                          const Standard_Real    ):
 //  Modified by Sergey KHROMOV - Mon Mar 24 12:02:45 2003 End
        ThePnts(1,(tNbPts<3)? 6 : (tNbPts+tNbPts)),
        TheParams(1,(tNbPts<3)? 6 : (tNbPts+tNbPts)),
@@ -49,13 +48,13 @@ IntCurve_Polygon2dGen::IntCurve_Polygon2dGen(const TheCurve&        C,
   TheMaxNbPoints = NbPts+NbPts;
   NbPntIn = NbPts;
   //----------------------------------------------------- 
-  //--- Initialisation du Brise a d_Parametre constant
+  //--- Initialization of the breaking with d_Parametre constant
   //---
   Binf = D.FirstParameter();
   Bsup = D.LastParameter();
   //-----------------------------------------------------
-  //-- IntRes2d Raise si HasFirst retourne False
-  //-- et Acces a First Parameter
+  //-- IntRes2d Raise if HasFirst returns False
+  //-- and accesses First Parameter
   //-- 
   Standard_Real u=Binf; 
   Standard_Real u1=Bsup;
@@ -76,7 +75,7 @@ IntCurve_Polygon2dGen::IntCurve_Polygon2dGen(const TheCurve&        C,
 
 
   //-----------------------------------------------------
-  //--- Calcul d un majorant de fleche approche
+  //--- Calculate a maximal deflection
   //---
 //  Modified by Sergey KHROMOV - Mon Mar 24 12:03:05 2003 Begin
 //   TheDeflection = 0.000000001;
@@ -112,109 +111,6 @@ IntCurve_Polygon2dGen::IntCurve_Polygon2dGen(const TheCurve&        C,
   ClosedPolygon = Standard_False;
 }
 //======================================================================
-//  Modified by Sergey KHROMOV - Mon Mar 24 12:03:26 2003 Begin
-IntCurve_Polygon2dGen::IntCurve_Polygon2dGen(const TheCurve&        C,
-                                            const Standard_Integer tNbPts,
-                                            const IntRes2d_Domain& D,
-                                            const Standard_Real Tol,
-                                            const Bnd_Box2d& BoxOtherPolygon):
-//  Modified by Sergey KHROMOV - Mon Mar 24 12:03:28 2003 End
-       ThePnts(1,(tNbPts<3)? 6 : (tNbPts+tNbPts)), 
-       TheParams(1,(tNbPts<3)? 6 : (tNbPts+tNbPts)), 
-       TheIndex(1,(tNbPts<3)? 6 : (tNbPts+tNbPts))
-{
-  Standard_Integer NbPts = (tNbPts<3)? 3 : tNbPts;
-  TheMaxNbPoints = NbPts+NbPts;
-  NbPntIn = NbPts; 
-  //----------------------------------------------------- 
-  //--- Initialisation du Brise a d_Parametre constant
-  //---
-  Binf = D.FirstParameter();
-  Bsup = D.LastParameter();
-  //-----------------------------------------------------
-  Standard_Real u=Binf; 
-  Standard_Real u1=Bsup;
-  Standard_Real du=(u1-u)/(Standard_Real)(NbPts-1);
-  Standard_Integer i=1;
-  do {
-    gp_Pnt2d P=TheCurveTool::Value(C,u);
-    myBox.Add(P);
-    ThePnts.SetValue(i,P); 
-    TheParams.SetValue(i,u);
-    TheIndex.SetValue(i,i);
-    u+=du;
-    i++;
-  }
-  while(i<=NbPts);
-
-
-  //-----------------------------------------------------
-  //--- Calcul d un majorant de fleche approche
-  //---
-//  Modified by Sergey KHROMOV - Mon Mar 24 12:03:55 2003 Begin
-//   TheDeflection = 0.0000001;
-  TheDeflection = Min(0.0000001, Tol/100.);
-//  Modified by Sergey KHROMOV - Mon Mar 24 12:03:56 2003 End
-  i=1;
-  u=D.FirstParameter();
-  u+=du * 0.5;
-  
-  do {
-    gp_Pnt2d Pm = TheCurveTool::Value(C,u);
-    const gp_Pnt2d& P1 = ThePnts.Value(i);
-    const gp_Pnt2d& P2 = ThePnts.Value(i+1);
-
-    Standard_Real dx,dy;    
-    dx=P1.X()-P2.X(); if(dx<0) dx=-dx;
-    dy=P1.Y()-P2.Y(); if(dy<0) dy=-dy;
-    if(dx+dy>1e-12) {      
-      gp_Lin2d L(P1,gp_Dir2d(gp_Vec2d(P1,P2)));
-      Standard_Real t = L.Distance(Pm);      
-      if(t>TheDeflection) {
-       TheDeflection = t;
-      }
-    }
-    u+=du;
-    i++;
-  }
-  while(i<NbPts);
-  
-  myBox.Enlarge(TheDeflection*MAJORATION_DEFLECTION);
-  ClosedPolygon = Standard_False;
-  //-------------------------------------------------------
-  //-- On supprime les points alignes 
-  //-- (Permet de diminuer le nombre total de points) 
-  //-- (Dans le cas ou la courbe est "droite"       )
-  Standard_Real DeflectionMaj = TheDeflection;
-  for(i=2;i<NbPntIn && NbPntIn>3;i++) { 
-    Standard_Integer indexim1 = TheIndex.Value(i-1);
-    Standard_Integer indexi   = TheIndex.Value(i);
-    Standard_Integer indexip1 = TheIndex.Value(i+1);
-    const gp_Pnt2d& Pim1 = ThePnts.Value(indexim1);
-    const gp_Pnt2d& Pi   = ThePnts.Value(indexi);
-    const gp_Pnt2d& Pip1 = ThePnts.Value(indexip1);
-
-    Standard_Real dx,dy;    
-    dx=Pim1.X()-Pip1.X(); if(dx<0) dx=-dx;
-    dy=Pim1.Y()-Pip1.Y(); if(dy<0) dy=-dy;
-    Standard_Real t=0;
-    if(dx+dy>1e-12) {    
-      gp_Lin2d L(Pim1,gp_Dir2d(gp_Vec2d(Pim1,Pip1)));
-      t = L.Distance(Pi);
-    }
-    if(t<=DeflectionMaj) { 
-      //-- On supprime le point i
-      for(Standard_Integer j = i; j<NbPntIn; j++) { 
-       TheIndex.SetValue(j,TheIndex.Value(j+1));
-      }
-      NbPntIn--;
-      i--;
-    }
-  }
-
-  ComputeWithBox(C,BoxOtherPolygon);
-}
-//======================================================================
 void IntCurve_Polygon2dGen::ComputeWithBox(const TheCurve&        C,
                                           const Bnd_Box2d& BoxOtherPolygon) {
   if(myBox.IsOut(BoxOtherPolygon)) { 
@@ -243,31 +139,23 @@ void IntCurve_Polygon2dGen::ComputeWithBox(const TheCurve&        C,
       const gp_Pnt2d& P2d = ThePnts.Value(TheIndex.Value(i));
       Ri = CalculRegion(P2d.X(),P2d.Y(),bx0,bx1,by0,by1);
       if((Ri & Rprec)==0) { 
-       if(nbp) { 
-         if(TheIndex.Value(nbp) != TheIndex.Value(i-1)) { 
-           nbp++;
-           TheIndex.SetValue(nbp,TheIndex.Value(i-1));
-         }
-       }
-       else {
-         nbp++;
-         TheIndex.SetValue(nbp,TheIndex.Value(i-1)); 
-       }
-       nbp++;
-       TheIndex.SetValue(nbp,TheIndex.Value(i));
-       if(TheIndex.Value(i) > MaxIndexUsed) MaxIndexUsed = TheIndex.Value(i);
+        if(nbp) { 
+          if(TheIndex.Value(nbp) != TheIndex.Value(i-1)) { 
+            nbp++;
+            TheIndex.SetValue(nbp,TheIndex.Value(i-1));
+          }
+        }
+        else {
+          nbp++;
+          TheIndex.SetValue(nbp,TheIndex.Value(i-1)); 
+        }
+        nbp++;
+        TheIndex.SetValue(nbp,TheIndex.Value(i));
+        if(TheIndex.Value(i) > MaxIndexUsed) MaxIndexUsed = TheIndex.Value(i);
 
-       Rprec = Ri;
-      }
-      else { 
-       if((Ri & Rprec)==0) { 
-         nbp++;
-         TheIndex.SetValue(nbp,TheIndex.Value(i));
-         if(TheIndex.Value(i) > MaxIndexUsed) MaxIndexUsed = TheIndex.Value(i);
+        Rprec = Ri;
+      }//if((Ri & Rprec)==0) condition
 
-         Rprec = Ri; 
-       }
-      }
       Rprec = Ri;
     }
     if(nbp==1) { 
@@ -418,7 +306,7 @@ void IntCurve_Polygon2dGen::Dump(void) const {
   if(debug) { 
     Standard_Real bx0,bx1,by0,by1;
     
-    cout<<"\n ----- Dump de IntCurve_Polygon2dGen -----"<<endl;
+    cout<<"\n ----- Dump of IntCurve_Polygon2dGen -----"<<endl;
     if(myBox.IsVoid()) { 
       cout<<"  Polygone Vide "<<endl;
       return;
index 41152a8..309bfda 100755 (executable)
@@ -7,6 +7,8 @@ puts ""
 ## After command sew in DRAW on attached shape free wires are disappeared.
 ####################################################
 
+puts "TODO OCC25593 ALL: Faulty shapes in variables faulty_1 to faulty_4"
+
 restore [locate_data_file OCC714.brep] a 
 checkshape a
 
index 14a8ea6..ec3aeb7 100755 (executable)
@@ -27,41 +27,40 @@ if { [info exists Sol4] } {
    set good_YAxisX 0
    set good_YAxisY 1
    set good_Radius 3
-   if { ${CenterX} != ${good_CenterX} } {
-      puts "Faulty : Bad CenterX"
-      set status 1
-   }
-   if { ${CenterY} != ${good_CenterY} } {
-      puts "Faulty : Bad CenterY"
+   
+   set SQDistCC [expr ($CenterX-$good_CenterX)*($CenterX-$good_CenterX)+($CenterY-$good_CenterY)*($CenterY-$good_CenterY)]
+   
+   if { ${SQDistCC} > 1.0e-14 } {
+      puts "Faulty : Bad Center of the circle"
       set status 1
    }
    if { ${XAxisX} != ${good_XAxisX} } {
       puts "Faulty : Bad XAxisX"
-      set status 1
+      set status 2
    }
    if { ${XAxisY} != ${good_XAxisY} } {
       puts "Faulty : Bad XAxisY"
-      set status 1
+      set status 3
    }
    if { ${YAxisX} != ${good_YAxisX} } {
       puts "Faulty : Bad YAxisX"
-      set status 1
+      set status 4
    }
    if { ${YAxisY} != ${good_YAxisY} } {
       puts "Faulty : Bad YAxisY"
-       set status 1
+       set status 5
   }
    if { ${Radius} != ${good_Radius} } {
       puts "Faulty : Bad Radius"
-      set status 1
+      set status 6
    }
    } else {
    puts "Faulty : Bad solution"
-   set status 1
+   set status 7
 }
 
 if { ${status} != 0 } {
-    puts "Faulty : solution is wrong"
+    puts "Faulty : solution is wrong. Status = ${status}"
 } else {
     puts "OK : solution is correct"
 }
diff --git a/tests/bugs/modalg_6/bug25593 b/tests/bugs/modalg_6/bug25593
new file mode 100755 (executable)
index 0000000..40db85c
--- /dev/null
@@ -0,0 +1,60 @@
+puts "============"
+puts "OCC25593"
+puts "============"
+puts ""
+#########################################################################
+# Number of intersection points for 2d curves depends on the order of arguments in command "2dintersect"
+#########################################################################
+
+restore [locate_data_file bug25593_face1.brep] b
+pcurve b
+
+puts "Intersection 1"
+set info1 [2dintersect b_2 b_3 1.e-10]
+regexp {Intersection point 1 : +([-0-9.+eE]+) +([-0-9.+eE]+)} $info1 full p1x p1y
+regexp {parameter on the fist: +([-0-9.+eE]+) +parameter on the second: +([-0-9.+eE]+)} $info1 full par1f par1s
+
+puts "Intersection 2"
+set info2 [2dintersect b_3 b_2 1.e-10]
+regexp {Intersection point 1 : +([-0-9.+eE]+) +([-0-9.+eE]+)} $info2 full p2x p2y
+regexp {parameter on the fist: +([-0-9.+eE]+) +parameter on the second: +([-0-9.+eE]+)} $info2 full par2f par2s
+
+set NbIP1 1
+if { [regexp "Intersection point 1" $info1] != 1  } {
+   puts "Error : Intersection 1 should have one point"
+   set NbIP1 0
+}
+if { [regexp "Intersection point 2" $info1] == 1  } {
+   puts "Error : Intersection 1 should have one point"
+   set NbIP1 2
+}
+puts "NbIP1=$NbIP1"
+
+set NbIP2 1
+if { [regexp "Intersection point 1" $info2] != 1  } {
+   puts "Error : Intersection 2 should have one point"
+   set NbIP2 0
+}
+if { [regexp "Intersection point 2" $info2] == 1  } {
+   puts "Error : Intersection 2 should have one point"
+   set NbIP2 2
+}
+puts "NbIP2=$NbIP2"
+
+if { $NbIP1 != 1 || $NbIP2 != 1 } {
+   puts "ERROR: Wrong solutions number"
+} else {
+   puts "p1x=$p1x p1y=$p1y par1f=$par1f $par1s"
+   puts "p2x=$p2x p2y=$p2y par2f=$par2f $par2s"
+   set sqd [expr ($p1x-$p2x)*($p1x-$p2x)+($p1y-$p2y)*($p1y-$p2y)]
+   if { $sqd > 1.0e-14 } {
+      puts "ERROR: Intersection points are different"
+   } else {
+      puts "OK: Intersection points are equal"
+   }
+   if { (abs($par1f - $par2s) > 1.0e-9) || (abs($par1s - $par2f) > 1.0e-9) } {
+      puts "ERROR: Parameters on intersecting curves are not coincided"
+   } else {
+      puts "OK: Parameters on intersecting curves are coincided"
+   }
+}
index 25d2cd4..6b7df48 100644 (file)
@@ -5,8 +5,8 @@ set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 1 )  Summary  = 0  ( 1 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 0  ( 2 )  Summary  = 0  ( 2 )
 CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 1  ( 1 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 409  ( 409 )   Summary  = 5247  ( 5247 )
-STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 409  ( 409 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 2209  ( 2209 )
+NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 409  ( 409 )   Summary  = 5244  ( 5244 )
+STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 409  ( 409 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 2207  ( 2207 )
 TOLERANCE   : MaxTol   =   0.9579389807  (   0.9579389801 )  AvgTol   =   0.05177332439  (   0.05180172526 )
 LABELS      : N0Labels = 409  ( 409 )  N1Labels = 0  ( 0 )  N2Labels = 0  ( 0 )   TotalLabels = 409  ( 409 )   NameLabels = 409  ( 409 )   ColorLabels = 0  ( 0 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
index 8e5158b..8d4b65b 100644 (file)
@@ -7,9 +7,9 @@ set filename CTS21655.igs
 set ref_data {
 DATA        : Faulties = 0  ( 12 )  Warnings = 0  ( 1 )  Summary  = 0  ( 13 )
 TPSTAT      : Faulties = 0  ( 28 )  Warnings = 116  ( 7 )  Summary  = 116  ( 35 )
-CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 0  ( 0 )  Shells   = 0  ( 1 )   Solids   = 0 ( 1 )
-NBSHAPES    : Solid    = 0  ( 18 )  Shell    = 0  ( 18 )  Face     = 1190  ( 1190 )   Summary  = 15075  ( 7693 )
-STATSHAPE   : Solid    = 0  ( 18 )  Shell    = 0  ( 18 )  Face     = 1190  ( 1190 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 6284  ( 3134 )
+CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 1  ( 1 )  Shells   = 0  ( 1 )   Solids   = 0 ( 1 )
+NBSHAPES    : Solid    = 0  ( 19 )  Shell    = 0  ( 19 )  Face     = 1191  ( 1191 )   Summary  = 15092  ( 7703 )
+STATSHAPE   : Solid    = 0  ( 19 )  Shell    = 0  ( 19 )  Face     = 1191  ( 1191 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 6291  ( 3138 )
 TOLERANCE   : MaxTol   =   0.2496383637  (   0.2496258832 )  AvgTol   =   0.00219239232  (  0.004111699336 )
 LABELS      : N0Labels = 27  ( 27 )  N1Labels = 0  ( 0 )  N2Labels = 0  ( 0 )   TotalLabels = 27  ( 27 )   NameLabels = 27  ( 27 )   ColorLabels = 0  ( 0 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
index 713c5f8..2b070c2 100644 (file)
@@ -7,7 +7,7 @@ set filename FRA62468-1.igs
 set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 299  ( 5226 )  Summary  = 299  ( 5226 )
-CHECKSHAPE  : Wires    = 12  ( 18 )  Faces    = 16  ( 16 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
+CHECKSHAPE  : Wires    = 12  ( 20 )  Faces    = 16  ( 18 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 5163  ( 5163 )   Summary  = 68418  ( 68418 )
 STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 5163  ( 5163 )   FreeWire = 10  ( 10 )   FreeEdge  = 283 ( 283 )   SharedEdge = 29071  ( 29075 )
 TOLERANCE   : MaxTol   =   0.9874083984  (   0.9875071265 )  AvgTol   =   0.01114309412  (   0.01115568387 )
index 64ab98d..1427e70 100755 (executable)
@@ -1,7 +1,7 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
-puts "TODO CR23096 ALL: CHECKSHAPE : Faulty" 
-puts "TODO CR23096 ALL: NBSHAPES : Faulty" 
 puts "TODO CR23096 ALL: LABELS : Faulty" 
+puts "TODO CR23096 ALL: TOLERANCE : Faulty" 
+
 
 set LinuxDiff 3
 set filename PRO14319.igs
@@ -9,11 +9,11 @@ set filename PRO14319.igs
 set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 6  ( 64 )  Summary  = 6  ( 64 )
-CHECKSHAPE  : Wires    = 20  ( 6 )  Faces    = 1  ( 1 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 61  ( 61 )   Summary  = 7715  ( 7802 )
-STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 61  ( 61 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 3827  ( 3865 )
-TOLERANCE   : MaxTol   =   0.3140268251  (   0.3140268243 )  AvgTol   =  0.0009762560334  (  0.000488212708 )
-LABELS      : N0Labels = 61  ( 61 )  N1Labels = 0  ( 1050 )  N2Labels = 0  ( 0 )   TotalLabels = 61  ( 1111 )   NameLabels = 61  ( 61 )   ColorLabels = 61  ( 1111 )   LayerLabels = 0  ( 0 )
+CHECKSHAPE  : Wires    = 2  ( 8 )  Faces    = 1  ( 1 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
+NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 61  ( 61 )   Summary  = 7927  ( 7808 )
+STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 61  ( 61 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 3991  ( 3862 )
+TOLERANCE   : MaxTol   =   0.3749733839  (   0.3140268243 )  AvgTol   =  0.0048689347  (  0.0004856161076 )
+LABELS      : N0Labels = 61  ( 61 )  N1Labels = 0  ( 1047 )  N2Labels = 0  ( 0 )   TotalLabels = 61  ( 1108 )   NameLabels = 61  ( 61 )   ColorLabels = 61  ( 1108 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 3  ( 3 )
 COLORS      : Colors   = CYAN1 GREEN WHITE  ( CYAN1 GREEN WHITE )
index 8818cf2..89e885e 100644 (file)
@@ -1,5 +1,4 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
-puts "TODO CR23096 ALL: TPSTAT : Faulty" 
 puts "TODO CR23096 ALL: LABELS : Faulty" 
 
 
index d338560..f5a6ad9 100644 (file)
@@ -8,10 +8,10 @@ set ref_data {
 DATA        : Faulties = 0  ( 1 )  Warnings = 0  ( 0 )  Summary  = 0  ( 1 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 3  ( 183 )  Summary  = 3  ( 183 )
 CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 0  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 98  ( 98 )   Summary  = 2688  ( 2687 )
-STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 98  ( 98 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 1243  ( 1243 )
+NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 97  ( 97 )   Summary  = 2685  ( 2684 )
+STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 97  ( 97 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 1243  ( 1243 )
 TOLERANCE   : MaxTol   = 0.009955692634  ( 0.009955692464 )  AvgTol   =  0.0008509893784  (  0.0008531522552 )
-LABELS      : N0Labels = 97  ( 97 )  N1Labels = 2  ( 102 )  N2Labels = 0  ( 0 )   TotalLabels = 99  ( 199 )   NameLabels = 97  ( 97 )   ColorLabels = 98  ( 199 )   LayerLabels = 0  ( 0 )
+LABELS      : N0Labels = 97  ( 97 )  N1Labels = 0  ( 91 )  N2Labels = 0  ( 0 )   TotalLabels = 97  ( 188 )   NameLabels = 97  ( 97 )   ColorLabels = 97  ( 188 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 1  ( 1 )
 COLORS      : Colors   = BLACK  ( BLACK )
index 46fa3b6..998b97d 100755 (executable)
@@ -8,8 +8,8 @@ set ref_data {
 DATA        : Faulties = 0  ( 2 )  Warnings = 0  ( 0 )  Summary  = 0  ( 2 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 144  ( 455 )  Summary  = 144  ( 455 )
 CHECKSHAPE  : Wires    = 6  ( 8 )  Faces    = 6  ( 8 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 223  ( 223 )   Summary  = 4688  ( 4576 )
-STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 223  ( 223 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 2156  ( 2092 )
+NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 223  ( 223 )   Summary  = 4694  ( 4570 )
+STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 223  ( 223 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 2158  ( 2088 )
 TOLERANCE   : MaxTol   =    0.991254355  (    0.991254355 )  AvgTol   =    0.0113074551  (   0.01224298461 )
 LABELS      : N0Labels = 223  ( 223 )  N1Labels = 0  ( 256 )  N2Labels = 0  ( 0 )   TotalLabels = 223  ( 479 )   NameLabels = 223  ( 388 )   ColorLabels = 223  ( 479 )   LayerLabels = 223  ( 479 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
index dede62b..ce56889 100644 (file)
@@ -1,6 +1,5 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
 puts "TODO CR23096 ALL: TPSTAT : Faulty" 
-puts "TODO CR23096 ALL: CHECKSHAPE : Faulty" 
 
 set LinuxDiff 2
 set filename ims001.igs
@@ -9,8 +8,8 @@ set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 1 )  Summary  = 0  ( 1 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 11  ( 2 )  Summary  = 11  ( 2 )
 CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 1  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 190  ( 190 )   Summary  = 2164  ( 2158 )
-STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 190  ( 190 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 891  ( 887 )
+NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 190  ( 190 )   Summary  = 2158  ( 2158 )
+STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 190  ( 190 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 887  ( 887 )
 TOLERANCE   : MaxTol   =   0.6881447912  (   0.6881447942 )  AvgTol   =   0.02957229252  (   0.02969463719 )
 LABELS      : N0Labels = 190  ( 190 )  N1Labels = 0  ( 0 )  N2Labels = 0  ( 0 )   TotalLabels = 190  ( 190 )   NameLabels = 190  ( 190 )   ColorLabels = 0  ( 0 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
index ace596d..a08d6c7 100755 (executable)
@@ -12,7 +12,7 @@ TPSTAT      : Faulties = 2  ( 0 )  Warnings = 18  ( 320 )  Summary  = 20  ( 320
 CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 0  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 135  ( 135 )   Summary  = 2223  ( 2223 )
 STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 135  ( 135 )   FreeWire = 0  ( 0 )   FreeEdge  = 3 ( 3 )   SharedEdge = 974  ( 974 )
-TOLERANCE   : MaxTol   =   0.9794163281  (    12.54323842 )  AvgTol   =   0.02057774141  (    0.1726497742 )
+TOLERANCE   : MaxTol   =   0.9794163281  (    12.54323842 )  AvgTol   =   0.02080508938  (    0.1727731057 )
 LABELS      : N0Labels = 1  ( 1 )  N1Labels = 138  ( 1011 )  N2Labels = 0  ( 0 )   TotalLabels = 139  ( 1012 )   NameLabels = 139  ( 205 )   ColorLabels = 138  ( 1011 )   LayerLabels = 138  ( 1011 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 4  ( 4 )
index e5e4bdc..5b072ba 100755 (executable)
@@ -8,10 +8,10 @@ set ref_data {
 DATA        : Faulties = 0  ( 2 )  Warnings = 0  ( 0 )  Summary  = 0  ( 2 )
 TPSTAT      : Faulties = 3  ( 59 )  Warnings = 2203  ( 4655 )  Summary  = 2206  ( 4714 )
 CHECKSHAPE  : Wires    = 7  ( 17 )  Faces    = 7  ( 12 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 3349  ( 2837 )   Summary  = 45816  ( 39080 )
-STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 3349  ( 3349 )   FreeWire = 6  ( 6 )   FreeEdge  = 67 ( 67 )   SharedEdge = 19531  ( 16687 )
+NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 3349  ( 2837 )   Summary  = 45902  ( 39187 )
+STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 3349  ( 3349 )   FreeWire = 6  ( 6 )   FreeEdge  = 67 ( 67 )   SharedEdge = 19594  ( 16763 )
 TOLERANCE   : MaxTol   =    4.854604894  (    5.769095076 )  AvgTol   =   0.01628658326  (   0.01747356296 )
-LABELS      : N0Labels = 11  ( 11 )  N1Labels = 2891  ( 6256 )  N2Labels = 0  ( 0 )   TotalLabels = 2902  ( 6267 )   NameLabels = 2900  ( 5879 )   ColorLabels = 2891  ( 6256 )   LayerLabels = 2411  ( 5261 )
+LABELS      : N0Labels = 11  ( 11 )  N1Labels = 2891  ( 6318 )  N2Labels = 0  ( 0 )   TotalLabels = 2902  ( 6329 )   NameLabels = 2900  ( 5879 )   ColorLabels = 2891  ( 6318 )   LayerLabels = 2411  ( 5256 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 4  ( 4 )
 COLORS      : Colors   = BLACK BLUE1 RED YELLOW  ( BLACK BLUE1 RED YELLOW )
index 11e27c6..7ada3d4 100644 (file)
@@ -1,5 +1,4 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
-puts "TODO CR23096 ALL: CHECKSHAPE : Faulty" 
 puts "TODO CR23096 ALL: LABELS : Faulty" 
 #puts "TODO CR23096 ALL: Error : 1 differences with reference data found :" 
 
@@ -9,7 +8,7 @@ set filename FRA62468-2.igs
 set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 253  ( 4993 )  Summary  = 253  ( 4993 )
-CHECKSHAPE  : Wires    = 12  ( 17 )  Faces    = 12  ( 11 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
+CHECKSHAPE  : Wires    = 12  ( 19 )  Faces    = 12  ( 13 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 4729  ( 4729 )   Summary  = 63154  ( 63144 )
 STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 4729  ( 4729 )   FreeWire = 18  ( 18 )   FreeEdge  = 452 ( 452 )   SharedEdge = 26794  ( 26793 )
 TOLERANCE   : MaxTol   =   0.9804479161  (   0.9805459497 )  AvgTol   =   0.01153089031  (   0.01154870945 )
index 6106d54..edc0c66 100644 (file)
@@ -11,9 +11,9 @@ set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 2  ( 0 )  Warnings = 85  ( 295 )  Summary  = 87  ( 295 )
 CHECKSHAPE  : Wires    = 8  ( 13 )  Faces    = 8  ( 13 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 419  ( 419 )   Summary  = 5330  ( 5351 )
-STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 419  ( 419 )   FreeWire = 4  ( 4 )   FreeEdge  = 42 ( 42 )   SharedEdge = 2221  ( 2227 )
-TOLERANCE   : MaxTol   =    4.548096104  (    4.543567878 )  AvgTol   =   0.03300579563  (   0.03647254811 )
+NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 419  ( 419 )   Summary  = 5328  ( 5352 )
+STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 419  ( 419 )   FreeWire = 4  ( 4 )   FreeEdge  = 42 ( 42 )   SharedEdge = 2221  ( 2228 )
+TOLERANCE   : MaxTol   =    4.547932063  (    4.543567878 )  AvgTol   =   0.03466358537  (   0.03659099671 )
 LABELS      : N0Labels = 457  ( 457 )  N1Labels = 0  ( 0 )  N2Labels = 0  ( 0 )   TotalLabels = 457  ( 457 )   NameLabels = 457  ( 457 )   ColorLabels = 451  ( 455 )   LayerLabels = 453  ( 457 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 2  ( 2 )
index f487a19..bef85b6 100644 (file)
@@ -1,18 +1,19 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
 puts "TODO CR23096 ALL: LABELS : Faulty" 
 puts "TODO CR23096 ALL: COLORS : Faulty" 
-puts "TODO CR23096 ALL: NBSHAPES : Faulty" 
+puts "TODO CR23096 ALL: CHECKSHAPE : Faulty" 
+
 
 set filename ims016.igs
 
 set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 120  ( 402 )  Summary  = 120  ( 402 )
-CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 0  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 138  ( 138 )   Summary  = 10561  ( 10563 )
-STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 138  ( 138 )   FreeWire = 6  ( 6 )   FreeEdge  = 353 ( 353 )   SharedEdge = 4947  ( 4949 )
-TOLERANCE   : MaxTol   =  0.07559058774  (  0.07559058772 )  AvgTol   =  0.0006486647078  (  0.0006485486933 )
-LABELS      : N0Labels = 503  ( 503 )  N1Labels = 0  ( 196 )  N2Labels = 0  ( 0 )   TotalLabels = 503  ( 699 )   NameLabels = 503  ( 503 )   ColorLabels = 470  ( 699 )   LayerLabels = 313  ( 344 )
+CHECKSHAPE  : Wires    = 4  ( 0 )  Faces    = 2  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
+NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 138  ( 138 )   Summary  = 10599  ( 10569 )
+STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 138  ( 138 )   FreeWire = 6  ( 6 )   FreeEdge  = 353 ( 353 )   SharedEdge = 4953  ( 4953 )
+TOLERANCE   : MaxTol   =  0.2092687841  (  0.2092687804 )  AvgTol   =  0.0009010196362  (  0.0009882759183 )
+LABELS      : N0Labels = 503  ( 503 )  N1Labels = 0  ( 200 )  N2Labels = 0  ( 0 )   TotalLabels = 503  ( 703 )   NameLabels = 503  ( 503 )   ColorLabels = 470  ( 703 )   LayerLabels = 313  ( 344 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 6  ( 7 )
 COLORS      : Colors   = CYAN1 GREEN MAGENTA1 RED WHITE YELLOW  ( BLACK CYAN1 GREEN MAGENTA1 RED WHITE YELLOW )
index 4597216..cb0b7c1 100755 (executable)
@@ -5,7 +5,7 @@ puts "TODO CR23096 ALL: STATSHAPE : Faulty"
 puts "TODO CR23096 ALL: LABELS : Faulty" 
 puts "TODO CR23096 ALL: COLORS : Faulty" 
 puts "TODO CR23096 ALL: LAYERS : Faulty" 
-puts "TODO CR25013 ALL: Error : 3 differences with reference data found" 
+puts "TODO CR25013 ALL: Error : 4 differences with reference data found" 
 
 
 set filename BUC40132.igs
index 4544744..42549ed 100644 (file)
@@ -1,5 +1,7 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
 puts "TODO CR23096 ALL: LABELS : Faulty" 
+puts "TODO CR23096 ALL: CHECKSHAPE : Faulty" 
+
 
 
 set filename PRO20364.stp
index bb3455d..1b54052 100644 (file)
@@ -7,7 +7,7 @@ TPSTAT      : Faulties = 0  ( 0 )  Warnings = 4  ( 8 )  Summary  = 4  ( 8 )
 CHECKSHAPE  : Wires    = 2  ( 2 )  Faces    = 2  ( 2 )  Shells   = 1  ( 1 )   Solids   = 1 ( 1 )
 NBSHAPES    : Solid    = 4  ( 4 )  Shell    = 4  ( 4 )  Face     = 40  ( 40 )   Summary  = 263  ( 263 )
 STATSHAPE   : Solid    = 4  ( 4 )  Shell    = 4  ( 4 )  Face     = 40  ( 40 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 98  ( 98 )
-TOLERANCE   : MaxTol   =   0.7571968817  (    0.757178949 )  AvgTol   =   0.04096331122  (   0.04096426509 )
+TOLERANCE   : MaxTol   =   0.7226608412  (   0.7227160437 )  AvgTol   =   0.04200651748  (   0.04200775508 )
 LABELS      : N0Labels = 1  ( 1 )  N1Labels = 4  ( 4 )  N2Labels = 0  ( 0 )   TotalLabels = 5  ( 5 )   NameLabels = 1  ( 1 )   ColorLabels = 4  ( 4 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 2  ( 2 )
index ea621fc..d4fd0da 100644 (file)
@@ -7,7 +7,7 @@ TPSTAT      : Faulties = 0  ( 0 )  Warnings = 25  ( 32 )  Summary  = 25  ( 32 )
 CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 0  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 108  ( 108 )   Summary  = 674  ( 669 )
 STATSHAPE   : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 108  ( 108 )   FreeWire = 0  ( 0 )   FreeEdge  = 5 ( 5 )   SharedEdge = 275  ( 275 )
-TOLERANCE   : MaxTol   =   0.1162538812  (   0.1162538812 )  AvgTol   =  0.007800576583  (   0.01124673982 )
+TOLERANCE   : MaxTol   =   0.1162538812  (   0.1162538812 )  AvgTol   =  0.007933501527  (    0.0113796647 )
 LABELS      : N0Labels = 3  ( 3 )  N1Labels = 7  ( 7 )  N2Labels = 0  ( 0 )   TotalLabels = 10  ( 10 )   NameLabels = 5  ( 5 )   ColorLabels = 6  ( 6 )   LayerLabels = 6  ( 6 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 2  ( 2 )
index 29df69d..6811c4b 100644 (file)
@@ -10,7 +10,7 @@ set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 39  ( 6 )  Summary  = 39  ( 6 )
 CHECKSHAPE  : Wires    = 64  ( 48 )  Faces    = 64  ( 48 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 15  ( 16 )  Shell    = 17  ( 17 )  Face     = 367  ( 366 )   Summary  = 2506  ( 2495 )
+NBSHAPES    : Solid    = 15  ( 16 )  Shell    = 17  ( 17 )  Face     = 367  ( 366 )   Summary  = 2505  ( 2495 )
 STATSHAPE   : Solid    = 71  ( 79 )  Shell    = 87  ( 87 )  Face     = 2740  ( 2732 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 1064  ( 1057 )
 TOLERANCE   : MaxTol   =    4.389003466  (    5.153790881 )  AvgTol   =   0.05707355423  (   0.06633632879 )
 LABELS      : N0Labels = 10  ( 10 )  N1Labels = 32  ( 32 )  N2Labels = 0  ( 0 )   TotalLabels = 42  ( 42 )   NameLabels = 22  ( 22 )   ColorLabels = 22  ( 22 )   LayerLabels = 0  ( 0 )
index a69b008..4efcc36 100644 (file)
@@ -9,7 +9,7 @@ TPSTAT      : Faulties = 0  ( 0 )  Warnings = 5  ( 11 )  Summary  = 5  ( 11 )
 CHECKSHAPE  : Wires    = 4  ( 4 )  Faces    = 4  ( 4 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 292  ( 292 )   Summary  = 1707  ( 1707 )
 STATSHAPE   : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 292  ( 292 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 718  ( 718 )
-TOLERANCE   : MaxTol   =   0.1164202689  (   0.1164219029 )  AvgTol   =   0.00286119941  (   0.01095378922 )
+TOLERANCE   : MaxTol   =   0.1252883206  (   0.1252874378 )  AvgTol   =  0.003079961606  (   0.01117254297 )
 LABELS      : N0Labels = 1  ( 1 )  N1Labels = 19  ( 19 )  N2Labels = 0  ( 0 )   TotalLabels = 20  ( 20 )   NameLabels = 1  ( 1 )   ColorLabels = 20  ( 20 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 1  ( 1 )  Volume   = 1  ( 1 )  Area     = 1  ( 1 )
 NCOLORS     : NColors  = 2  ( 2 )
index c7f0f70..bb9b8e7 100644 (file)
@@ -9,7 +9,7 @@ TPSTAT      : Faulties = 0  ( 2 )  Warnings = 2  ( 28 )  Summary  = 2  ( 30 )
 CHECKSHAPE  : Wires    = 2  ( 2 )  Faces    = 2  ( 2 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 416  ( 415 )   Summary  = 2779  ( 2761 )
 STATSHAPE   : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 416  ( 415 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 1195  ( 1179 )
-TOLERANCE   : MaxTol   =    9036.639612  (   0.9492387908 )  AvgTol   =     21.72114525  (   0.03925492632 )
+TOLERANCE   : MaxTol   =    9511.663612  (   0.9492387908 )  AvgTol   =     22.86226785  (    0.0392704055 )
 LABELS      : N0Labels = 1  ( 1 )  N1Labels = 28  ( 28 )  N2Labels = 0  ( 0 )   TotalLabels = 29  ( 29 )   NameLabels = 1  ( 1 )   ColorLabels = 29  ( 29 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 1  ( 1 )  Volume   = 1  ( 1 )  Area     = 1  ( 1 )
 NCOLORS     : NColors  = 2  ( 2 )
index 7ae02a1..8a52176 100644 (file)
@@ -8,7 +8,7 @@ TPSTAT      : Faulties = 0  ( 0 )  Warnings = 29  ( 30 )  Summary  = 29  ( 30 )
 CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 0  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 108  ( 108 )   Summary  = 652  ( 652 )
 STATSHAPE   : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 108  ( 108 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 270  ( 270 )
-TOLERANCE   : MaxTol   =    0.135089911  (    0.135089907 )  AvgTol   =   0.01291133866  (   0.01518557927 )
+TOLERANCE   : MaxTol   =   0.1381688089  (   0.1381688071 )  AvgTol   =   0.01295053427  (    0.0152247749 )
 LABELS      : N0Labels = 1  ( 1 )  N1Labels = 0  ( 0 )  N2Labels = 0  ( 0 )   TotalLabels = 1  ( 1 )   NameLabels = 1  ( 1 )   ColorLabels = 1  ( 1 )   LayerLabels = 1  ( 1 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 1  ( 1 )
index a36b39e..f6a0f89 100644 (file)
@@ -9,8 +9,8 @@ set ref_data {
 DATA        : Faulties = 0  ( 9 )  Warnings = 0  ( 0 )  Summary  = 0  ( 9 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 77  ( 39 )  Summary  = 77  ( 39 )
 CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 1  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 10  ( 10 )  Shell    = 12  ( 12 )  Face     = 269  ( 269 )   Summary  = 1638  ( 1636 )
-STATSHAPE   : Solid    = 10  ( 10 )  Shell    = 12  ( 12 )  Face     = 269  ( 269 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 636  ( 636 )
+NBSHAPES    : Solid    = 11  ( 11 )  Shell    = 13  ( 13 )  Face     = 270  ( 270 )   Summary  = 1653  ( 1646 )
+STATSHAPE   : Solid    = 11  ( 11 )  Shell    = 13  ( 13 )  Face     = 270  ( 270 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 642  ( 640 )
 TOLERANCE   : MaxTol   =  0.01008857123  (  0.01008857108 )  AvgTol   =  0.0003104589496  (  0.0003616303196 )
 LABELS      : N0Labels = 3  ( 3 )  N1Labels = 2  ( 3 )  N2Labels = 0  ( 1 )   TotalLabels = 5  ( 7 )   NameLabels = 5  ( 5 )   ColorLabels = 0  ( 0 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
index 9130d0d..faa789f 100755 (executable)
@@ -1,5 +1,5 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
-
+puts "TODO CR25593 ALL: CHECKSHAPE : Faulty" 
 
 set filename trj7_pm5-hc-214.stp
 
index 6eb5ff5..02c2ed5 100644 (file)
@@ -10,7 +10,7 @@ TPSTAT      : Faulties = 0  ( 6 )  Warnings = 16  ( 35 )  Summary  = 16  ( 41 )
 CHECKSHAPE  : Wires    = 1  ( 1 )  Faces    = 1  ( 1 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 4  ( 4 )  Shell    = 27  ( 27 )  Face     = 183  ( 183 )   Summary  = 1491  ( 1486 )
 STATSHAPE   : Solid    = 4  ( 4 )  Shell    = 27  ( 27 )  Face     = 183  ( 183 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 623  ( 622 )
-TOLERANCE   : MaxTol   =   0.2224706003  (   0.2224706003 )  AvgTol   =  0.003966127037  (  0.003995856355 )
+TOLERANCE   : MaxTol   =   0.2224706003  (   0.2224706003 )  AvgTol   =  0.004510221387  (  0.004579916902 )
 LABELS      : N0Labels = 28  ( 28 )  N1Labels = 32  ( 23 )  N2Labels = 0  ( 0 )   TotalLabels = 60  ( 51 )   NameLabels = 51  ( 51 )   ColorLabels = 27  ( 22 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 2  ( 2 )
index 9daa17a..03bcbd1 100644 (file)
@@ -10,7 +10,7 @@ TPSTAT      : Faulties = 0  ( 0 )  Warnings = 23  ( 499 )  Summary  = 23  ( 499
 CHECKSHAPE  : Wires    = 1  ( 0 )  Faces    = 2  ( 1 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 98  ( 98 )  Shell    = 98  ( 98 )  Face     = 3829  ( 3829 )   Summary  = 22284  ( 22284 )
 STATSHAPE   : Solid    = 116  ( 116 )  Shell    = 116  ( 116 )  Face     = 4144  ( 4144 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 8834  ( 8834 )
-TOLERANCE   : MaxTol   = 0.0002435409967  (  0.06761346589 )  AvgTol   =  7.737752126e-007  (  3.401316374e-005 )
+TOLERANCE   : MaxTol   =  0.00815099718  (  0.06761346589 )  AvgTol   =  3.973824812e-006  (  3.72116487e-005 )
 LABELS      : N0Labels = 14  ( 14 )  N1Labels = 25  ( 25 )  N2Labels = 0  ( 0 )   TotalLabels = 39  ( 39 )   NameLabels = 39  ( 39 )   ColorLabels = 0  ( 0 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 0  ( 0 )
index b23c691..5a4d676 100644 (file)
@@ -1,5 +1,6 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
-puts "TODO CR23096 Debian60-64: Error : 1 differences with reference data found :" 
+puts "TODO CR25593 ALL: Error : 3 differences with reference data found :" 
+puts "TODO CR25593 ALL: TPSTAT : Faulty" 
 
 set LinuxDiff 1
 set LinuxFaulties {CHECKSHAPE}
@@ -9,7 +10,7 @@ set ref_data {
 DATA        : Faulties = 0  ( 395 )  Warnings = 0  ( 0 )  Summary  = 0  ( 395 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 0  ( 2 )  Summary  = 0  ( 2 )
 CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 0  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 149  ( 149 )  Face     = 149  ( 149 )   Summary  = 2146  ( 2144 )
+NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 149  ( 149 )  Face     = 149  ( 149 )   Summary  = 2144  ( 2144 )
 STATSHAPE   : Solid    = 0  ( 0 )  Shell    = 149  ( 149 )  Face     = 149  ( 149 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 846  ( 846 )
 TOLERANCE   : MaxTol   = 0.0009108451735  ( 0.0009108451735 )  AvgTol   =  3.593153987e-005  (  3.593209779e-005 )
 LABELS      : N0Labels = 1  ( 1 )  N1Labels = 0  ( 0 )  N2Labels = 0  ( 0 )   TotalLabels = 1  ( 1 )   NameLabels = 1  ( 1 )   ColorLabels = 0  ( 0 )   LayerLabels = 0  ( 0 )
index 0ff3be4..c283bb7 100755 (executable)
@@ -1,5 +1,5 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
-puts "TODO CR23096 Debian60-64: CHECKSHAPE : Faulty" 
+puts "TODO CR25593 ALL: CHECKSHAPE : Faulty" 
 
 # No checkape error on WNT in 64-bit only (after 22598 and issue 25797 was registered for that)
 
index 4b1a9e0..469cca1 100755 (executable)
@@ -1,5 +1,5 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
-puts "TODO CR23096 ALL: STATSHAPE : Faulty" 
+puts "TODO CR23096 ALL: NBSHAPES : Faulty" 
 
 set LinuxDiff 3
 set filename 53921163S0.stp
@@ -7,9 +7,9 @@ set filename 53921163S0.stp
 set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 17  ( 27 )  Summary  = 17  ( 27 )
-CHECKSHAPE  : Wires    = 8  ( 10 )  Faces    = 8  ( 10 )  Shells   = 0  ( 0 )   Solids   = 1 ( 1 )
-NBSHAPES    : Solid    = 1  ( 1 )  Shell    = 3  ( 3 )  Face     = 558  ( 556 )   Summary  = 3668  ( 3661 )
-STATSHAPE   : Solid    = 1  ( 1 )  Shell    = 3  ( 3 )  Face     = 558  ( 556 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 1527  ( 1526 )
+CHECKSHAPE  : Wires    = 10  ( 10 )  Faces    = 10  ( 10 )  Shells   = 0  ( 0 )   Solids   = 1 ( 1 )
+NBSHAPES    : Solid    = 1  ( 1 )  Shell    = 3  ( 3 )  Face     = 556  ( 556 )   Summary  = 3658  ( 3661 )
+STATSHAPE   : Solid    = 1  ( 1 )  Shell    = 3  ( 3 )  Face     = 556  ( 556 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 1523  ( 1526 )
 TOLERANCE   : MaxTol   =    60.79282309  (    60.87483475 )  AvgTol   =     1.272227708  (     1.266017009 )
 LABELS      : N0Labels = 1  ( 1 )  N1Labels = 0  ( 0 )  N2Labels = 0  ( 0 )   TotalLabels = 1  ( 1 )   NameLabels = 1  ( 1 )   ColorLabels = 0  ( 0 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
index b846423..bf2a803 100644 (file)
@@ -7,7 +7,7 @@ set filename trj3_pm1-id-214.stp
 set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 1168  ( 895 )  Summary  = 1168  ( 895 )
-CHECKSHAPE  : Wires    = 0  ( 0 )  Faces    = 0  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
+CHECKSHAPE  : Wires    = 1  ( 1 )  Faces    = 1  ( 1 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 3826  ( 3826 )   Summary  = 23862  ( 23856 )
 STATSHAPE   : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 3826  ( 3826 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 9969  ( 9964 )
 TOLERANCE   : MaxTol   = 0.009023403931  ( 0.009980833943 )  AvgTol   =  0.0003371911058  (  0.000825361244 )
index 1ec267a..9a5a943 100644 (file)
@@ -7,7 +7,7 @@ set filename trj12_b3-ac-214.stp
 set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 27  ( 108 )  Summary  = 27  ( 108 )
-CHECKSHAPE  : Wires    = 3  ( 4 )  Faces    = 3  ( 4 )  Shells   = 1  ( 1 )   Solids   = 1 ( 1 )
+CHECKSHAPE  : Wires    = 4  ( 6 )  Faces    = 4  ( 6 )  Shells   = 1  ( 1 )   Solids   = 1 ( 1 )
 NBSHAPES    : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 1173  ( 1173 )   Summary  = 7998  ( 8005 )
 STATSHAPE   : Solid    = 1  ( 1 )  Shell    = 1  ( 1 )  Face     = 1173  ( 1173 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 3392  ( 3399 )
 TOLERANCE   : MaxTol   =    7.063782203  (    7.063782203 )  AvgTol   =  0.002932793725  (  0.002941805253 )
index f7edc0f..7e9bf33 100755 (executable)
@@ -1,6 +1,4 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
-puts "TODO CR23096 ALL: TOLERANCE : Faulty" 
-
 
 set filename Z8INV5.stp
 
@@ -8,8 +6,8 @@ set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 114  ( 619 )  Summary  = 114  ( 619 )
 CHECKSHAPE  : Wires    = 16  ( 17 )  Faces    = 18  ( 19 )  Shells   = 1  ( 1 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 22  ( 22 )  Shell    = 24  ( 24 )  Face     = 1520  ( 1520 )   Summary  = 11223  ( 11206 )
-STATSHAPE   : Solid    = 22  ( 22 )  Shell    = 24  ( 24 )  Face     = 1520  ( 1520 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 4792  ( 4781 )
+NBSHAPES    : Solid    = 22  ( 22 )  Shell    = 24  ( 24 )  Face     = 1520  ( 1520 )   Summary  = 11216  ( 11206 )
+STATSHAPE   : Solid    = 22  ( 22 )  Shell    = 24  ( 24 )  Face     = 1520  ( 1520 )   FreeWire = 0  ( 0 )   FreeEdge  = 0 ( 0 )   SharedEdge = 4787  ( 4781 )
 TOLERANCE   : MaxTol   =    12.54913924  (    7.159520237 )  AvgTol   =   0.04320092698  (    0.0322263844 )
 LABELS      : N0Labels = 25  ( 25 )  N1Labels = 23  ( 23 )  N2Labels = 0  ( 0 )   TotalLabels = 48  ( 48 )   NameLabels = 48  ( 48 )   ColorLabels = 0  ( 0 )   LayerLabels = 0  ( 0 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
index 3a4b784..851c387 100644 (file)
@@ -1 +1,3 @@
+puts "TODO OCC25593 ALL: Faulty shapes in variables faulty_1 to faulty_4 "
+
 restore [locate_data_file wrong_checkshape_2.brep] a