From 1d19db8dadfcf1f9dc80efbcdfb720d217c60bdf Mon Sep 17 00:00:00 2001 From: nbv Date: Thu, 16 Apr 2015 10:32:53 +0300 Subject: [PATCH] 0025593: Number of intersection points for 2d curves depends on the order of arguments in command "2dintersect" 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 --- src/Geom2dGcc/Geom2dGcc_Circ2d2TanRad.cxx | 23 +- src/Geom2dGcc/Geom2dGcc_Circ2d2TanRadGeo.cxx | 403 ++++++++---------- .../GeomliteTest_API2dCommands.cxx | 5 +- src/IntCurve/IntCurve_IntPolyPolyGen.gxx | 178 ++++---- src/IntCurve/IntCurve_Polygon2dGen.cdl | 14 - src/IntCurve/IntCurve_Polygon2dGen.gxx | 162 ++----- tests/bugs/modalg_4/bug714 | 2 + tests/bugs/modalg_5/bug24303 | 25 +- tests/bugs/modalg_6/bug25593 | 60 +++ tests/de/iges_1/G6 | 4 +- tests/de/iges_1/J9 | 6 +- tests/de/iges_1/K3 | 2 +- tests/de/iges_1/L8 | 14 +- tests/de/iges_1/M7 | 1 - tests/de/iges_1/N9 | 6 +- tests/de/iges_1/P5 | 4 +- tests/de/iges_1/P8 | 5 +- tests/de/iges_1/R1 | 2 +- tests/de/iges_1/R8 | 6 +- tests/de/iges_2/B8 | 3 +- tests/de/iges_2/C2 | 6 +- tests/de/iges_2/I7 | 13 +- tests/de/iges_3/A4 | 2 +- tests/de/step_2/B6 | 2 + tests/de/step_2/M4 | 2 +- tests/de/step_2/M6 | 2 +- tests/de/step_2/S1 | 2 +- tests/de/step_2/S9 | 2 +- tests/de/step_2/T9 | 2 +- tests/de/step_2/W7 | 2 +- tests/de/step_2/Y5 | 4 +- tests/de/step_3/A9 | 2 +- tests/de/step_3/C4 | 2 +- tests/de/step_3/C6 | 2 +- tests/de/step_3/D3 | 5 +- tests/de/step_3/D8 | 2 +- tests/de/step_3/D9 | 8 +- tests/de/step_3/F4 | 2 +- tests/de/step_4/E6 | 2 +- tests/de/step_5/A1 | 6 +- tests/heal/split_angle/F2 | 2 + 41 files changed, 451 insertions(+), 546 deletions(-) create mode 100755 tests/bugs/modalg_6/bug25593 diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRad.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRad.cxx index f7e0cc9211..8bdfc60a26 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRad.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRad.cxx @@ -30,6 +30,7 @@ #include #include +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 { diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRadGeo.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRadGeo.cxx index dd5b3bc2d1..fd5167de6d 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRadGeo.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRadGeo.cxx @@ -32,6 +32,8 @@ #include #include +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,198 +530,171 @@ 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 - Standard_Real aStepU = aInitStepU, aStepV = aInitStepV; + \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. - const Standard_Real aTol = Precision::PConfusion() * Precision::PConfusion(); - const Standard_Integer aNbIterMax = 100; +Precision of any 2*2-system (two equation and two variables) - gp_Pnt2d aP1, aP2; - gp_Vec2d aD1, aD2; + \left\{\begin{matrix} + S_{1}(u,v)=0\\ + S_{2}(u,v)=0 + \end{matrix}\right. - Geom2dGcc_CurveToolGeo::D1(theC1, theU0, aP1, aD1); - Geom2dGcc_CurveToolGeo::D1(theC2, theV0, aP2, aD2); +by Newton method can be made as follows: - gp_Vec2d vP12(aP1.XY() - aP2.XY()); + 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 aU = theU0, aV = theV0; theUfinal = theU0; theVfinal = theV0; - Standard_Real aSQDistPrev = aP1.SquareDistance(aP2); + const Standard_Integer aNbIterMax = 100; - Standard_Integer aNbIter = 1; + Standard_Real aU = theU0, aV = theV0; + gp_Pnt2d aPu, aPv; + gp_Vec2d aD1u, aD1v, aD2u, aD2v; + + Standard_Integer aNbIter = 0; + + Standard_Real aStepU = 0.0, aStepV = 0.0; + + Standard_Real aSQDistPrev = RealFirst(); + + Geom2dGcc_CurveToolGeo::D2(theC1, aU, aPu, aD1u, aD2u); + Geom2dGcc_CurveToolGeo::D2(theC2, aV, aPv, aD1v, aD2v); + + 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) + aNbIter++; + + gp_Vec2d aVuv(aPv, aPu); + + Standard_Real aSQDist = aVuv.SquareMagnitude(); + if(IsEqual(aSQDist, 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; - - if(Abs(aV - theVmin) > 1000.0) - //method diverges - return; - - 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()); - - if(aSQDist < aSQDistPrev) + if((aNbIter == 1) || (aSQDist < aSQDistPrev)) { aSQDistPrev = aSQDist; - aStepU = aInitStepU; - aStepV = aInitStepV; theUfinal = aU; theVfinal = aV; } + + + Standard_Real aG1 = aD1u.Magnitude(); + Standard_Real aG2 = aD1v.Magnitude(); + + if(IsEqual(aG1, 0.0) || IsEqual(aG2, 0.0)) + {//Here we do not processing singular cases. + break; + } + + Standard_Real aF1 = aVuv.Dot(aD1u); + Standard_Real aF2 = aVuv.Dot(aD1v); + + Standard_Real aFIu = aVuv.Dot(aD2u); + Standard_Real aFIv = aVuv.Dot(aD2v); + Standard_Real aPSIu = aD1u.Dot(aD2u); + Standard_Real aPSIv = aD1v.Dot(aD2v); + + Standard_Real aTheta = aD1u*aD1v; + + Standard_Real aS1 = aF1/aG1; + Standard_Real aS2 = aF2/aG2; + + 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)); + + Standard_Real aDet = aDS1u*aDS2v-aDS1v*aDS2u; + + 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 { - aStepU /= 2.0; - aStepV /= 2.0; + 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; + } + } + + aU += aStepU; + aV += aStepV; } + + Geom2dGcc_CurveToolGeo::D2(theC1, aU, aPu, aD1u, aD2u); + Geom2dGcc_CurveToolGeo::D2(theC2, aV, aPv, aD1v, aD2v); } - 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(); - - if(aV1 < theVmin) - aV1 = theVmin; - - if(aV1 > theVmax) - aV1 = theVmax; - - if(aV2 < theVmin) - aV2 = theVmin; - - if(aV2 > theVmax) - aV2 = theVmax; - - aP1 = Geom2dGcc_CurveToolGeo::Value(theC1,theUfinal); - aP2 = Geom2dGcc_CurveToolGeo::Value(theC2,aV1); - - Standard_Real aSQ1 = aP1.SquareDistance(aP2); - - aP2 = Geom2dGcc_CurveToolGeo::Value(theC2,aV2); - Standard_Real aSQ2 = aP1.SquareDistance(aP2); - - if(aSQ1 < aSQ2) - theVfinal = aV1; - else - theVfinal = aV2; - - return; - } - - if(theVfinal < theVmin) - { - aU = theUfinal; - aV = theVfinal; - - theVfinal = theVmin; - isInBound = Standard_False; - } - - if(theVfinal > theVmax) - { - aU = theUfinal; - aV = theVfinal; - - theVfinal = theVmax; - isInBound = Standard_False; - } - - 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; + while(aNbIter <= aNbIterMax); } + + // 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++; diff --git a/src/GeomliteTest/GeomliteTest_API2dCommands.cxx b/src/GeomliteTest/GeomliteTest_API2dCommands.cxx index dc21320e2b..e657e38408 100644 --- a/src/GeomliteTest/GeomliteTest_API2dCommands.cxx +++ b/src/GeomliteTest/GeomliteTest_API2dCommands.cxx @@ -41,6 +41,7 @@ #include #include #include +#include #include #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 "<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 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 + 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; diff --git a/src/IntCurve/IntCurve_Polygon2dGen.cdl b/src/IntCurve/IntCurve_Polygon2dGen.cdl index 4f820fa130..6b9f1a58c9 100644 --- a/src/IntCurve/IntCurve_Polygon2dGen.cdl +++ b/src/IntCurve/IntCurve_Polygon2dGen.cdl @@ -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) diff --git a/src/IntCurve/IntCurve_Polygon2dGen.gxx b/src/IntCurve/IntCurve_Polygon2dGen.gxx index 403516bdca..8f20b5a002 100644 --- a/src/IntCurve/IntCurve_Polygon2dGen.gxx +++ b/src/IntCurve/IntCurve_Polygon2dGen.gxx @@ -26,19 +26,18 @@ #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(i3;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 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 -----"< 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 index 0000000000..40db85cd9d --- /dev/null +++ b/tests/bugs/modalg_6/bug25593 @@ -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" + } +} diff --git a/tests/de/iges_1/G6 b/tests/de/iges_1/G6 index 25d2cd44cf..6b7df4860d 100644 --- a/tests/de/iges_1/G6 +++ b/tests/de/iges_1/G6 @@ -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 ) diff --git a/tests/de/iges_1/J9 b/tests/de/iges_1/J9 index 8e5158b6a7..8d4b65b6e7 100644 --- a/tests/de/iges_1/J9 +++ b/tests/de/iges_1/J9 @@ -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 ) diff --git a/tests/de/iges_1/K3 b/tests/de/iges_1/K3 index 713c5f89ec..2b070c2324 100644 --- a/tests/de/iges_1/K3 +++ b/tests/de/iges_1/K3 @@ -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 ) diff --git a/tests/de/iges_1/L8 b/tests/de/iges_1/L8 index 64ab98d9cb..1427e70882 100755 --- a/tests/de/iges_1/L8 +++ b/tests/de/iges_1/L8 @@ -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 ) diff --git a/tests/de/iges_1/M7 b/tests/de/iges_1/M7 index 8818cf2715..89e885e4b0 100644 --- a/tests/de/iges_1/M7 +++ b/tests/de/iges_1/M7 @@ -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" diff --git a/tests/de/iges_1/N9 b/tests/de/iges_1/N9 index d338560a11..f5a6ad9109 100644 --- a/tests/de/iges_1/N9 +++ b/tests/de/iges_1/N9 @@ -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 ) diff --git a/tests/de/iges_1/P5 b/tests/de/iges_1/P5 index 46fa3b6167..998b97d2e5 100755 --- a/tests/de/iges_1/P5 +++ b/tests/de/iges_1/P5 @@ -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 ) diff --git a/tests/de/iges_1/P8 b/tests/de/iges_1/P8 index dede62be96..ce568899c4 100644 --- a/tests/de/iges_1/P8 +++ b/tests/de/iges_1/P8 @@ -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 ) diff --git a/tests/de/iges_1/R1 b/tests/de/iges_1/R1 index ace596dea5..a08d6c7f4c 100755 --- a/tests/de/iges_1/R1 +++ b/tests/de/iges_1/R1 @@ -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 ) diff --git a/tests/de/iges_1/R8 b/tests/de/iges_1/R8 index e5e4bdc7d0..5b072baed5 100755 --- a/tests/de/iges_1/R8 +++ b/tests/de/iges_1/R8 @@ -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 ) diff --git a/tests/de/iges_2/B8 b/tests/de/iges_2/B8 index 11e27c608a..7ada3d423f 100644 --- a/tests/de/iges_2/B8 +++ b/tests/de/iges_2/B8 @@ -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 ) diff --git a/tests/de/iges_2/C2 b/tests/de/iges_2/C2 index 6106d5414f..edc0c660e2 100644 --- a/tests/de/iges_2/C2 +++ b/tests/de/iges_2/C2 @@ -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 ) diff --git a/tests/de/iges_2/I7 b/tests/de/iges_2/I7 index f487a196f7..bef85b6642 100644 --- a/tests/de/iges_2/I7 +++ b/tests/de/iges_2/I7 @@ -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 ) diff --git a/tests/de/iges_3/A4 b/tests/de/iges_3/A4 index 459721600c..cb0b7c19e7 100755 --- a/tests/de/iges_3/A4 +++ b/tests/de/iges_3/A4 @@ -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 diff --git a/tests/de/step_2/B6 b/tests/de/step_2/B6 index 4544744581..42549ed258 100644 --- a/tests/de/step_2/B6 +++ b/tests/de/step_2/B6 @@ -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 diff --git a/tests/de/step_2/M4 b/tests/de/step_2/M4 index bb3455d143..1b540526c0 100644 --- a/tests/de/step_2/M4 +++ b/tests/de/step_2/M4 @@ -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 ) diff --git a/tests/de/step_2/M6 b/tests/de/step_2/M6 index ea621fc536..d4fd0da324 100644 --- a/tests/de/step_2/M6 +++ b/tests/de/step_2/M6 @@ -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 ) diff --git a/tests/de/step_2/S1 b/tests/de/step_2/S1 index 29df69d871..6811c4ba78 100644 --- a/tests/de/step_2/S1 +++ b/tests/de/step_2/S1 @@ -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 ) diff --git a/tests/de/step_2/S9 b/tests/de/step_2/S9 index a69b00862a..4efcc36fdc 100644 --- a/tests/de/step_2/S9 +++ b/tests/de/step_2/S9 @@ -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 ) diff --git a/tests/de/step_2/T9 b/tests/de/step_2/T9 index c7f0f70057..bb9b8e7e88 100644 --- a/tests/de/step_2/T9 +++ b/tests/de/step_2/T9 @@ -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 ) diff --git a/tests/de/step_2/W7 b/tests/de/step_2/W7 index 7ae02a163d..8a5217631b 100644 --- a/tests/de/step_2/W7 +++ b/tests/de/step_2/W7 @@ -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 ) diff --git a/tests/de/step_2/Y5 b/tests/de/step_2/Y5 index a36b39e710..f6a0f893b0 100644 --- a/tests/de/step_2/Y5 +++ b/tests/de/step_2/Y5 @@ -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 ) diff --git a/tests/de/step_3/A9 b/tests/de/step_3/A9 index 9130d0dc71..faa789f0a1 100755 --- a/tests/de/step_3/A9 +++ b/tests/de/step_3/A9 @@ -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 diff --git a/tests/de/step_3/C4 b/tests/de/step_3/C4 index 6eb5ff55a7..02c2ed55fe 100644 --- a/tests/de/step_3/C4 +++ b/tests/de/step_3/C4 @@ -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 ) diff --git a/tests/de/step_3/C6 b/tests/de/step_3/C6 index 9daa17a8b6..03bcbd1eb1 100644 --- a/tests/de/step_3/C6 +++ b/tests/de/step_3/C6 @@ -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 ) diff --git a/tests/de/step_3/D3 b/tests/de/step_3/D3 index b23c6912ac..5a4d676a83 100644 --- a/tests/de/step_3/D3 +++ b/tests/de/step_3/D3 @@ -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 ) diff --git a/tests/de/step_3/D8 b/tests/de/step_3/D8 index 0ff3be404b..c283bb7cb3 100755 --- a/tests/de/step_3/D8 +++ b/tests/de/step_3/D8 @@ -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) diff --git a/tests/de/step_3/D9 b/tests/de/step_3/D9 index 4b1a9e0acc..469cca1933 100755 --- a/tests/de/step_3/D9 +++ b/tests/de/step_3/D9 @@ -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 ) diff --git a/tests/de/step_3/F4 b/tests/de/step_3/F4 index b846423002..bf2a803c34 100644 --- a/tests/de/step_3/F4 +++ b/tests/de/step_3/F4 @@ -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 ) diff --git a/tests/de/step_4/E6 b/tests/de/step_4/E6 index 1ec267a108..9a5a9434da 100644 --- a/tests/de/step_4/E6 +++ b/tests/de/step_4/E6 @@ -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 ) diff --git a/tests/de/step_5/A1 b/tests/de/step_5/A1 index f7edc0f686..7e9bf33475 100755 --- a/tests/de/step_5/A1 +++ b/tests/de/step_5/A1 @@ -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 ) diff --git a/tests/heal/split_angle/F2 b/tests/heal/split_angle/F2 index 3a4b784619..851c38719f 100644 --- a/tests/heal/split_angle/F2 +++ b/tests/heal/split_angle/F2 @@ -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