From 3d2b7dc9c7ac898b30fe469b7cbd424ed1bca0a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= <1289205+lahwaacz@users.noreply.github.com> Date: Fri, 27 Jun 2025 22:57:09 +0200 Subject: [PATCH] Use vtkUnstructuredGrid::GetLinks instead of vtkUnstructuredGrid::GetCellLinks for VTK >= 9.3 The vtkUnstructuredGrid::GetCellLinks has been deprecated in VTK 9.3 and silently removed in 9.5: https://gitlab.kitware.com/vtk/vtk/-/blob/master/Documentation/release/9.3.md --- .../salomesmesh/inc/SMDS_UnstructuredGrid.hxx | 4 ++++ .../salomesmesh/src/SMDS/SMDS_Mesh.cpp | 4 ++++ .../salomesmesh/src/SMDS/SMDS_MeshNode.cpp | 24 +++++++++++++++++++ .../src/SMESH/SMESH_MeshEditor.cpp | 8 +++++++ 4 files changed, 40 insertions(+) diff --git a/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx b/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx index 77465814541e..f02337cf52af 100644 --- a/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx +++ b/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx @@ -96,7 +96,11 @@ public: vtkCellLinks* GetLinks() { #ifdef VTK_CELL_ARRAY_V2 + #if VTK_VERSION_NUMBER_QUICK >= 90300000000 + return static_cast(vtkUnstructuredGrid::GetLinks()); + #else return static_cast(GetCellLinks()); + #endif #else return Links; #endif diff --git a/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp index a987e05058f0..baa6eadc9319 100644 --- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp +++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp @@ -4713,7 +4713,11 @@ void SMDS_Mesh::dumpGrid(string ficdump) } ficcon << "-------------------------------- connectivity " << nbPoints << endl; #ifdef VTK_CELL_ARRAY_V2 + #if VTK_VERSION_NUMBER_QUICK >= 90300000000 + vtkCellLinks *links = static_cast(myGrid->GetLinks()); + #else vtkCellLinks *links = static_cast(myGrid->GetCellLinks()); + #endif #else vtkCellLinks *links = myGrid->GetCellLinks(); #endif diff --git a/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp index 7b8e7ae763e5..f5fc373f5dff 100644 --- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp +++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp @@ -69,7 +69,11 @@ 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 + SMDS_CellLinks *cellLinks = dynamic_cast(grid->GetLinks()); +#else SMDS_CellLinks *cellLinks = dynamic_cast(grid->GetCellLinks()); +#endif assert(cellLinks); cellLinks->ResizeForPoint( myVtkID ); } @@ -191,7 +195,11 @@ class SMDS_MeshNode_MyInvIterator: public SMDS_ElemIterator SMDS_ElemIteratorPtr SMDS_MeshNode:: GetInverseElementIterator(SMDSAbs_ElementType type) const { +#if VTK_VERSION_NUMBER_QUICK >= 90300000000 + 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); +#endif //MESSAGE("myID " << myID << " ncells " << l.ncells); return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyInvIterator(SMDS_Mesh::_meshList[myMeshId], l.cells, l.ncells, type)); } @@ -251,7 +259,11 @@ elementsIterator(SMDSAbs_ElementType type) const return SMDS_MeshElement::elementsIterator(SMDSAbs_Node); else { +#if VTK_VERSION_NUMBER_QUICK >= 90300000000 + 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); +#endif return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyIterator(SMDS_Mesh::_meshList[myMeshId], l.cells, l.ncells, type)); } } @@ -350,7 +362,11 @@ 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 + vtkCellLinks *Links = static_cast(grid->GetLinks()); +#else vtkCellLinks *Links = static_cast(grid->GetCellLinks()); +#endif Links->ResizeCellList(myVtkID, 1); Links->AddCellReference(cell->getVtkId(), myVtkID); } @@ -366,7 +382,11 @@ void SMDS_MeshNode::ClearInverseElements() bool SMDS_MeshNode::emptyInverseElements() { +#if VTK_VERSION_NUMBER_QUICK >= 90300000000 + 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); +#endif return (l.ncells == 0); } @@ -378,7 +398,11 @@ bool SMDS_MeshNode::emptyInverseElements() int SMDS_MeshNode::NbInverseElements(SMDSAbs_ElementType type) const { +#if VTK_VERSION_NUMBER_QUICK >= 90300000000 + 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); +#endif if ( type == SMDSAbs_All ) return l.ncells; diff --git a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp index a037b33af8f3..49b5f99cd6a2 100644 --- a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp +++ b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp @@ -11348,7 +11348,11 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vector= 90300000000 + vtkCellLinks::Link l = static_cast(grid->GetLinks())->GetLink(oldId); +#else vtkCellLinks::Link l = static_cast(grid->GetCellLinks())->GetLink(oldId); +#endif for (int i=0; ifirst; //MESSAGE(" node " << oldId); +#if VTK_VERSION_NUMBER_QUICK >= 90300000000 + vtkCellLinks::Link l = static_cast(grid->GetLinks())->GetLink(oldId); +#else vtkCellLinks::Link l = static_cast(grid->GetCellLinks())->GetLink(oldId); +#endif for (int i = 0; i < l.ncells; i++) { int vtkId = l.cells[i];