1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0026132: Invalid result of boolean operation

1. The procedures for check of coincidence between Edge-Edge and Edge-Face have been added. These methods are used instead of searching interferences between corresponding sub-shapes. In most cases (including case for this issue), new methods are more reliable and faster than intersections. However, its use should be avoided in case when the edge is not coincide with edge/face of another argument evidently (e.g. if edge vertices are not in another edge/face).

2. Interface of both IntTools_EdgeFace and IntTools_EdgeEdge has been changed (adding/deleted some field and methods).

Some test cases have been corrected in accordance with their new behavior.
Test case for issue CR26132.
This commit is contained in:
nbv
2016-01-19 14:05:25 +03:00
committed by abv
parent 26ca3bd549
commit 6dc83e21b2
12 changed files with 274 additions and 545 deletions

View File

@@ -201,7 +201,7 @@ void ApproxInt_KnotTools::ComputeKnotInds(const NCollection_LocalArray<Standard_
theInds.Append(aCurv.Upper());
}
#if defined(APPROXINT_KNOTTOOLS_DEBUG) || defined(OCCT_DEBUG)
#if defined(APPROXINT_KNOTTOOLS_DEBUG)
{
cout << "Feature indices new: " << endl;
i;
@@ -597,7 +597,7 @@ void ApproxInt_KnotTools::BuildKnots(const TColgp_Array1OfPnt& thePntsXYZ,
// II: Build draft knot sequence.
ComputeKnotInds(aCoords, aDim, thePars, aKnots);
#if defined(APPROXINT_KNOTTOOLS_DEBUG) || defined(OCCT_DEBUG)
#if defined(APPROXINT_KNOTTOOLS_DEBUG)
cout << "Draft knot sequence: " << endl;
for(i = aKnots.Lower(); i <= aKnots.Upper(); ++i)
{
@@ -608,7 +608,7 @@ void ApproxInt_KnotTools::BuildKnots(const TColgp_Array1OfPnt& thePntsXYZ,
// III: Build output knot sequence.
FilterKnots(aKnots, theMinNbPnts, theKnots);
#if defined(APPROXINT_KNOTTOOLS_DEBUG) || defined(OCCT_DEBUG)
#if defined(APPROXINT_KNOTTOOLS_DEBUG)
cout << "Result knot sequence: " << endl;
for(i = theKnots.Lower(); i <= theKnots.Upper(); ++i)
{