mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-09 18:50:54 +03:00
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
This commit is contained in:
parent
346cf025a5
commit
1d19db8dad
@ -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 {
|
||||
|
@ -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,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++;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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(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;
|
||||
|
@ -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
|
||||
|
||||
|
@ -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"
|
||||
}
|
||||
|
60
tests/bugs/modalg_6/bug25593
Executable file
60
tests/bugs/modalg_6/bug25593
Executable file
@ -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"
|
||||
}
|
||||
}
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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"
|
||||
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user