]> OCCT Git - occt-copy.git/commitdiff
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 f7e0cc9211d9eede061d761f49965c588cb2c26f..8bdfc60a26adf37b25570d0c40c5d5ac610e67ad 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 dd5b3bc2d13443bb8db8d2d54568bccf3f98e230..fd5167de6d1901f4d4f1af1b646bb925d7384809 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 dc21320e2b078e9e3ceddb3e671ec0eb8d425d4c..e657e384089c03573ee687bcf8550e23c932ad9b 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 ba8ac30dabcabadd3dd56bde00903eed8e42db1e..e63dc3212d64f82200df913ed1b6b59e902ef9b1 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 4f820fa130c629c9a97a463085ddb75a7f65b05f..6b9f1a58c97a6eb30b8bf14a0ecbfab902f61e20 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 403516bdca585b4404ecf475cf3df2de14246557..8f20b5a0024fb8083a91d48f9567ed833d3b5d48 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 41152a865865c7c9cb2217d06e6e7d2314da653c..309bfdad0e4c10f9e66386ffa6c37a1fa2c4279a 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 14a8ea699e74cc60e16d45e2930eadcce3f74317..ec3aeb7b904172de04464aaabcd6fc990e4dfc03 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 25d2cd44cfd28413936f7246077a8b6a59488763..6b7df4860df15d20e01f41e6b27a3ce27e95bb2f 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 8e5158b6a72a85509242d736586582a2830e1273..8d4b65b6e71777a266811f4e177ec43cf47d4d4e 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 713c5f89ecd927b44e1f6584c0622d01d0771dea..2b070c2324600d64eda4327bd3045c5a323b0295 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 64ab98d9cb4f4ce1cd1786d2d642700e513d3304..1427e7088239715d1d88bdc4369e13314c1c28ab 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 8818cf271563b9a4f97dc19b7be4beaec49a9e4a..89e885e4b0133b9135a42a34e2c805866581c67f 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 d338560a11efbea532fed9a2d77e71a8422f5e7d..f5a6ad9109731534fcf14d490a7eccc0498d9950 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 46fa3b616703cbd4f13cd62471fd1d7c2cbe9aca..998b97d2e59a7606c8adcf5cddd4a0d587376c3d 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 dede62be96686d7f73bc072de5f9bdcffe4522a7..ce568899c4fffe6166a6fc0504530de89e1290b3 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 ace596dea5decef5c1b3d69d3efeb5821ba30025..a08d6c7f4c937164dd4a6560e57ee21e14982fea 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 e5e4bdc7d0dfb434044c768904c1c2239e6093f8..5b072baed5ecc0a6455c6ecab85072fda06d1147 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 11e27c608a07498254a59cda8c593902dfbbc80c..7ada3d423fd23f9fad616007ab9385a11781e715 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 6106d5414feaa394e624790ac607562b1a4ad798..edc0c660e2566121634f0a367233d7f4a37bc92f 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 f487a196f772661f406991556378e92e86d96b62..bef85b6642c6fac7ab0f1a94e25a5fc7e1276844 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 459721600cdb5d4a9d9ee09df88c3dc91ba1baed..cb0b7c19e7caed1e58240f20f0282336dc9600bf 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 45447445815f93c02d9e0ef3c32c6b8970bdc77f..42549ed25855d76deb05e88ece05f90c52a9a467 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 bb3455d1433503cef1bb5b098174fdec8fd2e098..1b540526c076e7a9944a3c37c7bd44956c9bad66 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 ea621fc536861e96b2d9e74e1c18c2a2f328d842..d4fd0da32467248edfa877528289c7b554ea6fc9 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 29df69d87194caaf9f7a9ec3f5ae255046a0163b..6811c4ba78e181f9c953f65b87c448d3951af01f 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 a69b00862a2da179fb64613379725053055c11d3..4efcc36fdc3ae9b4c578508716be2f8aba5679a5 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 c7f0f700579f6497c08ad7860f36113181bd7828..bb9b8e7e8881b23b5046656df954f0d7a0e7db91 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 7ae02a163db4cd98d5d624f2a25597fa6bf9511b..8a5217631b788d2bc89a641cf7c30bdccc517d4b 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 a36b39e710414d5b95827826fa2d7074d7db042e..f6a0f893b0e49e8f1f3569efb052d945d2fad54f 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 9130d0dc71cf455212831109434a3f66a7422e22..faa789f0a13d66f9844611b4b2d43baa8d76a173 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 6eb5ff55a7de9b90fe8a32144663ecbcd9e6d61d..02c2ed55fef1ddb73518d6ebf6cc39648597928a 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 9daa17a8b6e8adf6a7b5884395c46a887d25e44d..03bcbd1eb1ba6e496f178b7e05e6999c8ad51705 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 b23c6912ac46c58931b87c4f1e09be8c6e81dd33..5a4d676a83e1a32f7294557e2082d6a14d9de3f6 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 0ff3be404b61f1dc93e3c01f3c72299f1f731f80..c283bb7cb3cd7e0e5e0d70c447fade7284219886 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 4b1a9e0acc77da25a979f3e1e4ae6b10b415658a..469cca1933b7caf55c4fd9acb1d8c5669982bcef 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 b846423002c72ced5e2b6bf3515410e296c16ff0..bf2a803c348c7017ab50dd316f8d05ac5da99ad1 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 1ec267a108d32fa092a94eaa6f5af7dad15ab45e..9a5a9434daba0df532e35705a412b58a7f1749ba 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 f7edc0f686ed635a75fc42819914a1300e2ef169..7e9bf33475ed78e03d1e7efed820baa5d6f0c584 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 3a4b78461955e0259be75942a5753b9a03cc18f0..851c38719f6e8eba85cd87151c3247a26ea41e0f 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