diff --git a/src/ModelingAlgorithms/TKMesh/BRepMesh/BRepMesh_Delaun.cxx b/src/ModelingAlgorithms/TKMesh/BRepMesh/BRepMesh_Delaun.cxx
index 816177178d..faaa1abff7 100644
--- a/src/ModelingAlgorithms/TKMesh/BRepMesh/BRepMesh_Delaun.cxx
+++ b/src/ModelingAlgorithms/TKMesh/BRepMesh/BRepMesh_Delaun.cxx
@@ -142,19 +142,6 @@ public:
private:
NCollection_LinearVector myFrames; // Container of frames.
};
-
-//! Returns a snapshot of the neighbor link ids of the given node.
-NCollection_Array1 getSnapshotsOfNeighborLinkIds(
- const IMeshData::ListOfInteger& theNeighborLinkIds)
-{
- NCollection_Array1 aNeighborLinkIdsArray(theNeighborLinkIds.Size());
- size_t anIndex = 0;
- for (const auto& aLinkId : theNeighborLinkIds)
- {
- aNeighborLinkIdsArray.ChangeAt(anIndex++) = aLinkId;
- }
- return aNeighborLinkIdsArray;
-}
} // anonymous namespace
//=================================================================================================
@@ -1556,24 +1543,18 @@ void BRepMesh_Delaun::killTrianglesAroundVertex(
IMeshData::MapOfIntegerInteger& theLoopEdges,
IMeshData::VectorOfInteger& theVictimNodes)
{
- // Snapshot the neighbor link ids before iterating
- const NCollection_Array1 aNeighborLinkIdsArray =
- getSnapshotsOfNeighborLinkIds(myMeshData->LinksConnectedTo(theZombieNodeId));
+ IMeshData::ListOfInteger::Iterator aNeighborsIt = myMeshData->LinksConnectedTo(theZombieNodeId);
// Try to infect neighbor nodes
- for (const int aNeighborLinkId : aNeighborLinkIdsArray)
+ for (; aNeighborsIt.More(); aNeighborsIt.Next())
{
+ const int& aNeighborLinkId = aNeighborsIt.Value();
if (theSurvivedLinks.Contains(aNeighborLinkId))
{
continue;
}
const BRepMesh_Edge& aNeighborLink = GetEdge(aNeighborLinkId);
- if (aNeighborLink.Movability() == BRepMesh_Deleted)
- {
- continue;
- }
-
if (aNeighborLink.Movability() == BRepMesh_Frontier)
{
// Though, if it lies onto the polygon boundary -
@@ -1702,19 +1683,13 @@ void BRepMesh_Delaun::killTrianglesOnIntersectingLinks(
killLinkTriangles(theLinkToCheckId, theLoopEdges);
- // Snapshot the neighbor link ids before iterating
- const NCollection_Array1 aNeighborLinkIds =
- getSnapshotsOfNeighborLinkIds(myMeshData->LinksConnectedTo(theEndPoint));
+ IMeshData::ListOfInteger::Iterator aNeighborsIt(myMeshData->LinksConnectedTo(theEndPoint));
- for (const int aNeighborLinkId : aNeighborLinkIds)
+ for (; aNeighborsIt.More(); aNeighborsIt.Next())
{
- const BRepMesh_Edge& aNeighborLink = GetEdge(aNeighborLinkId);
- if (aNeighborLink.Movability() == BRepMesh_Deleted)
- {
- continue;
- }
-
- int anOtherNode = aNeighborLink.FirstNode();
+ const int& aNeighborLinkId = aNeighborsIt.Value();
+ const BRepMesh_Edge& aNeighborLink = GetEdge(aNeighborLinkId);
+ int anOtherNode = aNeighborLink.FirstNode();
if (anOtherNode == theEndPoint)
{
anOtherNode = aNeighborLink.LastNode();