+//=======================================================================
+//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 :
+//=======================================================================
+
+bool SMDS_Mesh::ChangePolyhedronNodes(const SMDS_MeshElement * element,
+ const std::vector<const SMDS_MeshNode*>& nodes,
+ const std::vector<int>& quantities)
+{
+ // keep current nodes of element
+ std::set<const SMDS_MeshNode*> oldNodes( element->begin_nodes(), element->end_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 )
+ 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;
+}
+