Branches CR25465 and CR25488 were squashed and rebased on the current MASTER (12/01/2014)
const Standard_Real theUlSurf1,
const Standard_Real thePeriodOfSurf1,
const Handle(IntSurf_LineOn2S)& theLine,
+ const Standard_Real theTol3D,
const Standard_Real theTol2D,
const Standard_Boolean theFlForce)
{
thePntOnSurf2.X(), thePntOnSurf2.Y());
}
+ const Standard_Integer aNbPnts = theLine->NbPoints();
+ if(aNbPnts > 0)
+ {
+ Standard_Real aUl = 0.0, aVl = 0.0;
+ const IntSurf_PntOn2S aPlast = theLine->Value(aNbPnts);
+ if(isTheReverse)
+ aPlast.ParametersOnS2(aUl, aVl);
+ else
+ aPlast.ParametersOnS1(aUl, aVl);
+
+ if(anUpar <= aUl)
+ {//Parameter value will be always increased.
+ return Standard_False;
+ }
+
+ //theTol2D is minimal step along parameter changed.
+ //Therefore, if we apply this minimal step two
+ //neighbour points will be always "same". Consequently,
+ //we should reduce tolerance for IsSame checking.
+ const Standard_Real aDTol = 1.0-Epsilon(1.0);
+ if(aPnt.IsSame(aPlast, theTol3D*aDTol, theTol2D*aDTol))
+ {
+ theLine->RemovePoint(aNbPnts);
+ }
+ }
+
theLine->Add(aPnt);
return Standard_True;
}
const stCoeffsValue& theCoeffs,
const Bnd_Box2d& theUVSurf1,
const Bnd_Box2d& theUVSurf2,
+ const Standard_Real theTol3D,
const Standard_Real theTol2D,
const Standard_Real thePeriod,
const Standard_Real theNulValue,
AddPointIntoWL(theQuad1, theQuad2, isTheReverse,
gp_Pnt2d(anUpar1, aV1), gp_Pnt2d(aU2, aV2),
aUSurf1f, aUSurf1l, thePeriod,
- theWL->Curve(), theTol2D, theFlForce);
+ theWL->Curve(), theTol3D, theTol2D, theFlForce);
}
else
{
AddPointIntoWL(theQuad1, theQuad2, isTheReverse,
gp_Pnt2d(anUpar2, aV1), gp_Pnt2d(aU2, aV2),
aUSurf1f, aUSurf1l, thePeriod,
- theWL->Curve(), theTol2D, theFlForce);
+ theWL->Curve(),theTol3D, theTol2D, theFlForce);
}
else
{
AddPointIntoWL(theQuad1, theQuad2, isTheReverse,
gp_Pnt2d(anUpar2, aV1), gp_Pnt2d(aU2, aV2),
aUSurf1f, aUSurf1l, thePeriod,
- theWL->Curve(), theTol2D, theFlForce);
+ theWL->Curve(), theTol3D, theTol2D, theFlForce);
}
else
{
AddPointIntoWL(theQuad1, theQuad2, isTheReverse,
gp_Pnt2d(anUpar1, aV1), gp_Pnt2d(aU2, aV2),
aUSurf1f, aUSurf1l, thePeriod,
- theWL->Curve(), theTol2D, theFlForce);
+ theWL->Curve(), theTol3D, theTol2D, theFlForce);
}
else
{
{
Standard_Real &a = theU1crit[i],
&b = theU1crit[i-1];
- if(Abs(a - b) < theTol2D)
+ const Standard_Real aRemain = fmod(Abs(a - b), thePeriod); // >= 0, because Abs(a - b) >= 0
+ if((Abs(a - b) < theTol2D) || (aRemain < theTol2D) || (Abs(aRemain - thePeriod) < theTol2D))
{
a = (a + b)/2.0;
b = Precision::Infinite();
Standard_Boolean isAddedIntoWL1 = Standard_False, isAddedIntoWL2 = Standard_False;
Standard_Real anUf = aU1f[aCurInterval], anUl = aU1l[aCurInterval];
+ const Standard_Boolean isDeltaPeriod = IsEqual(anUl-anUf, aPeriod);
//Inscribe and sort critical points
InscribeAndSortArray(anU1crit, aNbCritPointsMax, anUf, anUl, theTol2D, aPeriod);
Handle(IntPatch_WLine) aWLine2 = new IntPatch_WLine(aL2S2, Standard_False);
Standard_Integer aWL1FindStatus = 0, aWL2FindStatus = 0;
+ Standard_Boolean isAddingWL1Enabled = Standard_True,
+ isAddingWL2Enabled = Standard_True;
Standard_Real anU1 = anUf;
while(anU1 <= anUl)
{
+ if(isDeltaPeriod)
+ {
+ if(IsEqual(anU1, anUl))
+ {
+ //if isAddedIntoWL* == TRUE WLine contains only one point
+ //(which was end point of previous WLine). If we will
+ //add point found on the current step WLine will contain only
+ //two points. At that both these points will be equal to the
+ //points found earlier. Therefore, new WLine will repeat
+ //already existing WLine. Consequently, it is necessary
+ //to forbid building new line in this case.
+
+ isAddingWL1Enabled = !isAddedIntoWL1;
+ isAddingWL2Enabled = !isAddedIntoWL2;
+ }
+ }
+
for(Standard_Integer i = 0; i < aNbCritPointsMax; i++)
{
if((anU1 - anU1crit[i])*aCriticalDelta[i] < 0.0)
isFirst = Standard_False;
}
- if( ((aUSurf2f-aU21) <= theTol2D) &&
- ((aU21-aUSurf2l) <= theTol2D) &&
- ((aVSurf1f - aV11) <= theTol2D) &&
- ((aV11 - aVSurf1l) <= theTol2D) &&
- ((aVSurf2f - aV21) <= theTol2D) && ((aV21 - aVSurf2l) <= theTol2D))
+ if(isAddingWL1Enabled)
{
- Standard_Boolean isForce = Standard_False;
- if(!aWL1FindStatus)
+ if( ((aUSurf2f-aU21) <= theTol2D) &&
+ ((aU21-aUSurf2l) <= theTol2D) &&
+ ((aVSurf1f - aV11) <= theTol2D) &&
+ ((aV11 - aVSurf1l) <= theTol2D) &&
+ ((aVSurf2f - aV21) <= theTol2D) && ((aV21 - aVSurf2l) <= theTol2D))
{
- Standard_Boolean isFound1 = Standard_False, isFound2 = Standard_False;
-
- if(((aUSurf2l - aUSurf2f) >= aPeriod) && (Abs(anU1-aUSurf1l) < theTol2D))
+ Standard_Boolean isForce = Standard_False;
+ if(!aWL1FindStatus)
{
- isForce = Standard_True;
- }
+ Standard_Boolean isFound1 = Standard_False, isFound2 = Standard_False;
+
+ if(((aUSurf2l - aUSurf2f) >= aPeriod) && (Abs(anU1-aUSurf1l) < theTol2D))
+ {
+ isForce = Standard_True;
+ }
- AddBoundaryPoint(theQuad1, theQuad2, aWLine1, anEquationCoeffs,
- theUVSurf1, theUVSurf2, theTol2D, aPeriod,
- aNulValue, anU1, aU21, aV11, aV11Prev,
- aV21, aV21Prev, isTheReverse,
- 1.0, isForce, isFound1, isFound2);
+ AddBoundaryPoint(theQuad1, theQuad2, aWLine1, anEquationCoeffs,
+ theUVSurf1, theUVSurf2, theTol3D, theTol2D, aPeriod,
+ aNulValue, anU1, aU21, aV11, aV11Prev,
+ aV21, aV21Prev, isTheReverse,
+ 1.0, isForce, isFound1, isFound2);
- if(isFound1 || isFound2)
- {
- aWL1FindStatus = 1;
+ if(isFound1 || isFound2)
+ {
+ aWL1FindStatus = 1;
+ }
}
- }
- if((aWL1FindStatus != 2) || (aWLine1->NbPnts() >= 1))
- {
- if(AddPointIntoWL(theQuad1, theQuad2, isTheReverse,
- gp_Pnt2d(anU1, aV11), gp_Pnt2d(aU21, aV21),
- aUSurf1f, aUSurf1l, aPeriod,
- aWLine1->Curve(), theTol2D, isForce))
+ if((aWL1FindStatus != 2) || (aWLine1->NbPnts() >= 1))
{
- if(!aWL1FindStatus)
+ if(AddPointIntoWL(theQuad1, theQuad2, isTheReverse,
+ gp_Pnt2d(anU1, aV11), gp_Pnt2d(aU21, aV21),
+ aUSurf1f, aUSurf1l, aPeriod,
+ aWLine1->Curve(), theTol3D, theTol2D, isForce))
{
- aWL1FindStatus = 1;
+ if(!aWL1FindStatus)
+ {
+ aWL1FindStatus = 1;
+ }
}
}
}
- }
- else
- {
- if(aWL1FindStatus == 1)
+ else
{
- Standard_Boolean isFound1 = Standard_False, isFound2 = Standard_False;
+ if(aWL1FindStatus == 1)
+ {
+ Standard_Boolean isFound1 = Standard_False, isFound2 = Standard_False;
- AddBoundaryPoint(theQuad1, theQuad2, aWLine1, anEquationCoeffs,
- theUVSurf1, theUVSurf2, theTol2D, aPeriod,
- aNulValue, anU1, aU21, aV11, aV11Prev,
- aV21, aV21Prev, isTheReverse,
- 1.0, Standard_False, isFound1, isFound2);
+ AddBoundaryPoint(theQuad1, theQuad2, aWLine1, anEquationCoeffs,
+ theUVSurf1, theUVSurf2, theTol3D, theTol2D, aPeriod,
+ aNulValue, anU1, aU21, aV11, aV11Prev,
+ aV21, aV21Prev, isTheReverse,
+ 1.0, Standard_False, isFound1, isFound2);
- if(isFound1 || isFound2)
- aWL1FindStatus = 2; //start a new line
+ if(isFound1 || isFound2)
+ aWL1FindStatus = 2; //start a new line
+ }
}
}
- if( ((aUSurf2f-aU22) <= theTol2D) &&
- ((aU22-aUSurf2l) <= theTol2D) &&
- ((aVSurf1f - aV12) <= theTol2D) &&
- ((aV12 - aVSurf1l) <= theTol2D) &&
- ((aVSurf2f - aV22) <= theTol2D) &&
- ((aV22 - aVSurf2l) <= theTol2D))
+ if(isAddingWL2Enabled)
{
- Standard_Boolean isForce = Standard_False;
-
- if(!aWL2FindStatus)
+ if( ((aUSurf2f-aU22) <= theTol2D) &&
+ ((aU22-aUSurf2l) <= theTol2D) &&
+ ((aVSurf1f - aV12) <= theTol2D) &&
+ ((aV12 - aVSurf1l) <= theTol2D) &&
+ ((aVSurf2f - aV22) <= theTol2D) &&
+ ((aV22 - aVSurf2l) <= theTol2D))
{
- Standard_Boolean isFound1 = Standard_False, isFound2 = Standard_False;
+ Standard_Boolean isForce = Standard_False;
- if(((aUSurf2l - aUSurf2f) >= aPeriod) && (Abs(anU1-aUSurf1l) < theTol2D))
+ if(!aWL2FindStatus)
{
- isForce = Standard_True;
- }
+ Standard_Boolean isFound1 = Standard_False, isFound2 = Standard_False;
+
+ if(((aUSurf2l - aUSurf2f) >= aPeriod) && (Abs(anU1-aUSurf1l) < theTol2D))
+ {
+ isForce = Standard_True;
+ }
- AddBoundaryPoint(theQuad1, theQuad2, aWLine2, anEquationCoeffs,
- theUVSurf1, theUVSurf2, theTol2D, aPeriod,
- aNulValue, anU1, aU22, aV12, aV12Prev,
- aV22, aV22Prev, isTheReverse,
- -1.0, isForce, isFound1, isFound2);
+ AddBoundaryPoint(theQuad1, theQuad2, aWLine2, anEquationCoeffs,
+ theUVSurf1, theUVSurf2, theTol3D, theTol2D, aPeriod,
+ aNulValue, anU1, aU22, aV12, aV12Prev,
+ aV22, aV22Prev, isTheReverse,
+ -1.0, isForce, isFound1, isFound2);
- if(isFound1 || isFound2)
- {
- aWL2FindStatus = 1;
+ if(isFound1 || isFound2)
+ {
+ aWL2FindStatus = 1;
+ }
}
- }
- if((aWL2FindStatus != 2) || (aWLine2->NbPnts() >= 1))
- {
- if(AddPointIntoWL(theQuad1, theQuad2, isTheReverse,
- gp_Pnt2d(anU1, aV12), gp_Pnt2d(aU22, aV22),
- aUSurf1f, aUSurf1l, aPeriod,
- aWLine2->Curve(), theTol2D, isForce))
+ if((aWL2FindStatus != 2) || (aWLine2->NbPnts() >= 1))
{
- if(!aWL2FindStatus)
+ if(AddPointIntoWL(theQuad1, theQuad2, isTheReverse,
+ gp_Pnt2d(anU1, aV12), gp_Pnt2d(aU22, aV22),
+ aUSurf1f, aUSurf1l, aPeriod,
+ aWLine2->Curve(), theTol3D, theTol2D, isForce))
{
- aWL2FindStatus = 1;
+ if(!aWL2FindStatus)
+ {
+ aWL2FindStatus = 1;
+ }
}
}
}
- }
- else
- {
- if(aWL2FindStatus == 1)
+ else
{
- Standard_Boolean isFound1 = Standard_False, isFound2 = Standard_False;
+ if(aWL2FindStatus == 1)
+ {
+ Standard_Boolean isFound1 = Standard_False, isFound2 = Standard_False;
- AddBoundaryPoint(theQuad1, theQuad2, aWLine2, anEquationCoeffs,
- theUVSurf1, theUVSurf2, theTol2D, aPeriod,
- aNulValue, anU1, aU22, aV12, aV12Prev,
- aV22, aV22Prev, isTheReverse,
- -1.0, Standard_False, isFound1, isFound2);
+ AddBoundaryPoint(theQuad1, theQuad2, aWLine2, anEquationCoeffs,
+ theUVSurf1, theUVSurf2, theTol3D, theTol2D, aPeriod,
+ aNulValue, anU1, aU22, aV12, aV12Prev,
+ aV22, aV22Prev, isTheReverse,
+ -1.0, Standard_False, isFound1, isFound2);
- if(isFound1 || isFound2)
- aWL2FindStatus = 2; //start a new line
+ if(isFound1 || isFound2)
+ aWL2FindStatus = 2; //start a new line
+ }
}
}
{
isTheEmpty = Standard_False;
isAddedIntoWL1 = Standard_True;
-
SeekAdditionalPoints( theQuad1, theQuad2, aWLine1->Curve(),
anEquationCoeffs, aNbPoints, aUSurf2f, aUSurf2l,
theTol2D, aPeriod, 1.0, isTheReverse);
}
}
+ if(theSlin.Length() > 0)
+ {
+ for(Standard_Integer aNumOfLine = 2; aNumOfLine <= theSlin.Length(); aNumOfLine++)
+ {
+ const Handle(IntPatch_WLine)& aWLine = Handle(IntPatch_WLine)::DownCast(theSlin.Value(aNumOfLine));
+
+ const IntSurf_PntOn2S& aPntFWL = aWLine->Point(1);
+
+ Standard_Real aU1 = 0.0, aU2 = 0.0, aV1 = 0.0, aV2 = 0.0;
+ aPntFWL.Parameters(aU1, aV1, aU2, aV2);
+
+ if( IsEqual(aU1, 0.0) || IsEqual(aU1, aPeriod))
+ {
+ theSlin.Exchange(1, aNumOfLine);
+ break;
+ }
+ }
+
+ for(Standard_Integer aNumOfLine1 = 1; aNumOfLine1 <= theSlin.Length(); aNumOfLine1++)
+ {
+ const Handle(IntPatch_WLine)& aWLine1 = Handle(IntPatch_WLine)::DownCast(theSlin.Value(aNumOfLine1));
+
+ const Standard_Integer aNbPntsWL1 = aWLine1->NbPnts();
+ const IntSurf_PntOn2S& aPntFWL1 = aWLine1->Point(1);
+ const IntSurf_PntOn2S& aPntLWL1 = aWLine1->Point(aNbPntsWL1);
+
+ for(Standard_Integer aNPt = 1; aNPt <= theSPnt.Length(); aNPt++)
+ {
+ const IntSurf_PntOn2S aPntCur = theSPnt.Value(aNPt).PntOn2S();
+
+ if( aPntCur.IsSame(aPntFWL1, Precision::Confusion()) ||
+ aPntCur.IsSame(aPntLWL1, Precision::Confusion()))
+ {
+ theSPnt.Remove(aNPt);
+ aNPt--;
+ }
+ }
+
+ Standard_Boolean hasBeenRemoved = Standard_False;
+ for(Standard_Integer aNumOfLine2 = aNumOfLine1 + 1; aNumOfLine2 <= theSlin.Length(); aNumOfLine2++)
+ {
+ const Handle(IntPatch_WLine)& aWLine2 = Handle(IntPatch_WLine)::DownCast(theSlin.Value(aNumOfLine2));
+
+ const Standard_Integer aNbPntsWL1 = aWLine1->NbPnts();
+ const Standard_Integer aNbPntsWL2 = aWLine2->NbPnts();
+
+ const IntSurf_PntOn2S& aPntFWL1 = aWLine1->Point(1);
+ const IntSurf_PntOn2S& aPntLWL1 = aWLine1->Point(aNbPntsWL1);
+
+ const IntSurf_PntOn2S& aPntFWL2 = aWLine2->Point(1);
+ const IntSurf_PntOn2S& aPntLWL2 = aWLine2->Point(aNbPntsWL2);
+
+ if(aPntFWL1.IsSame(aPntFWL2, Precision::Confusion()))
+ {
+ Standard_Real aU11 = 0.0, aU12 = 0.0, aV11 = 0.0, aV12 = 0.0;
+ Standard_Real aU21 = 0.0, aU22 = 0.0, aV21 = 0.0, aV22 = 0.0;
+
+ aPntFWL1.Parameters(aU11, aV11, aU12, aV12);
+ aPntFWL2.Parameters(aU21, aV21, aU22, aV22);
+
+ if( !(IsEqual(fmod(aU11, aPeriod), 0.0) ||
+ IsEqual(fmod(aU12, aPeriod), 0.0) ||
+ IsEqual(fmod(aU21, aPeriod), 0.0) ||
+ IsEqual(fmod(aU22, aPeriod), 0.0) ||
+ IsEqual(aU11, aUSurf1f) || IsEqual(aU11, aUSurf1l) ||
+ IsEqual(aU21, aUSurf1f) || IsEqual(aU21, aUSurf1l) ||
+ IsEqual(aU12, aUSurf2f) || IsEqual(aU12, aUSurf2l) ||
+ IsEqual(aU22, aUSurf2f) || IsEqual(aU22, aUSurf2l)))
+ {
+ aWLine1->ClearVertexes();
+ for(Standard_Integer aNPt = 1; aNPt <= aNbPntsWL2; aNPt++)
+ {
+ const IntSurf_PntOn2S& aPt = aWLine2->Point(aNPt);
+ aWLine1->Curve()->InsertBefore(1, aPt);
+ }
+
+ aWLine1->ComputeVertexParameters(theTol3D);
+
+ theSlin.Remove(aNumOfLine2);
+ aNumOfLine2--;
+ hasBeenRemoved = Standard_True;
+
+ continue;
+ }
+ }
+
+ if(aPntFWL1.IsSame(aPntLWL2, Precision::Confusion()))
+ {
+ Standard_Real aU11 = 0.0, aU12 = 0.0, aV11 = 0.0, aV12 = 0.0;
+ Standard_Real aU21 = 0.0, aU22 = 0.0, aV21 = 0.0, aV22 = 0.0;
+
+ aPntFWL1.Parameters(aU11, aV11, aU12, aV12);
+ aPntLWL2.Parameters(aU21, aV21, aU22, aV22);
+
+ if( !(IsEqual(fmod(aU11, aPeriod), 0.0) ||
+ IsEqual(fmod(aU12, aPeriod), 0.0) ||
+ IsEqual(fmod(aU21, aPeriod), 0.0) ||
+ IsEqual(fmod(aU22, aPeriod), 0.0) ||
+ IsEqual(aU11, aUSurf1f) || IsEqual(aU11, aUSurf1l) ||
+ IsEqual(aU21, aUSurf1f) || IsEqual(aU21, aUSurf1l) ||
+ IsEqual(aU12, aUSurf2f) || IsEqual(aU12, aUSurf2l) ||
+ IsEqual(aU22, aUSurf2f) || IsEqual(aU22, aUSurf2l)))
+ {
+ aWLine1->ClearVertexes();
+ for(Standard_Integer aNPt = aNbPntsWL2; aNPt >= 1; aNPt--)
+ {
+ const IntSurf_PntOn2S& aPt = aWLine2->Point(aNPt);
+ aWLine1->Curve()->InsertBefore(1, aPt);
+ }
+
+ aWLine1->ComputeVertexParameters(theTol3D);
+
+ theSlin.Remove(aNumOfLine2);
+ aNumOfLine2--;
+ hasBeenRemoved = Standard_True;
+
+ continue;
+ }
+ }
+
+ if(aPntLWL1.IsSame(aPntFWL2, Precision::Confusion()))
+ {
+ Standard_Real aU11 = 0.0, aU12 = 0.0, aV11 = 0.0, aV12 = 0.0;
+ Standard_Real aU21 = 0.0, aU22 = 0.0, aV21 = 0.0, aV22 = 0.0;
+
+ aPntLWL1.Parameters(aU11, aV11, aU12, aV12);
+ aPntFWL2.Parameters(aU21, aV21, aU22, aV22);
+
+ if( !(IsEqual(fmod(aU11, aPeriod), 0.0) ||
+ IsEqual(fmod(aU12, aPeriod), 0.0) ||
+ IsEqual(fmod(aU21, aPeriod), 0.0) ||
+ IsEqual(fmod(aU22, aPeriod), 0.0) ||
+ IsEqual(aU11, aUSurf1f) || IsEqual(aU11, aUSurf1l) ||
+ IsEqual(aU21, aUSurf1f) || IsEqual(aU21, aUSurf1l) ||
+ IsEqual(aU12, aUSurf2f) || IsEqual(aU12, aUSurf2l) ||
+ IsEqual(aU22, aUSurf2f) || IsEqual(aU22, aUSurf2l)))
+ {
+ aWLine1->ClearVertexes();
+ for(Standard_Integer aNPt = 1; aNPt <= aNbPntsWL2; aNPt++)
+ {
+ const IntSurf_PntOn2S& aPt = aWLine2->Point(aNPt);
+ aWLine1->Curve()->Add(aPt);
+ }
+
+ aWLine1->ComputeVertexParameters(theTol3D);
+
+ theSlin.Remove(aNumOfLine2);
+ aNumOfLine2--;
+ hasBeenRemoved = Standard_True;
+
+ continue;
+ }
+ }
+
+ if(aPntLWL1.IsSame(aPntLWL2, Precision::Confusion()))
+ {
+ Standard_Real aU11 = 0.0, aU12 = 0.0, aV11 = 0.0, aV12 = 0.0;
+ Standard_Real aU21 = 0.0, aU22 = 0.0, aV21 = 0.0, aV22 = 0.0;
+
+ aPntLWL1.Parameters(aU11, aV11, aU12, aV12);
+ aPntLWL2.Parameters(aU21, aV21, aU22, aV22);
+
+ if( !(IsEqual(fmod(aU11, aPeriod), 0.0) ||
+ IsEqual(fmod(aU12, aPeriod), 0.0) ||
+ IsEqual(fmod(aU21, aPeriod), 0.0) ||
+ IsEqual(fmod(aU22, aPeriod), 0.0) ||
+ IsEqual(aU11, aUSurf1f) || IsEqual(aU11, aUSurf1l) ||
+ IsEqual(aU21, aUSurf1f) || IsEqual(aU21, aUSurf1l) ||
+ IsEqual(aU12, aUSurf2f) || IsEqual(aU12, aUSurf2l) ||
+ IsEqual(aU22, aUSurf2f) || IsEqual(aU22, aUSurf2l)))
+ {
+ aWLine1->ClearVertexes();
+ for(Standard_Integer aNPt = aNbPntsWL2; aNPt >= 1; aNPt--)
+ {
+ const IntSurf_PntOn2S& aPt = aWLine2->Point(aNPt);
+ aWLine1->Curve()->Add(aPt);
+ }
+
+ aWLine1->ComputeVertexParameters(theTol3D);
+
+ theSlin.Remove(aNumOfLine2);
+ aNumOfLine2--;
+ hasBeenRemoved = Standard_True;
+
+ continue;
+ }
+ }
+ }
+
+ if(hasBeenRemoved)
+ aNumOfLine1--;
+
+ //aWLine1->ComputeVertexParameters(theTol3D);
+ }
+ }//if(theSlin.Length() > 0)
+
+
return Standard_True;
}
---C++: return const&
returns HCurve2d from Adaptor2d;
- Dump(me)
+ ClearVertexes(me: mutable)
+ is static;
- is static;
+ RemoveVertex(me: mutable;
+ theIndex : Integer from Standard)
+ is static;
+
+ InsertVertexBefore(me: mutable;
+ theIndex : Integer from Standard;
+ thePnt : Point from IntPatch)
+ is static;
+
+ Dump(me)
+
+ is static;
fields
{
return svtx(Index);
}
+
+inline void IntPatch_WLine::ClearVertexes()
+{
+ svtx.Clear();
+}
+
+inline void IntPatch_WLine::RemoveVertex(const Standard_Integer theIndex)
+{
+ if((theIndex < 1) || (theIndex > NbVertex()))
+ Standard_OutOfRange::Raise("Cannot delete not existing vertex");
+ svtx.Remove(theIndex);
+}
+
+inline void IntPatch_WLine::InsertVertexBefore( const Standard_Integer theIndex,
+ const IntPatch_Point& thePnt)
+{
+ const Standard_Integer aNbVertexes = NbVertex();
+ Standard_Integer anIndex = Max(theIndex, 1);
+
+ if(anIndex > aNbVertexes)
+ svtx.Append(thePnt);
+ else
+ svtx.InsertBefore(theIndex, thePnt);
+}
returns Boolean from Standard;
-
fields
pt : Pnt from gp;
}
# Check if list of xdistcs-command is valid
-proc checkList {List Tolerance D_good} {
+proc checkList {List Tolerance D_good Limit_Tol} {
set L1 [llength ${List}]
set L2 10
set L3 5
set D [lindex ${List} ${j2}]
#puts "i=${i} j1=${j1} j2=${j2} T=${T} D=${D}"
if { [expr abs(${D} - ${D_good})] > ${Tolerance} } {
- puts "Error: i=${i} T=${T} D=${D}"
+ puts "Error : T=${T} D=${D}"
+ }
+
+ if { ${Tolerance} > ${Limit_Tol} } {
+ if { [expr abs(${D} - ${D_good})] > ${Limit_Tol}
+ && [expr abs(${D} - ${D_good})] <= ${Tolerance} } {
+ puts "Attention (critical value of tolerance) : T=${T} D=${D}"
+ }
}
}
}
renamevar p_1 result
set status 0
- set length 110.161
- set nb_v_good 4
- set nb_e_good 4
+ set length 110.167
+ set nb_v_good 1
+ set nb_e_good 1
set nb_w_good 1
set nb_f_good 0
set nb_sh_good 0
set nb_sol_good 0
set nb_compsol_good 0
set nb_compound_good 0
- set nb_shape_good 9
+ set nb_shape_good 3
}
if { ${mistake} != 0 } {
renamevar p_2 result
set status 0
- set length 110.171
- set nb_v_good 4
- set nb_e_good 4
+ set length 110.167
+ set nb_v_good 1
+ set nb_e_good 1
set nb_w_good 1
set nb_f_good 0
set nb_sh_good 0
set nb_sol_good 0
set nb_compsol_good 0
set nb_compound_good 0
- set nb_shape_good 9
+ set nb_shape_good 3
}
# Resume
#
set status 0
#
-set nb_v_good 8
-set nb_e_good 12
-set nb_w_good 4
-set nb_f_good 4
+set nb_v_good 2
+set nb_e_good 3
+set nb_w_good 1
+set nb_f_good 1
set nb_sh_good 0
set nb_sol_good 0
set nb_compsol_good 0
set nb_compound_good 1
-set nb_shape_good 29
+set nb_shape_good 8
#
set Numbers 11
#
puts "Faulty ${BugNumber}"
}
-set square 8444.76
+set square 6606.88
set 2dviewer 0
###########################################################################################################
set BugNumber OCC22967
-set check_value 3.46945e-006
+set check_value 8.46459e-006
restore [locate_data_file bug22967_Cylinder_1.brep] b1
restore [locate_data_file bug22967_Scale_1.brep] b2
puts "OK ${BugNumber}"
}
-set square 669221
+set square 668843
set 2dviewer 0
puts $result
puts "Finish project operation ..."
-set GoodToleranceReached 2.4950140688989345e-006
+set GoodToleranceReached 6.3315853638232248e-007
regexp {Tolerance Reached=([-0-9.+eE]+)} $result full ToleranceReached
proc GetPercent {Value GoodValue} {
bop b1 b2
bopcut result
-set square 1826.15
+set square 1826.16
# Analysis of "nbshapes res"
-set nb_v_good 49
-set nb_e_good 72
+set nb_v_good 44
+set nb_e_good 67
set nb_w_good 29
set nb_f_good 22
set nb_sh_good 1
set nb_sol_good 1
set nb_compsol_good 0
set nb_compound_good 1
-set nb_shape_good 175
+set nb_shape_good 165
set 2dviewer 1
bfillds
bbop result 0
-set square 10008.5
+set square 10008.9
-set nb_v_good 260
-set nb_e_good 306
+set nb_v_good 140
+set nb_e_good 186
set nb_w_good 126
set nb_f_good 126
set nb_sh_good 40
set nb_sol_good 40
set nb_compsol_good 0
set nb_compound_good 1
-set nb_shape_good 899
+set nb_shape_good 659
set 2dviewer 1
set square 103838
-set nb_v_good 280
-set nb_e_good 338
+set nb_v_good 160
+set nb_e_good 218
set nb_w_good 142
set nb_f_good 80
set nb_sh_good 3
set nb_sol_good 3
set nb_compsol_good 0
set nb_compound_good 1
-set nb_shape_good 847
+set nb_shape_good 607
set 2dviewer 1
set square 157211
-set nb_v_good 280
-set nb_e_good 338
+set nb_v_good 160
+set nb_e_good 218
set nb_w_good 142
set nb_f_good 80
set nb_sh_good 1
set nb_sol_good 1
set nb_compsol_good 0
set nb_compound_good 1
-set nb_shape_good 843
+set nb_shape_good 603
set 2dviewer 1
bfillds
bbuild result
-set nb_v_good 268
-set nb_e_good 366
+set nb_v_good 170
+set nb_e_good 268
set nb_w_good 243
set nb_f_good 195
set nb_sh_good 75
set nb_sol_good 75
set nb_compsol_good 0
set nb_compound_good 1
-set nb_shape_good 1223
+set nb_shape_good 1027
set 2dviewer 1
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+puts ""
+
# bopcurves command
restore [locate_data_file bug25292_Input_0.brep] b1
#############################
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurv
+
+#This value must be equal to the analogical value in bug25292_11 and bug25292_12 of "bugs modalg_5" testgrid.
set MaxTol 1.e-7
+
+#This value must be equal to the analogical value in bug25292_11, bug25292_12, bug25292_15 and bug25292_16 of "bugs modalg_5" testgrid.
+set GoodNbCurv 4
+
if {${Toler} > ${MaxTol}} {
puts "Error: Tolerance is too big!"
}
-set GoodNbCurv 7
+
if {${NbCurv} != ${GoodNbCurv}} {
puts "Error: Curve Number is bad!"
}
# 1
puts ""
-puts "First curve"
mksurface s1 f1
mksurface s2 f2
-dlog reset
-dlog on
-xdistcs c_1 s1 0 1 10
-set Log1 [dlog get]
-
-set List1 [split ${Log1} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List1} ${Tolerance} ${D_good}
-
-# 2
-puts ""
-puts "Second curve"
-
-dlog reset
-dlog on
-xdistcs c_2 s1 0 1 10
-set Log2 [dlog get]
-
-set List2 [split ${Log2} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List2} ${Tolerance} ${D_good}
-
-# 3
-puts ""
-puts "Third curve"
-
-dlog reset
-dlog on
-xdistcs c_3 s1 0 1 10
-set Log3 [dlog get]
-
-set List3 [split ${Log3} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List3} ${Tolerance} ${D_good}
-
-# 4
-puts ""
-puts "Fourth curve"
-
-dlog reset
-dlog on
-xdistcs c_4 s1 0 1 10
-set Log4 [dlog get]
-
-set List4 [split ${Log4} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List4} ${Tolerance} ${D_good}
-
-# 5
-puts ""
-puts "Fifth curve"
-
-dlog reset
-dlog on
-xdistcs c_5 s1 0 1 10
-set Log5 [dlog get]
-
-set List5 [split ${Log5} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List5} ${Tolerance} ${D_good}
-
-# 6
-puts ""
-puts "Sixth curve"
-
-dlog reset
-dlog on
-xdistcs c_6 s1 0 1 10
-set Log6 [dlog get]
-
-set List6 [split ${Log6} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List6} ${Tolerance} ${D_good}
-
-# 7
-puts ""
-puts "Seventh curve"
-
-dlog reset
-dlog on
-xdistcs c_7 s1 0 1 10
-set Log7 [dlog get]
-
-set List7 [split ${Log7} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List7} ${Tolerance} ${D_good}
-
+for {set i 1} {$i <= ${NbCurv}} {incr i} {
+ set log [dump c_$i]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+
+ puts "U1=${U1}"
+ puts "U2=${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs c_$i s1 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance 1.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs c_$i s2 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance 1.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
+}
v2d
2dfit
-puts "TODO OCC225404 Debian60-64 Windows: Error: Curve Number is bad!"
-
puts "================"
puts "OCC25292"
puts "================"
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+puts ""
+
# bopcurves command
restore [locate_data_file bug25292_Input_0.brep] b1
#############################
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurv
+
+#This value must be equal to the analogical value in bug25292_11 and bug25292_12 of "bugs modalg_5" testgrid.
set MaxTol 1.e-7
+
+#This value must be equal to the analogical value in bug25292_11, bug25292_12, bug25292_15 and bug25292_16 of "bugs modalg_5" testgrid.
+set GoodNbCurv 4
+
if {${Toler} > ${MaxTol}} {
puts "Error: Tolerance is too big!"
}
-set GoodNbCurv 7
+
if {${NbCurv} != ${GoodNbCurv}} {
puts "Error: Curve Number is bad!"
}
# 1
puts ""
-puts "First curve"
mksurface s1 f1
mksurface s2 f2
-dlog reset
-dlog on
-xdistcs c_1 s1 0 1 10
-set Log1 [dlog get]
-
-set List1 [split ${Log1} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List1} ${Tolerance} ${D_good}
-
-# 2
-puts ""
-puts "Second curve"
-
-dlog reset
-dlog on
-xdistcs c_2 s1 0 1 10
-set Log2 [dlog get]
-
-set List2 [split ${Log2} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List2} ${Tolerance} ${D_good}
-
-# 3
-puts ""
-puts "Third curve"
-
-dlog reset
-dlog on
-xdistcs c_3 s1 0 1 10
-set Log3 [dlog get]
-
-set List3 [split ${Log3} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List3} ${Tolerance} ${D_good}
-
-# 4
-puts ""
-puts "Fourth curve"
-
-dlog reset
-dlog on
-xdistcs c_4 s1 0 1 10
-set Log4 [dlog get]
-
-set List4 [split ${Log4} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List4} ${Tolerance} ${D_good}
-
-# 5
-if { [info exist c_5] } {
-puts ""
-puts "Fifth curve"
-
-dlog reset
-dlog on
-xdistcs c_5 s1 0 1 10
-set Log5 [dlog get]
-
-set List5 [split ${Log5} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List5} ${Tolerance} ${D_good}
-}
-
-# 6
-if { [info exist c_6] } {
-puts ""
-puts "Sixth curve"
-
-dlog reset
-dlog on
-xdistcs c_6 s1 0 1 10
-set Log6 [dlog get]
-
-set List6 [split ${Log6} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List6} ${Tolerance} ${D_good}
+for {set i 1} {$i <= ${NbCurv}} {incr i} {
+ set log [dump c_$i]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+
+ puts "U1=${U1}"
+ puts "U2=${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs c_$i s1 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance 1.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs c_$i s2 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance 1.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
}
-# 7
-if { [info exist c_7] } {
-puts ""
-puts "Seventh curve"
-
-dlog reset
-dlog on
-xdistcs c_7 s1 0 1 10
-set Log7 [dlog get]
-
-set List7 [split ${Log7} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List7} ${Tolerance} ${D_good}
-}
-
-
v2d
2dfit
set only_screen_axo 1
set square 289.348
-set nb_v_good 12
-set nb_e_good 18
+set nb_v_good 9
+set nb_e_good 15
set nb_w_good 10
set nb_f_good 10
set nb_sh_good 3
set nb_sol_good 3
set nb_compsol_good 0
set nb_compound_good 1
-set nb_shape_good 57
+set nb_shape_good 51
set 3dviewer 1
-puts "TODO OCC225404 Debian60-64 Windows: Error : Result shape is WRONG because it must contains 12 vertices instead of 9"
-puts "TODO OCC225404 Debian60-64 Windows: Error : Result shape is WRONG because it must contains 18 edges instead of 15"
-puts "TODO OCC225404 Debian60-64 Windows: Error : Result shape is WRONG because it must contains 57 shapes instead of 51"
-
puts "================"
puts "OCC25292"
puts "================"
set square 289.348
-set nb_v_good 12
-set nb_e_good 18
+set nb_v_good 9
+set nb_e_good 15
set nb_w_good 10
set nb_f_good 10
set nb_sh_good 3
set nb_sol_good 3
set nb_compsol_good 0
set nb_compound_good 1
-set nb_shape_good 57
+set nb_shape_good 51
set 3dviewer 1
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+proc GetRange { curve } {
+ global U1
+ global U2
+
+ set log [uplevel dump $curve]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+}
+
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+
# intersect command
+#This value must be equal to the analogical value in bug25292_11, bug25292_12, bug25292_15 and bug25292_16 of "bugs modalg_5" testgrid.
+set GoodNbCurv 4
+
restore [locate_data_file bug25292_Input_0.brep] b1
restore [locate_data_file bug25292_Input_1.brep] b2
mksurface s2 f2
#################
-intersect i s1 s2
+intersect res s1 s2
#################
+set che [whatis res]
+set ind [string first "3d curve" $che]
+if {${ind} >= 0} {
+ #Only variable "res" exists
+
+ if { $GoodNbCurv == 1 } {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
+
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
-if { [info exist i_7] } {
- puts "OK: Curve Number is good!"
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res s2 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
} else {
- puts "Error: Curve Number is bad!"
+ set ic 1
+ set AllowRepeate 1
+ while { $AllowRepeate != 0 } {
+ set che [whatis res_$ic]
+ set ind [string first "3d curve" $che]
+ if {${ind} < 0} {
+ set AllowRepeate 0
+ } else {
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res_$ic
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s2 0 1 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ incr ic
+ }
+ }
+
+ if {[expr {$ic - 1}] == $GoodNbCurv} {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
}
-puts "TODO OCC225404 Debian60-64 Windows: Error: Curve Number is bad!"
-
puts "================"
puts "OCC25292"
puts "================"
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+proc GetRange { curve } {
+ global U1
+ global U2
+
+ set log [uplevel dump $curve]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+}
+
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+
# intersect command
+#This value must be equal to the analogical value in bug25292_11, bug25292_12, bug25292_15 and bug25292_16 of "bugs modalg_5" testgrid.
+set GoodNbCurv 4
+
restore [locate_data_file bug25292_Input_0.brep] b1
restore [locate_data_file bug25292_Input_1.brep] b2
mksurface s2 f2
#################
-intersect i s2 s1
+intersect res s2 s1
#################
-if { [info exist i_7] } {
- puts "OK: Curve Number is good!"
+set che [whatis res]
+set ind [string first "3d curve" $che]
+if {${ind} >= 0} {
+ #Only variable "res" exists
+
+ if { $GoodNbCurv == 1 } {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
+
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res s2 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
} else {
- puts "Error: Curve Number is bad!"
+ set ic 1
+ set AllowRepeate 1
+ while { $AllowRepeate != 0 } {
+ set che [whatis res_$ic]
+ set ind [string first "3d curve" $che]
+ if {${ind} < 0} {
+ set AllowRepeate 0
+ } else {
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res_$ic
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s2 0 1 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ incr ic
+ }
+ }
+
+ if {[expr {$ic - 1}] == $GoodNbCurv} {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
}
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+puts ""
+
# bopcurves command
restore [locate_data_file bug25292_Input_3.brep] b1
copy b2_1 f2
#########################
-set log [bopcurves f1 f2]
+set log [bopcurves f1 f2 -2d]
#########################
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurv
+
+#This value must be equal to the analogical value in bug25292_21 and bug25292_22 of "bugs modalg_5" testgrid.
set MaxTol 1.e-7
+
+#This value must be equal to the analogical value in bug25292_21, bug25292_22, bug25292_25 and bug25292_26 of "bugs modalg_5" testgrid.
+set GoodNbCurv 2
+
if {${Toler} > ${MaxTol}} {
puts "Error: Tolerance is too big!"
}
-set GoodNbCurv 3
+
if {${NbCurv} != ${GoodNbCurv}} {
puts "Error: Curve Number is bad!"
}
#-------------
-# 1
-puts ""
-puts "First curve"
-
mksurface s1 f1
mksurface s2 f2
-dlog reset
-dlog on
-xdistcs c_1 s1 0 1 10
-set Log1 [dlog get]
-
-set List1 [split ${Log1} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List1} ${Tolerance} ${D_good}
-
-# 2
-puts ""
-puts "Second curve"
-
-dlog reset
-dlog on
-xdistcs c_2 s1 0 1 10
-set Log2 [dlog get]
-
-set List2 [split ${Log2} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List2} ${Tolerance} ${D_good}
-
-# 3
-puts ""
-puts "Third curve"
-
-dlog reset
-dlog on
-xdistcs c_3 s1 0 1 10
-set Log3 [dlog get]
-
-set List3 [split ${Log3} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List3} ${Tolerance} ${D_good}
-
+for {set i 1} {$i <= ${NbCurv}} {incr i} {
+ set log [dump c_$i]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+
+ puts "U1=${U1}"
+ puts "U2=${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs c_$i s1 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance 1.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs c_$i s2 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance 1.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
+}
smallview
fit
-puts "TODO OCC225404 Debian60-64 Windows: Error: Curve Number is bad!"
-
puts "================"
puts "OCC25292"
puts "================"
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+puts ""
+
# bopcurves command
restore [locate_data_file bug25292_Input_3.brep] b1
copy b2_1 f2
#########################
-set log [bopcurves f2 f1]
+set log [bopcurves f2 f1 -2d]
#########################
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurv
+
+#This value must be equal to the analogical value in bug25292_21 and bug25292_22 of "bugs modalg_5" testgrid.
set MaxTol 1.e-7
+
+#This value must be equal to the analogical value in bug25292_21, bug25292_22, bug25292_25 and bug25292_26 of "bugs modalg_5" testgrid.
+set GoodNbCurv 2
+
if {${Toler} > ${MaxTol}} {
puts "Error: Tolerance is too big!"
}
-set GoodNbCurv 3
+
if {${NbCurv} != ${GoodNbCurv}} {
puts "Error: Curve Number is bad!"
}
#-------------
-# 1
-puts ""
-puts "First curve"
-
mksurface s1 f1
mksurface s2 f2
-dlog reset
-dlog on
-xdistcs c_1 s1 0 1 10
-set Log1 [dlog get]
-
-set List1 [split ${Log1} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List1} ${Tolerance} ${D_good}
-
-# 2
-puts ""
-puts "Second curve"
-
-dlog reset
-dlog on
-xdistcs c_2 s1 0 1 10
-set Log2 [dlog get]
-
-set List2 [split ${Log2} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List2} ${Tolerance} ${D_good}
-
-# 3
-if { [info exist c_3] } {
-puts ""
-puts "Third curve"
-
-dlog reset
-dlog on
-xdistcs c_3 s1 0 1 10
-set Log3 [dlog get]
-
-set List3 [split ${Log3} {TD= \t\n}]
-set Tolerance 1.0e-7
-set D_good 0.
-checkList ${List3} ${Tolerance} ${D_good}
+for {set i 1} {$i <= ${NbCurv}} {incr i} {
+ set log [dump c_$i]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+
+ puts "U1=${U1}"
+ puts "U2=${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs c_$i s1 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance 1.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs c_$i s2 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance 1.0e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
}
-
smallview
fit
set only_screen_axo 1
bfillds
bbuild result
+#These values must be equal to the analogical values in bug25292_23 and bug25292_24 of "bugs modalg_5" testgrid.
set square 31.6797
-set nb_v_good 11
-set nb_e_good 20
+set nb_v_good 10
+set nb_e_good 19
set nb_w_good 13
set nb_f_good 13
set nb_sh_good 3
set nb_sol_good 3
set nb_compsol_good 0
set nb_compound_good 1
-set nb_shape_good 64
+set nb_shape_good 62
set 3dviewer 1
-puts "TODO OCC225404 Debian60-64 Windows: Error : Result shape is WRONG because it must contains 11 vertices instead of 10"
-puts "TODO OCC225404 Debian60-64 Windows: Error : Result shape is WRONG because it must contains 20 edges instead of 19"
-puts "TODO OCC225404 Debian60-64 Windows: Error : Result shape is WRONG because it must contains 64 shapes instead of 62"
-
-
puts "================"
puts "OCC25292"
puts "================"
bfillds
bbuild result
+#These values must be equal to the analogical values in bug25292_23 and bug25292_24 of "bugs modalg_5" testgrid.
set square 31.6797
-set nb_v_good 11
-set nb_e_good 20
+set nb_v_good 10
+set nb_e_good 19
set nb_w_good 13
set nb_f_good 13
set nb_sh_good 3
set nb_sol_good 3
set nb_compsol_good 0
set nb_compound_good 1
-set nb_shape_good 64
+set nb_shape_good 62
set 3dviewer 1
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+proc GetRange { curve } {
+ global U1
+ global U2
+
+ set log [uplevel dump $curve]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+}
+
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+
# intersect command
+#This value must be equal to the analogical value in bug25292_21, bug25292_22, bug25292_25 and bug25292_26 of "bugs modalg_5" testgrid.
+set GoodNbCurv 2
+
restore [locate_data_file bug25292_Input_3.brep] b1
restore [locate_data_file bug25292_Input_11.brep] b2
mksurface s2 f2
#################
-intersect i s1 s2
+intersect res s1 s2
#################
-if { [info exist i_3] } {
- puts "OK: Curve Number is good!"
+set che [whatis res]
+set ind [string first "3d curve" $che]
+if {${ind} >= 0} {
+ #Only variable "res" exists
+
+ if { $GoodNbCurv == 1 } {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
+
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.1e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res s2 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.1e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
} else {
- puts "Error: Curve Number is bad!"
+ set ic 1
+ set AllowRepeate 1
+ while { $AllowRepeate != 0 } {
+ set che [whatis res_$ic]
+ set ind [string first "3d curve" $che]
+ if {${ind} < 0} {
+ set AllowRepeate 0
+ } else {
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res_$ic
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.1e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s2 0 1 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.1e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ incr ic
+ }
+ }
+
+ if {[expr {$ic - 1}] == $GoodNbCurv} {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
}
+
-puts "TODO OCC225404 Debian60-64 Windows: Error: Curve Number is bad!"
-
puts "================"
puts "OCC25292"
puts "================"
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+proc GetRange { curve } {
+ global U1
+ global U2
+
+ set log [uplevel dump $curve]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+}
+
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+
# intersect command
+#This value must be equal to the analogical value in bug25292_21, bug25292_22, bug25292_25 and bug25292_26 of "bugs modalg_5" testgrid.
+set GoodNbCurv 2
+
restore [locate_data_file bug25292_Input_3.brep] b1
restore [locate_data_file bug25292_Input_11.brep] b2
mksurface s2 f2
#################
-intersect i s2 s1
+intersect res s2 s1
#################
-if { [info exist i_3] } {
- puts "OK: Curve Number is good!"
+set che [whatis res]
+set ind [string first "3d curve" $che]
+if {${ind} >= 0} {
+ #Only variable "res" exists
+
+ if { $GoodNbCurv == 1 } {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
+
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.1e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res s2 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.1e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
} else {
- puts "Error: Curve Number is bad!"
+ set ic 1
+ set AllowRepeate 1
+ while { $AllowRepeate != 0 } {
+ set che [whatis res_$ic]
+ set ind [string first "3d curve" $che]
+ if {${ind} < 0} {
+ set AllowRepeate 0
+ } else {
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res_$ic
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.1e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s2 0 1 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.1e-7
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ incr ic
+ }
+ }
+
+ if {[expr {$ic - 1}] == $GoodNbCurv} {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
}
-
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+puts ""
+
# bopcurves command
restore [locate_data_file bug25292_f1.brep] f1
#############################
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurv
-set MaxTol 1.e-3
+
+#This value must be equal to the analogical value in bug25292_31 and bug25292_32 of "bugs modalg_5" testgrid.
+set MaxTol 3.e-4
+
+#This value must be equal to the analogical value in bug25292_31 and bug25292_32 of "bugs modalg_5" testgrid.
+set GoodNbCurv 1
+
if {${Toler} > ${MaxTol}} {
puts "Error: Tolerance is too big!"
}
-set GoodNbCurv 2
if {${NbCurv} != ${GoodNbCurv}} {
puts "Error: Curve Number is bad!!"
}
#-------------
-# 1
-puts ""
-puts "First curve"
-
mksurface s1 f1
mksurface s2 f2
-dlog reset
-dlog on
-xdistcs c_1 s1 0 1 10
-set Log1 [dlog get]
+for {set i 1} {$i <= ${NbCurv}} {incr i} {
+ set log [dump c_$i]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
-set List1 [split ${Log1} {TD= \t\n}]
-set Tolerance 1.0e-4
-set D_good 0.
-checkList ${List1} ${Tolerance} ${D_good}
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
-# 2
-puts ""
-puts "Second curve"
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
-dlog reset
-dlog on
-xdistcs c_2 s1 0 1 10
-set Log2 [dlog get]
+ puts "U1=${U1}"
+ puts "U2=${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
-set List2 [split ${Log2} {TD= \t\n}]
-set Tolerance 1.0e-4
-set D_good 0.
-checkList ${List2} ${Tolerance} ${D_good}
+ dlog reset
+ dlog on
+ xdistcs c_$i s1 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance MaxTol
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
+ dlog reset
+ dlog on
+ xdistcs c_$i s2 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance MaxTol
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
+}
smallview
fit
+puts "TODO OCC25331 Debian60-64: Error: Tolerance is too big!"
+
puts "================"
puts "OCC25292"
puts "================"
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+puts ""
+
# bopcurves command
restore [locate_data_file bug25292_f1.brep] f1
#############################
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurv
-set MaxTol 1.e-3
+
+#This value must be equal to the analogical value in bug25292_31 and bug25292_32 of "bugs modalg_5" testgrid.
+set MaxTol 3.e-4
+
+#This value must be equal to the analogical value in bug25292_31 and bug25292_32 of "bugs modalg_5" testgrid.
+set GoodNbCurv 1
+
if {${Toler} > ${MaxTol}} {
puts "Error: Tolerance is too big!"
}
-set GoodNbCurv 2
if {${NbCurv} != ${GoodNbCurv}} {
puts "Error: Curve Number is bad!!"
}
#-------------
-# 1
-puts ""
-puts "First curve"
-
mksurface s1 f1
mksurface s2 f2
-dlog reset
-dlog on
-xdistcs c_1 s1 0 1 10
-set Log1 [dlog get]
+for {set i 1} {$i <= ${NbCurv}} {incr i} {
+ set log [dump c_$i]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
-set List1 [split ${Log1} {TD= \t\n}]
-set Tolerance 1.0e-4
-set D_good 0.
-checkList ${List1} ${Tolerance} ${D_good}
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
-# 2
-puts ""
-puts "Second curve"
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
-dlog reset
-dlog on
-xdistcs c_2 s1 0 1 10
-set Log2 [dlog get]
+ puts "U1=${U1}"
+ puts "U2=${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
-set List2 [split ${Log2} {TD= \t\n}]
-set Tolerance 1.0e-4
-set D_good 0.
-checkList ${List2} ${Tolerance} ${D_good}
+ dlog reset
+ dlog on
+ xdistcs c_$i s1 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance MaxTol
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
+ dlog reset
+ dlog on
+ xdistcs c_$i s2 ${U1} ${U2} 10
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance MaxTol
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
+}
smallview
fit
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+proc GetRange { curve } {
+ global U1
+ global U2
+
+ set log [uplevel dump $curve]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+}
+
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+
# intersect command
+#This value must be equal to the analogical value in bug25292_33 and bug25292_34 of "bugs modalg_5" testgrid.
+set GoodNbCurv 1
+
restore [locate_data_file bug25292_f1.brep] f1
restore [locate_data_file bug25292_f2.brep] f2
mksurface s2 f2
#################
-intersect i s1 s2
+intersect res s1 s2
#################
-if { [info exist i] } {
- puts "OK: Curve Number is good!"
+set che [whatis res]
+set ind [string first "3d curve" $che]
+if {${ind} >= 0} {
+ #Only variable "res" exists
+
+ if { $GoodNbCurv == 1 } {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
+
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.0e-6
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res s2 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.0e-6
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
} else {
- puts "Error: Curve Number is bad!"
+ set ic 1
+ set AllowRepeate 1
+ while { $AllowRepeate != 0 } {
+ set che [whatis res_$ic]
+ set ind [string first "3d curve" $che]
+ if {${ind} < 0} {
+ set AllowRepeate 0
+ } else {
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res_$ic
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.0e-6
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s2 0 1 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.0e-6
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ incr ic
+ }
+ }
+
+ if {[expr {$ic - 1}] == $GoodNbCurv} {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
}
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+proc GetRange { curve } {
+ global U1
+ global U2
+
+ set log [uplevel dump $curve]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+}
+
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+
# intersect command
+#This value must be equal to the analogical value in bug25292_33 and bug25292_34 of "bugs modalg_5" testgrid.
+set GoodNbCurv 1
+
restore [locate_data_file bug25292_f1.brep] f1
restore [locate_data_file bug25292_f2.brep] f2
mksurface s2 f2
#################
-intersect i s2 s1
+intersect res s2 s1
#################
-if { [info exist i] } {
- puts "OK: Curve Number is good!"
+set che [whatis res]
+set ind [string first "3d curve" $che]
+if {${ind} >= 0} {
+ #Only variable "res" exists
+
+ if { $GoodNbCurv == 1 } {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
+
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.0e-6
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res s2 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.0e-6
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
} else {
- puts "Error: Curve Number is bad!"
+ set ic 1
+ set AllowRepeate 1
+ while { $AllowRepeate != 0 } {
+ set che [whatis res_$ic]
+ set ind [string first "3d curve" $che]
+ if {${ind} < 0} {
+ set AllowRepeate 0
+ } else {
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res_$ic
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.0e-6
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s2 0 1 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 1.0e-6
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ incr ic
+ }
+ }
+
+ if {[expr {$ic - 1}] == $GoodNbCurv} {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
}
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+proc GetRange { curve } {
+ global U1
+ global U2
+
+ set log [uplevel dump $curve]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+}
+
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+puts ""
+
# intersect command for trimmed surfaces
+#This value must be equal to the analogical value in bug25292_35 and bug25292_36 of "bugs modalg_5" testgrid.
+set GoodNbCurv 2
+
restore [locate_data_file bug25292_f1.brep] f1
restore [locate_data_file bug25292_f2.brep] f2
trim s2t s2 0. 1.570796326795 -275 275
###################
-intersect k s1t s2t
+intersect res s1t s2t
###################
-if { [info exist k_2] } {
- puts "OK: Curve Number is good!"
+set che [whatis res]
+set ind [string first "3d curve" $che]
+if {${ind} >= 0} {
+ #Only variable "res" exists
+
+ if { $GoodNbCurv == 1 } {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
+
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-4
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res s2 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-4
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
} else {
- puts "Error: Curve Number is bad!"
+ set ic 1
+ set AllowRepeate 1
+ while { $AllowRepeate != 0 } {
+ set che [whatis res_$ic]
+ set ind [string first "3d curve" $che]
+ if {${ind} < 0} {
+ set AllowRepeate 0
+ } else {
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res_$ic
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-4
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s2 0 1 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-4
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ incr ic
+ }
+ }
+
+ if {[expr {$ic - 1}] == $GoodNbCurv} {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
}
# Face/Face intersection algorithm gives different results for different order of the arguments
#######################################################################
+proc GetRange { curve } {
+ global U1
+ global U2
+
+ set log [uplevel dump $curve]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+ puts "Degree=${Degree}"
+ puts "Poles=${Poles}"
+ puts "KnotsPoles=${KnotsPoles}"
+ puts ""
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+}
+
+puts "##############################"
+puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
+puts "##############################"
+puts ""
+puts ""
+
# intersect command for trimmed surfaces
+#This value must be equal to the analogical value in bug25292_35 and bug25292_36 of "bugs modalg_5" testgrid.
+set GoodNbCurv 2
+
restore [locate_data_file bug25292_f1.brep] f1
restore [locate_data_file bug25292_f2.brep] f2
trim s2t s2 0. 1.570796326795 -275 275
###################
-intersect k s2t s1t
+intersect res s2t s1t
###################
-if { [info exist k_2] } {
- puts "OK: Curve Number is good!"
+set che [whatis res]
+set ind [string first "3d curve" $che]
+if {${ind} >= 0} {
+ #Only variable "res" exists
+
+ if { $GoodNbCurv == 1 } {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
+
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-4
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res s2 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-4
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
} else {
- puts "Error: Curve Number is bad!"
+ set ic 1
+ set AllowRepeate 1
+ while { $AllowRepeate != 0 } {
+ set che [whatis res_$ic]
+ set ind [string first "3d curve" $che]
+ if {${ind} < 0} {
+ set AllowRepeate 0
+ } else {
+ set U1 0.0
+ set U2 0.0
+
+ GetRange res_$ic
+
+ puts "U1 = ${U1}"
+ puts "U2 = ${U2}"
+
+ if {[expr {$U2 - $U1}] < 1.0e-20} {
+ puts "Error: Wrong curve's range!"
+ }
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s1 ${U1} ${U2} 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-4
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ dlog reset
+ dlog on
+ xdistcs res_$ic s2 0 1 10
+ set Log1 [dlog get]
+ set List1 [split ${Log1} {TD= \t\n}]
+ set Tolerance 3.0e-4
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
+
+ incr ic
+ }
+ }
+
+ if {[expr {$ic - 1}] == $GoodNbCurv} {
+ puts "OK: Curve Number is good!"
+ } else {
+ puts "Error: Curve Number is bad!"
+ }
}
--- /dev/null
+puts "========"
+puts "OCC25465"
+puts "========"
+puts ""
+################################################
+# Excess vertex in the result of CUT operation
+################################################
+
+restore [locate_data_file OCC25465_Gorivo.brep] b1
+restore [locate_data_file OCC25465_Translation_1.brep] b2
+
+explode b1 f
+explode b2 f
+set bug_info [bopcurves b1_3 b2_4]
+bop b1 b2
+bopcut result
+
+# It is strictly forbidden to change nb_v_good and nb_e_good values (see OCC25465)
+set nb_v_good 11
+set nb_e_good 17
+set nb_w_good 8
+set nb_f_good 8
+set nb_sh_good 1
+set nb_sol_good 1
+set nb_compsol_good 0
+set nb_compound_good 1
+set nb_shape_good 47
+
+if {[lindex $bug_info 2] != 3} {
+ puts "ERROR: OCC25465 is reproduced."
+}
--- /dev/null
+puts "========"
+puts "OCC25465"
+puts "========"
+puts ""
+################################################
+# Excess vertex in the result of CUT operation
+################################################
+
+restore [locate_data_file OCC25465_t_boite1.brep] b1
+restore [locate_data_file OCC25465_c_cyl.brep] b2
+
+explode b1 f
+explode b2 f
+set bug_info [bopcurves b1_6 b2_1]
+bop b1 b2
+bopcut result
+
+# It is strictly forbidden to change nb_v_good and nb_e_good values (see OCC25465)
+set nb_v_good 13
+set nb_e_good 20
+set nb_w_good 11
+set nb_f_good 8
+set nb_sh_good 1
+set nb_sol_good 1
+set nb_compsol_good 0
+set nb_compound_good 1
+set nb_shape_good 55
+
+if {[lindex $bug_info 2] != 2} {
+ puts "ERROR: OCC25465 is reproduced."
+}