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();