this->myGrid->GetCellTypesArray()->SetValue(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myVolumePool->destroy(volvtk); - return 0; - } -@@ -1307,7 +1336,11 @@ SMDS_Mesh::AddPolygonalFaceWithID (const vector & nodes, - facevtk->initPoly(myNodeIds, this); - if (!this->registerElement(ID,facevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myFacePool->destroy(facevtk); - return 0; - } -@@ -1372,7 +1405,11 @@ SMDS_Mesh::AddQuadPolygonalFaceWithID (const vector & node - facevtk->initQuadPoly(myNodeIds, this); - if (!this->registerElement(ID,facevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myFacePool->destroy(facevtk); - return 0; - } -@@ -1452,7 +1489,11 @@ SMDS_Mesh::AddPolyhedralVolumeWithID (const vector& nodes, - volvtk->initPoly(myNodeIds, quantities, this); - if (!this->registerElement(ID, volvtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myVolumePool->destroy(volvtk); - return 0; - } -@@ -1508,7 +1549,11 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeFromVtkIdsWithID(const std::vectorinit(vtkNodeIds, this); - if (!this->registerElement(ID,volvtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myVolumePool->destroy(volvtk); - return 0; - } -@@ -1567,7 +1612,11 @@ SMDS_MeshFace* SMDS_Mesh::AddFaceFromVtkIdsWithID(const std::vector& - facevtk->init(vtkNodeIds, this); - if (!this->registerElement(ID,facevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myFacePool->destroy(facevtk); - return 0; - } -@@ -1715,7 +1764,11 @@ SMDS_MeshFace * SMDS_Mesh::createTriangle(const SMDS_MeshNode * node1, - facevtk->init(myNodeIds, this); // put in vtkUnstructuredGrid - if (!this->registerElement(ID,facevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myFacePool->destroy(facevtk); - return 0; - } -@@ -1769,7 +1822,11 @@ SMDS_MeshFace * SMDS_Mesh::createQuadrangle(const SMDS_MeshNode * node1, - facevtk->init(myNodeIds, this); - if (!this->registerElement(ID,facevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myFacePool->destroy(facevtk); - return 0; - } -@@ -2100,7 +2157,11 @@ SMDS_MeshEdge* SMDS_Mesh::FindEdgeOrCreate(const SMDS_MeshNode * node1, - edgevtk->init(myNodeIds, this); - if (!this->registerElement(ID,edgevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(edgevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(edgevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myEdgePool->destroy(edgevtk); - return 0; - } -@@ -3311,7 +3372,11 @@ void SMDS_Mesh::RemoveElement(const SMDS_MeshElement * elem, - if (vtkid >= 0) - { - //MESSAGE("VTK_EMPTY_CELL in " << vtkid); -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(vtkid, VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(vtkid, VTK_EMPTY_CELL); -+#endif - } - it++; - } -@@ -3416,7 +3481,11 @@ void SMDS_Mesh::RemoveFreeElement(const SMDS_MeshElement * elem) - } - myElementIDFactory->ReleaseID(elemId, vtkId); - -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(vtkId, VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(vtkId, VTK_EMPTY_CELL); -+#endif - // --- to do: keep vtkid in a list of reusable cells - } - } -@@ -3598,7 +3667,11 @@ SMDS_MeshEdge* SMDS_Mesh::AddEdgeWithID(const SMDS_MeshNode * n1, - edgevtk->init(myNodeIds, this); - if (!this->registerElement(ID,edgevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(edgevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(edgevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myEdgePool->destroy(edgevtk); - return 0; - } -@@ -3681,7 +3754,11 @@ SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1, - facevtk->init(myNodeIds, this); - if (!this->registerElement(ID,facevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myFacePool->destroy(facevtk); - return 0; - } -@@ -3768,7 +3845,11 @@ SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1, - facevtk->init(myNodeIds, this); - if (!this->registerElement(ID,facevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myFacePool->destroy(facevtk); - return 0; - } -@@ -3859,7 +3940,11 @@ SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1, - facevtk->init(myNodeIds, this); - if (!this->registerElement(ID,facevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myFacePool->destroy(facevtk); - return 0; - } -@@ -3953,7 +4038,11 @@ SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1, - facevtk->init(myNodeIds, this); - if (!this->registerElement(ID,facevtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(facevtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myFacePool->destroy(facevtk); - return 0; - } -@@ -4056,7 +4145,11 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1, - volvtk->init(myNodeIds, this); - if (!this->registerElement(ID,volvtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myVolumePool->destroy(volvtk); - return 0; - } -@@ -4171,7 +4264,11 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1, - volvtk->init(myNodeIds, this); - if (!this->registerElement(ID,volvtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myVolumePool->destroy(volvtk); - return 0; - } -@@ -4298,7 +4395,11 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1, - volvtk->init(myNodeIds, this); - if (!this->registerElement(ID,volvtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myVolumePool->destroy(volvtk); - return 0; - } -@@ -4445,7 +4546,11 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1, - volvtk->init(myNodeIds, this); - if (!this->registerElement(ID,volvtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myVolumePool->destroy(volvtk); - return 0; - } -@@ -4625,7 +4730,11 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1, - volvtk->init(myNodeIds, this); - if (!this->registerElement(ID,volvtk)) - { -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 5, 20251004) -+ this->myGrid->GetCellTypes()->SetTuple1(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#else - this->myGrid->GetCellTypesArray()->SetValue(volvtk->getVtkId(), VTK_EMPTY_CELL); -+#endif - myVolumePool->destroy(volvtk); - return 0; - } -@@ -4712,14 +4821,10 @@ void SMDS_Mesh::dumpGrid(string ficdump) - ficcon << endl; - } - ficcon << "-------------------------------- connectivity " << nbPoints << endl; --#ifdef VTK_CELL_ARRAY_V2 -- #if VTK_VERSION_NUMBER_QUICK >= 90300000000 -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 2, 20221112) - vtkCellLinks *links = static_cast(myGrid->GetLinks()); -- #else -- vtkCellLinks *links = static_cast(myGrid->GetCellLinks()); -- #endif - #else -- vtkCellLinks *links = myGrid->GetCellLinks(); -+ vtkCellLinks *links = static_cast(myGrid->GetCellLinks()); - #endif - for (int i=0; igetGrid(); --#ifdef VTK_CELL_ARRAY_V2 - vtkNew cellPoints; - grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); - if (nbNodes != cellPoints->GetNumberOfIds()) -@@ -156,18 +155,6 @@ bool SMDS_Mesh0DElement::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbN - } - myNode = nodes[0]; - cellPoints->SetId(0, myNode->getVtkId()); --#else -- vtkIdType npts = 0; -- vtkIdType* pts = 0; -- grid->GetCellPoints(myVtkID, npts, pts); -- if (nbNodes != npts) -- { -- MESSAGE("ChangeNodes problem: not the same number of nodes " << npts << " -> " << nbNodes); -- return false; -- } -- myNode = nodes[0]; -- pts[0] = myNode->getVtkId(); --#endif - - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp -index f5fc373f5d..420c3a9baf 100644 ---- src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp -+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp -@@ -31,6 +31,7 @@ - #include "SMDS_IteratorOfElements.hxx" - #include "SMDS_Mesh.hxx" - #include -+#include - - #include "utilities.h" - #include "Utils_SALOME_Exception.hxx" -@@ -69,7 +70,7 @@ void SMDS_MeshNode::init(int id, int meshId, int shapeId, double x, double y, do - SMDS_UnstructuredGrid * grid = mesh->getGrid(); - vtkPoints *points = grid->GetPoints(); - points->InsertPoint(myVtkID, x, y, z); --#if VTK_VERSION_NUMBER_QUICK >= 90300000000 -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 2, 20221112) - SMDS_CellLinks *cellLinks = dynamic_cast(grid->GetLinks()); - #else - SMDS_CellLinks *cellLinks = dynamic_cast(grid->GetCellLinks()); -@@ -195,7 +196,7 @@ public: - SMDS_ElemIteratorPtr SMDS_MeshNode:: - GetInverseElementIterator(SMDSAbs_ElementType type) const - { --#if VTK_VERSION_NUMBER_QUICK >= 90300000000 -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 2, 20221112) - vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetLinks())->GetLink(myVtkID); - #else - vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); -@@ -259,7 +260,7 @@ elementsIterator(SMDSAbs_ElementType type) const - return SMDS_MeshElement::elementsIterator(SMDSAbs_Node); - else - { --#if VTK_VERSION_NUMBER_QUICK >= 90300000000 -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 2, 20221112) - vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetLinks())->GetLink(myVtkID); - #else - vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); -@@ -362,7 +363,7 @@ void SMDS_MeshNode::AddInverseElement(const SMDS_MeshElement* ME) - const SMDS_MeshCell *cell = dynamic_cast (ME); - assert(cell); - SMDS_UnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); --#if VTK_VERSION_NUMBER_QUICK >= 90300000000 -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 2, 20221112) - vtkCellLinks *Links = static_cast(grid->GetLinks()); - #else - vtkCellLinks *Links = static_cast(grid->GetCellLinks()); -@@ -382,7 +383,7 @@ void SMDS_MeshNode::ClearInverseElements() - - bool SMDS_MeshNode::emptyInverseElements() - { --#if VTK_VERSION_NUMBER_QUICK >= 90300000000 -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 2, 20221112) - vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetLinks())->GetLink(myVtkID); - #else - vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); -@@ -398,7 +399,7 @@ bool SMDS_MeshNode::emptyInverseElements() - - int SMDS_MeshNode::NbInverseElements(SMDSAbs_ElementType type) const - { --#if VTK_VERSION_NUMBER_QUICK >= 90300000000 -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 2, 20221112) - vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetLinks())->GetLink(myVtkID); - #else - vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp -index 4e9d6dc057..f5b91ff800 100644 ---- src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp -+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp -@@ -193,8 +193,8 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n - - vtkCellArray *newConnectivity = vtkCellArray::New(); - newConnectivity->Initialize(); -- int oldCellDataSize = this->Connectivity->GetData()->GetSize(); -- newConnectivity->Allocate(oldCellDataSize); -+ int oldCellDataSize = this->GetCells()->GetConnectivityArray()->GetSize(); -+ newConnectivity->AllocateExact(oldCellDataSize, oldCellDataSize); - MESSAGE("oldCellSize="<< oldCellSize << " oldCellDataSize=" << oldCellDataSize); - - vtkUnsignedCharArray *newTypes = vtkUnsignedCharArray::New(); -@@ -214,11 +214,11 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n - while ( i < oldCellSize ) - { - // skip a hole if any -- while ( i < oldCellSize && this->Types->GetValue(i) == VTK_EMPTY_CELL ) -+ while ( i < oldCellSize && this->GetCellType(i) == VTK_EMPTY_CELL ) - ++i; - int startBloc = i; - // look for a block end -- while ( i < oldCellSize && this->Types->GetValue(i) != VTK_EMPTY_CELL ) -+ while ( i < oldCellSize && this->GetCellType(i) != VTK_EMPTY_CELL ) - ++i; - int endBloc = i; - if ( endBloc > startBloc ) -@@ -242,7 +242,7 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n - { - for (int oldCellID = 0; oldCellID < oldCellSize; oldCellID++) - { -- if (this->Types->GetValue(oldCellID) == VTK_EMPTY_CELL) -+ if (this->GetCellType(oldCellID) == VTK_EMPTY_CELL) - continue; - int newCellId = idCellsOldToNew[ oldCellID ]; - if (newTypes->GetValue(newCellId) == VTK_POLY_VERTEX) -@@ -250,6 +250,71 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n - } - } - -+#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 3, 20240112) -+ if ( this->FaceLocations ) -+ { -+ vtkIdTypeArray *iniFaceLocO = (vtkIdTypeArray *)this->FaceLocations->GetOffsetsArray(); -+ vtkIdTypeArray *iniFaceLocC = (vtkIdTypeArray *)this->FaceLocations->GetConnectivityArray(); -+ vtkIdTypeArray *iniFaceO = (vtkIdTypeArray *)this->Faces->GetOffsetsArray(); -+ vtkIdTypeArray *iniFaceC = (vtkIdTypeArray *)this->Faces->GetConnectivityArray(); -+ // -+ vtkNew facesLoc_o; facesLoc_o->Initialize(); facesLoc_o->InsertNextValue(0); -+ vtkNew facesLoc_c; facesLoc_c->Initialize(); -+ vtkNew faces_o; faces_o->Initialize(); faces_o->InsertNextValue(0); -+ vtkNew faces_c; faces_c->Initialize(); -+ int newFaceId( 0 ); -+ vtkIdType facesLoc_o_cur(0),faces_o_cur(0); -+ // for ( vtkIdType newCellID = 0; newCellID < newCellSize; newCellID++ ) -+ for (int oldCellId = 0; oldCellId < oldCellSize; oldCellId++) -+ { -+ int newCellId = idCellsOldToNew[oldCellId]; -+ if ( this->GetCellType(newCellId) == VTK_POLYHEDRON ) -+ { -+ vtkIdType oldStartFaceLocOff = iniFaceLocO->GetValue( oldCellId ); -+ vtkIdType nCellFaces = iniFaceLocO->GetValue( oldCellId + 1 ) - oldStartFaceLocOff; -+ facesLoc_o_cur += nCellFaces; -+ facesLoc_o->InsertNextValue( facesLoc_o_cur ); -+ for ( int n = 0; n < nCellFaces; n++ ) -+ { -+ facesLoc_c->InsertNextValue( newFaceId++ ); -+ int curFaceId = iniFaceLocC->GetValue( oldStartFaceLocOff + n ); -+ int oldStartPtOfFaceOff = iniFaceO->GetValue( curFaceId ); -+ int nbOfPts = iniFaceO->GetValue( curFaceId + 1 ) - oldStartPtOfFaceOff; -+ faces_o_cur += nbOfPts; -+ faces_o->InsertNextValue( faces_o_cur ); -+ for( int m = 0 ; m < nbOfPts ; m++ ) -+ { -+ vtkIdType oldpt = iniFaceC->GetValue( oldStartPtOfFaceOff + m ); -+ int curPt = idNodesOldToNew[ oldpt ]; -+ faces_c->InsertNextValue( curPt ); -+ } -+ } -+ } -+ else -+ { -+ facesLoc_o->InsertNextValue(facesLoc_o_cur); -+ } -+ } -+ { -+ faces_o->Squeeze(); faces_c->Squeeze(); -+ facesLoc_o->Squeeze(); facesLoc_c->Squeeze(); -+ // -+ vtkNew outFaces; -+ outFaces->SetData( faces_o, faces_c ); -+ vtkNew outFaceLocations; -+ outFaceLocations->SetData( facesLoc_o, facesLoc_c ); -+ // -+ this->SetPolyhedralCells(newTypes, newConnectivity, outFaceLocations, outFaces); -+ } -+ } -+ else -+ { -+ { -+ this->SetCells(newTypes,newConnectivity); -+ } -+ //this->CellLocations = newLocations; -+ } -+#else - vtkIdTypeArray* thisFaceLocations = GetFaceLocations(); - vtkIdTypeArray* thisFaces = GetFaces(); - if (thisFaceLocations) -@@ -262,7 +327,7 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n - newFaces->Allocate(thisFaces->GetSize()); - for (int i = 0; i < oldCellSize; i++) - { -- if (this->Types->GetValue(i) == VTK_EMPTY_CELL) -+ if (this->GetCellType(i) == VTK_EMPTY_CELL) - continue; - int newCellId = idCellsOldToNew[i]; - if (newTypes->GetValue(newCellId) == VTK_POLYHEDRON) -@@ -297,6 +362,7 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n - { - this->SetCells(newTypes, newLocations, newConnectivity, thisFaceLocations, thisFaces); - } -+#endif - - newPoints->Delete(); - newTypes->Delete(); -@@ -333,7 +399,7 @@ void SMDS_UnstructuredGrid::copyBloc(vtkUnsignedCharArray *newTypes, - //MESSAGE("copyBloc " << alreadyCopied << " " << start << " " << end << " size: " << end - start << " total: " << alreadyCopied + end - start); - for (int j = start; j < end; j++) - { -- newTypes->SetValue(alreadyCopied, this->Types->GetValue(j)); -+ newTypes->SetValue(alreadyCopied, this->GetCellType(j)); - idCellsOldToNew[j] = alreadyCopied; // old vtkId --> new vtkId - // The difference is mainly the internal representation of vtkCellArray between vtk 7.x and vtk 9.x - // In the old version a single array of the form (n1,id1,id2,...,idn1, n2,id1,id2,...,idn2, ...) is used -@@ -341,16 +407,12 @@ void SMDS_UnstructuredGrid::copyBloc(vtkUnsignedCharArray *newTypes, - // (n1,n2,n3) and (id1,id2,...,idn1,id1,id2,...,idn2, ...) - // The Locations array in vtk 7.x kept the positions of the n's of the above array: (0, idn1 + 1, idn2 + 2). - // In vtk 9.x this array doesn't exist any more but its values can be determined with idni + i --#ifdef VTK_CELL_ARRAY_V2 - vtkIdType oldLoc = ((vtkIdTypeArray *)(this->Connectivity->GetOffsetsArray()))->GetValue( j ) + j; --#else -- vtkIdType oldLoc = this->Locations->GetValue(j); --#endif - vtkIdType nbpts; - vtkIdTypePtr oldPtsCell = 0; - this->Connectivity->GetCell(oldLoc, nbpts, oldPtsCell); - assert(nbpts < NBMAXNODESINCELL); -- //MESSAGE(j << " " << alreadyCopied << " " << (int)this->Types->GetValue(j) << " " << oldLoc << " " << nbpts ); -+ //MESSAGE(j << " " << alreadyCopied << " " << (int)this->GetCellType(j) << " " << oldLoc << " " << nbpts ); - for (int l = 0; l < nbpts; l++) - { - int oldval = oldPtsCell[l]; -@@ -358,7 +420,8 @@ void SMDS_UnstructuredGrid::copyBloc(vtkUnsignedCharArray *newTypes, - //MESSAGE(" " << oldval << " " << pointsCell[l]); - } - /*int newcnt = */newConnectivity->InsertNextCell(nbpts, pointsCell); -- int newLoc = newConnectivity->GetInsertLocation(nbpts); -+ int newLoc = this->GetCells()->GetOffsetsArray()->GetNumberOfValues() - 1 -+ + this->GetCells()->GetConnectivityArray()->GetNumberOfValues() - nbpts - 1; - //MESSAGE(newcnt << " " << newLoc); - newLocations->SetValue(alreadyCopied, newLoc); - alreadyCopied++; -@@ -965,7 +1028,6 @@ void SMDS_UnstructuredGrid::GetNodeIds(std::set& nodeSet, int downId, unsig - */ - void SMDS_UnstructuredGrid::ModifyCellNodes(int vtkVolId, std::map localClonedNodeIds) - { --#ifdef VTK_CELL_ARRAY_V2 - vtkNew cellPoints; - this->GetCellPoints(vtkVolId, cellPoints.GetPointer()); - for (vtkIdType i = 0; i < cellPoints->GetNumberOfIds(); i++) -@@ -979,22 +1041,6 @@ void SMDS_UnstructuredGrid::ModifyCellNodes(int vtkVolId, std::map loc - //this->AddReferenceToCell(pts[i], vtkVolId); - } - } --#else -- vtkIdType npts = 0; -- vtkIdType *pts; // will refer to the point id's of the face -- this->GetCellPoints(vtkVolId, npts, pts); -- for (int i = 0; i < npts; i++) -- { -- if (localClonedNodeIds.count(pts[i])) -- { -- vtkIdType oldpt = pts[i]; -- pts[i] = localClonedNodeIds[oldpt]; -- //MESSAGE(oldpt << " --> " << pts[i]); -- //this->RemoveReferenceToCell(oldpt, vtkVolId); -- //this->AddReferenceToCell(pts[i], vtkVolId); -- } -- } --#endif - } - - /*! reorder the nodes of a face -@@ -1024,25 +1070,17 @@ void SMDS_UnstructuredGrid::BuildLinks() - this->Links->UnRegister(this); - } - --#ifdef VTK_CELL_ARRAY_V2 - this->Links = SMDS_CellLinks::New(); - GetLinks()->Allocate(this->GetNumberOfPoints()); - GetLinks()->Register(this); --//FIXME: vtk9 -- #if VTK_VERSION_NUMBER < VTK_VERSION_CHECK(9,3,0) -+#if VTK_VERSION_NUMBER < VTK_VERSION_CHECK(9, 2, 20221112) - GetLinks()->BuildLinks(this); -- #else -+#else - GetLinks()->SetDataSet(this); -+ std::cout << this->GetNumberOfPoints() << std::endl; - GetLinks()->BuildLinks(); -- #endif -- GetLinks()->Delete(); --#else -- this->Links = SMDS_CellLinks::New(); -- this->Links->Allocate(this->GetNumberOfPoints()); -- this->Links->Register(this); -- this->Links->BuildLinks(this, this->Connectivity); -- this->Links->Delete(); - #endif -+ GetLinks()->Delete(); - } - - /*! Create a volume (prism or hexahedron) by duplication of a face. -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp -index 63b6eabb70..acbb8f57c3 100644 ---- src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp -+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp -@@ -182,9 +182,10 @@ SMDS_VtkCellIteratorPolyH::SMDS_VtkCellIteratorPolyH(SMDS_Mesh* mesh, int vtkCel - case SMDSEntity_Polyhedra: - { - //MESSAGE("SMDS_VtkCellIterator Polyhedra"); -- vtkIdType nFaces = 0; -- vtkIdTypePtr ptIds = 0; -- grid->GetFaceStream(_cellId, nFaces, ptIds); -+ vtkNew faceStream; -+ grid->GetFaceStream( vtkCellId, faceStream); -+ vtkIdType nFaces = faceStream->GetId(0); -+ vtkIdType *ptIds = faceStream->GetPointer(1); - int id = 0; - _nbNodesInFaces = 0; - for (int i = 0; i < nFaces; i++) -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp -index 6d772a3cd4..d36e020492 100644 ---- src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp -+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp -@@ -67,7 +67,6 @@ bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode * node1, const SMDS_MeshNode - bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); *** 313 LINES SKIPPED ***