1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-29 14:00:49 +03:00

# Warning: Building 2D curve of edge on face has failed.

(cherry picked from commit d0d712265120631f5cc58c3d480492e79a6c5123)
This commit is contained in:
nbv
2018-04-11 12:23:29 +03:00
parent bf878e54e3
commit 9a49e2ce57
3 changed files with 43 additions and 0 deletions

View File

@@ -294,6 +294,8 @@ void BOPAlgo_PaveFiller::PerformInternal()
//
UpdateBlocksWithSharedVertices();
//
myDS->RefineFaceInfoIn();
//
MakeSplitEdges();
if (HasErrors()) {
return;

View File

@@ -1418,6 +1418,44 @@ void BOPDS_DS::RefineFaceInfoOn()
}
}
}
//=======================================================================
//function : RefineFaceInfoIn
//purpose :
//=======================================================================
void BOPDS_DS::RefineFaceInfoIn()
{
for (Standard_Integer i = 0; i < myNbSourceShapes; ++i)
{
const BOPDS_ShapeInfo& aSI = ShapeInfo(i);
if (aSI.ShapeType() != TopAbs_FACE)
continue;
if (!aSI.HasReference())
continue;
BOPDS_FaceInfo& aFI = ChangeFaceInfo(i);
const BOPDS_IndexedMapOfPaveBlock& aMPBOn = aFI.PaveBlocksOn();
BOPDS_IndexedMapOfPaveBlock& aMPBIn = aFI.ChangePaveBlocksIn();
if (aMPBIn.IsEmpty() || aMPBOn.IsEmpty())
continue;
BOPDS_IndexedMapOfPaveBlock aMPBInNew;
const Standard_Integer aNbPBIn = aMPBIn.Extent();
for (Standard_Integer j = 1; j <= aNbPBIn; ++j)
{
if (!aMPBOn.Contains(aMPBIn(j)))
aMPBInNew.Add(aMPBIn(j));
}
if (aMPBInNew.Extent() < aNbPBIn)
aMPBIn = aMPBInNew;
}
}
//=======================================================================
//function : AloneVertices
//purpose :

View File

@@ -302,6 +302,9 @@ Standard_EXPORT virtual ~BOPDS_DS();
//! ++
Standard_EXPORT void RefineFaceInfoOn();
//! Removes faces with state ON from the
//! list of IN-faces
Standard_EXPORT void RefineFaceInfoIn();
//! Returns information about ON/IN subshapes of the given faces.
//! @param theMVOnIn the indices of ON/IN vertices from both faces