-// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include <iostream>
#include <fstream>
-#include <boost/make_shared.hpp>
+//#include <boost/make_shared.hpp>
+#include <boost/container/flat_set.hpp>
#if !defined WIN32 && !defined __APPLE__
#include <sys/sysinfo.h>
return found;
}
+//=======================================================================
+//function : SetAllNodesNotMarked
+//purpose : Clear marked flag of all nodes
+//=======================================================================
+
+void SMDS_Mesh::SetAllNodesNotMarked()
+{
+ myNodeFactory->SetAllNotMarked();
+}
+
+//=======================================================================
+//function : SetAllCellsNotMarked
+//purpose : Clear marked flag of all cells
+//=======================================================================
+
+void SMDS_Mesh::SetAllCellsNotMarked()
+{
+ myCellFactory->SetAllNotMarked();
+}
+
//=======================================================================
//function : ChangePolyhedronNodes
//purpose :
// keep current nodes of element
std::set<const SMDS_MeshNode*> oldNodes( element->begin_nodes(), element->end_nodes() );
- // change nodes
bool Ok = false;
+
+ // change vtkUnstructuredGrid::Faces
if ( const SMDS_MeshVolume* vol = DownCast<SMDS_MeshVolume>( element ))
Ok = vol->ChangeNodes( nodes, quantities );
+ // change vtkUnstructuredGrid::Connectivity and inverse connectivity
if ( Ok )
- {
- setMyModified();
- updateInverseElements( element, &nodes[0], nodes.size(), oldNodes );
- }
+ if ( SMDS_MeshCell* cell = dynamic_cast<SMDS_MeshCell*>((SMDS_MeshElement*) element))
+ {
+ boost::container::flat_set< const SMDS_MeshNode* > uniqueNodes( nodes.begin(), nodes.end() );
+ const SMDS_MeshNode** nodesPtr = &( *uniqueNodes.begin());
+ const int nbNodes = (int) uniqueNodes.size();
+ Ok = cell->ChangeNodes( nodesPtr, nbNodes );
+ if ( Ok )
+ {
+ updateInverseElements( element, nodesPtr, nbNodes, oldNodes );
+ setMyModified();
+ }
+ }
+
return Ok;
}