Date: Tuesday, November 23, 2021 @ 15:08:09 Author: arodseth Revision: 1054470
archrelease: copy trunk to community-x86_64 Added: freecad/repos/community-x86_64/PKGBUILD (from rev 1054469, freecad/trunk/PKGBUILD) freecad/repos/community-x86_64/freecad-boost.patch (from rev 1054469, freecad/trunk/freecad-boost.patch) freecad/repos/community-x86_64/freecad-vtk9.patch (from rev 1054469, freecad/trunk/freecad-vtk9.patch) freecad/repos/community-x86_64/freecad.xml (from rev 1054469, freecad/trunk/freecad.xml) Deleted: freecad/repos/community-x86_64/PKGBUILD freecad/repos/community-x86_64/freecad-boost.patch freecad/repos/community-x86_64/freecad-vtk9.patch freecad/repos/community-x86_64/freecad.xml ---------------------+ PKGBUILD | 206 +++--- freecad-boost.patch | 50 - freecad-vtk9.patch | 1654 +++++++++++++++++++++++++------------------------- freecad.xml | 18 4 files changed, 964 insertions(+), 964 deletions(-) Deleted: PKGBUILD =================================================================== --- PKGBUILD 2021-11-23 15:08:00 UTC (rev 1054469) +++ PKGBUILD 2021-11-23 15:08:09 UTC (rev 1054470) @@ -1,103 +0,0 @@ -# Maintainer: Alexander F. Rødseth <xypr...@archlinux.org> -# Contributor: loqs <bugs-archli...@entropy-collector.net> -# Contributor: Gabriel Souza Franco <gabrielfrancoso...@gmail.com> -# Contributor: Florian Pritz -# Contributor: Jonas Heinrich <o...@project-insanity.org> -# Contributor: Jordi De Groof <jordi.degr...@gmail.com> -# Contributor: mickele -# Contributor: manwithgrenade -# Contributor: bricem13 -# Contributor: gborzi - -pkgname=freecad -pkgver=0.19.2 -pkgrel=6 -pkgdesc='General purpose 3D CAD modeler' -arch=(x86_64) -url='https://freecadweb.org/' -license=(LGPL) -depends=(boost-libs glew jsoncpp libspnav med netcdf opencascade openmpi - pyside2-tools python-gitpython python-matplotlib python-pivy - python-ply python-pyside2 qt5-svg qt5-tools qt5-webkit qt5-x11extras - qt5-xmlpatterns xerces-c) -makedepends=(adios2 boost cmake cgns coin eigen fmt gcc-fortran gendesk git - jdk-openjdk libharu liblas ninja openvdb openvr ospray pdal - postgresql-libs python-mpi4py python-shiboken2 shiboken2 swig - utf8cpp) -source=(freecad.xml - freecad-boost.patch - freecad-vtk9.patch - "git+https://github.com/FreeCAD/FreeCAD#commit=7b5e18a0759de778b74d3a5c17eba9cb815035ac") # tag: 0.19.2 -b2sums=('f5f295b9b5f268126feffbe3f3344c124faf5e2263f3f071348bd7f5d0bf2e30eb33fcf174d0ab76ad80ca7bd8ddea95ccbaf7f33f0896189ac78603fecb9485' - '6ec5dcead7f3438b387aeb3f608b910105d493aafcd47ae84715cdfe6f8651926056283ec4aeeab542b89df9fd9ffc2dbb74f5593e864acd23c8b352033ed1dc' - '242702f926101c57774046548068d17b22bd582ba1a1c45534ac8ceaa174c56277db80f32bed8ad1475b37006a1d777193b6c098ed8a733772152a898d1dd825' - 'SKIP') - -prepare() { - # Fix Boost linking with VTK 9 (thanks Fedora) - patch -d FreeCAD -p1 -i ../freecad-boost.patch - # Fix build with VTK 9 (thanks Fedora) - patch -d FreeCAD -p1 -i ../freecad-vtk9.patch - # Generate desktop shortcut - gendesk -f -n --pkgname "$pkgname" --pkgdesc "$pkgdesc" --name FreeCAD \ - --mimetypes='application/x-extension-fcstd' --startupnotify=true -} - -build() { - # OpenCascade requires that /usr/bin comes before /bin in $PATH - export PATH="/usr/bin:$PATH" - - cmake \ - -B build \ - -D BUILD_ENABLE_CXX_STD=C++14 \ - -D BUILD_QT5=ON \ - -D CMAKE_BUILD_TYPE=Release \ - -D CMAKE_C_FLAGS="$CFLAGS -fPIC -w" \ - -D CMAKE_CXX_FLAGS="$CXXFLAGS -fPIC -w" \ - -D CMAKE_INSTALL_DATADIR=/usr/share/freecad \ - -D CMAKE_INSTALL_DOCDIR=/usr/share/freecad/doc \ - -D CMAKE_INSTALL_PREFIX=/usr/lib/freecad \ - -D FREECAD_USE_EXTERNAL_PIVY=ON \ - -D FREECAD_USE_OCC_VARIANT='Official Version' \ - -D FREECAD_USE_QT_FILEDIALOG=ON \ - -D PYTHON_EXECUTABLE=/usr/bin/python \ - -D CMAKE_MODULE_PATH=/usr/lib/cmake/OpenVDB \ - -G Ninja \ - -S FreeCAD - ninja -C build -} - -package() { - DESTDIR="$pkgdir" ninja -C build install - - # Desktop shortcut - install -Dm644 freecad.desktop \ - "$pkgdir/usr/share/applications/freecad.desktop" - - # MIME info - install -Dm644 freecad.xml "$pkgdir/usr/share/mime/packages/freecad.xml" - - # Thumbnailer, see FS#71592 - install -Dm644 \ - "$pkgdir/usr/lib/freecad/share/thumbnailers/FreeCAD.thumbnailer" \ - "$pkgdir/usr/share/thumbnailers/FreeCAD.thumbnailer" - rm -f "$pkgdir/usr/lib/freecad/share/thumbnailers/FreeCAD.thumbnailer" - - # Icons - cd FreeCAD/src/Gui/Icons - for i in 16 32 48 64; do - install -Dm644 "freecad-icon-$i.png" \ - "$pkgdir/usr/share/icons/hicolor/${i}x$i/apps/freecad.png" - done - install -Dm644 freecad.svg \ - "$pkgdir/usr/share/icons/hicolor/scalable/apps/freecad.svg" - - # Symlinks in /usr/bin - install -d "$pkgdir/usr/bin" - ln -sf /usr/lib/freecad/bin/FreeCAD "$pkgdir/usr/bin/freecad" - ln -sf /usr/lib/freecad/bin/FreeCAD "$pkgdir/usr/bin/FreeCAD" - ln -sf /usr/lib/freecad/bin/FreeCADCmd "$pkgdir/usr/bin/freecadcmd" - ln -sf /usr/lib/freecad/bin/FreeCADCmd "$pkgdir/usr/bin/FreeCADCmd" - ln -sf /usr/lib/freecad/bin/freecad-thumbnailer \ - "$pkgdir/usr/bin/freecad-thumbnailer" -} Copied: freecad/repos/community-x86_64/PKGBUILD (from rev 1054469, freecad/trunk/PKGBUILD) =================================================================== --- PKGBUILD (rev 0) +++ PKGBUILD 2021-11-23 15:08:09 UTC (rev 1054470) @@ -0,0 +1,103 @@ +# Maintainer: Alexander F. Rødseth <xypr...@archlinux.org> +# Contributor: loqs <bugs-archli...@entropy-collector.net> +# Contributor: Gabriel Souza Franco <gabrielfrancoso...@gmail.com> +# Contributor: Florian Pritz +# Contributor: Jonas Heinrich <o...@project-insanity.org> +# Contributor: Jordi De Groof <jordi.degr...@gmail.com> +# Contributor: mickele +# Contributor: manwithgrenade +# Contributor: bricem13 +# Contributor: gborzi + +pkgname=freecad +pkgver=0.19.2 +pkgrel=7 +pkgdesc='General purpose 3D CAD modeler' +arch=(x86_64) +url='https://freecadweb.org/' +license=(LGPL) +depends=(boost-libs glew jsoncpp libspnav med netcdf opencascade openmpi + pyside2-tools python-gitpython python-matplotlib python-pivy + python-ply python-pyside2 qt5-svg qt5-tools qt5-webkit qt5-x11extras + qt5-xmlpatterns xerces-c) +makedepends=(adios2 boost cmake cgns coin eigen fmt gcc-fortran gendesk git + jdk-openjdk libharu liblas ninja openvdb openvr ospray pdal + postgresql-libs python-mpi4py python-shiboken2 shiboken2 swig + utf8cpp) +source=(freecad.xml + freecad-boost.patch + freecad-vtk9.patch + "git+https://github.com/FreeCAD/FreeCAD#commit=7b5e18a0759de778b74d3a5c17eba9cb815035ac") # tag: 0.19.2 +b2sums=('f5f295b9b5f268126feffbe3f3344c124faf5e2263f3f071348bd7f5d0bf2e30eb33fcf174d0ab76ad80ca7bd8ddea95ccbaf7f33f0896189ac78603fecb9485' + '6ec5dcead7f3438b387aeb3f608b910105d493aafcd47ae84715cdfe6f8651926056283ec4aeeab542b89df9fd9ffc2dbb74f5593e864acd23c8b352033ed1dc' + '242702f926101c57774046548068d17b22bd582ba1a1c45534ac8ceaa174c56277db80f32bed8ad1475b37006a1d777193b6c098ed8a733772152a898d1dd825' + 'SKIP') + +prepare() { + # Fix Boost linking with VTK 9 (thanks Fedora) + patch -d FreeCAD -p1 -i ../freecad-boost.patch + # Fix build with VTK 9 (thanks Fedora) + patch -d FreeCAD -p1 -i ../freecad-vtk9.patch + # Generate desktop shortcut + gendesk -f -n --pkgname "$pkgname" --pkgdesc "$pkgdesc" --name FreeCAD \ + --mimetypes='application/x-extension-fcstd' --startupnotify=true +} + +build() { + # OpenCascade requires that /usr/bin comes before /bin in $PATH + export PATH="/usr/bin:$PATH" + + cmake \ + -B build \ + -D BUILD_ENABLE_CXX_STD=C++14 \ + -D BUILD_QT5=ON \ + -D CMAKE_BUILD_TYPE=Release \ + -D CMAKE_C_FLAGS="$CFLAGS -fPIC -w" \ + -D CMAKE_CXX_FLAGS="$CXXFLAGS -fPIC -w" \ + -D CMAKE_INSTALL_DATADIR=/usr/share/freecad \ + -D CMAKE_INSTALL_DOCDIR=/usr/share/freecad/doc \ + -D CMAKE_INSTALL_PREFIX=/usr/lib/freecad \ + -D FREECAD_USE_EXTERNAL_PIVY=ON \ + -D FREECAD_USE_OCC_VARIANT='Official Version' \ + -D FREECAD_USE_QT_FILEDIALOG=ON \ + -D PYTHON_EXECUTABLE=/usr/bin/python \ + -D CMAKE_MODULE_PATH=/usr/lib/cmake/OpenVDB \ + -G Ninja \ + -S FreeCAD + ninja -C build +} + +package() { + DESTDIR="$pkgdir" ninja -C build install + + # Desktop shortcut + install -Dm644 freecad.desktop \ + "$pkgdir/usr/share/applications/freecad.desktop" + + # MIME info + install -Dm644 freecad.xml "$pkgdir/usr/share/mime/packages/freecad.xml" + + # Thumbnailer + install -Dm755 FreeCAD/src/Tools/freecad-thumbnailer \ + "$pkgdir/usr/bin/freecad-thumbnailer" + install -Dm644 \ + "$pkgdir/usr/lib/freecad/share/thumbnailers/FreeCAD.thumbnailer" \ + "$pkgdir/usr/share/thumbnailers/FreeCAD.thumbnailer" + rm -f "$pkgdir/usr/lib/freecad/share/thumbnailers/FreeCAD.thumbnailer" + + # Icons + cd FreeCAD/src/Gui/Icons + install -Dm644 freecad.svg \ + "$pkgdir/usr/share/icons/hicolor/scalable/apps/freecad.svg" + for i in 16 32 48 64; do + install -Dm644 "freecad-icon-$i.png" \ + "$pkgdir/usr/share/icons/hicolor/${i}x$i/apps/freecad.png" + done + + # Symlinks in /usr/bin + install -d "$pkgdir/usr/bin" + ln -sf /usr/lib/freecad/bin/FreeCAD "$pkgdir/usr/bin/freecad" + ln -sf /usr/lib/freecad/bin/FreeCAD "$pkgdir/usr/bin/FreeCAD" + ln -sf /usr/lib/freecad/bin/FreeCADCmd "$pkgdir/usr/bin/freecadcmd" + ln -sf /usr/lib/freecad/bin/FreeCADCmd "$pkgdir/usr/bin/FreeCADCmd" +} Deleted: freecad-boost.patch =================================================================== --- freecad-boost.patch 2021-11-23 15:08:00 UTC (rev 1054469) +++ freecad-boost.patch 2021-11-23 15:08:09 UTC (rev 1054470) @@ -1,25 +0,0 @@ -Index: FreeCAD-0.19.2/CMakeLists.txt -=================================================================== ---- FreeCAD-0.19.2.orig/CMakeLists.txt -+++ FreeCAD-0.19.2/CMakeLists.txt -@@ -46,6 +46,7 @@ if(NOT FREECAD_LIBPACK_USE OR FREECAD_LI - SetupPCL() - SetupPybind11() - SetupBoost() -+ set(Boost_LIBRARIES_App ${Boost_LIBRARIES}) - SetupXercesC() - find_package(ZLIB REQUIRED) - find_package(PyCXX REQUIRED) -Index: FreeCAD-0.19.2/src/App/CMakeLists.txt -=================================================================== ---- FreeCAD-0.19.2.orig/src/App/CMakeLists.txt -+++ FreeCAD-0.19.2/src/App/CMakeLists.txt -@@ -59,7 +59,7 @@ include_directories( - - set(FreeCADApp_LIBS - FreeCADBase -- ${Boost_LIBRARIES} -+ ${Boost_LIBRARIES_App} - ) - - if (BUILD_QT5) Copied: freecad/repos/community-x86_64/freecad-boost.patch (from rev 1054469, freecad/trunk/freecad-boost.patch) =================================================================== --- freecad-boost.patch (rev 0) +++ freecad-boost.patch 2021-11-23 15:08:09 UTC (rev 1054470) @@ -0,0 +1,25 @@ +Index: FreeCAD-0.19.2/CMakeLists.txt +=================================================================== +--- FreeCAD-0.19.2.orig/CMakeLists.txt ++++ FreeCAD-0.19.2/CMakeLists.txt +@@ -46,6 +46,7 @@ if(NOT FREECAD_LIBPACK_USE OR FREECAD_LI + SetupPCL() + SetupPybind11() + SetupBoost() ++ set(Boost_LIBRARIES_App ${Boost_LIBRARIES}) + SetupXercesC() + find_package(ZLIB REQUIRED) + find_package(PyCXX REQUIRED) +Index: FreeCAD-0.19.2/src/App/CMakeLists.txt +=================================================================== +--- FreeCAD-0.19.2.orig/src/App/CMakeLists.txt ++++ FreeCAD-0.19.2/src/App/CMakeLists.txt +@@ -59,7 +59,7 @@ include_directories( + + set(FreeCADApp_LIBS + FreeCADBase +- ${Boost_LIBRARIES} ++ ${Boost_LIBRARIES_App} + ) + + if (BUILD_QT5) Deleted: freecad-vtk9.patch =================================================================== --- freecad-vtk9.patch 2021-11-23 15:08:00 UTC (rev 1054469) +++ freecad-vtk9.patch 2021-11-23 15:08:09 UTC (rev 1054470) @@ -1,827 +0,0 @@ -From bb9bcbd51df7c3cb76c5823038e4ea0f7e25a9ff Mon Sep 17 00:00:00 2001 -From: wmayer <wma...@users.sourceforge.net> -Date: Mon, 12 Oct 2020 17:56:03 +0200 -Subject: [PATCH] Make smesh compile with vtk9 - ---- - .../salomesmesh/inc/SMDS_MeshElement.hxx | 9 +++- - .../salomesmesh/inc/SMDS_UnstructuredGrid.hxx | 4 ++ - .../salomesmesh/src/SMDS/SMDS_BallElement.cpp | 9 +++- - .../salomesmesh/src/SMDS/SMDS_Downward.cpp | 44 +++++++++---------- - .../salomesmesh/src/SMDS/SMDS_Mesh.cpp | 6 ++- - .../src/SMDS/SMDS_Mesh0DElement.cpp | 12 +++++ - .../salomesmesh/src/SMDS/SMDS_MeshNode.cpp | 10 ++--- - .../src/SMDS/SMDS_UnstructuredGrid.cpp | 35 +++++++++++++-- - .../src/SMDS/SMDS_VtkCellIterator.cpp | 7 +-- - .../salomesmesh/src/SMDS/SMDS_VtkEdge.cpp | 19 +++++++- - .../salomesmesh/src/SMDS/SMDS_VtkFace.cpp | 29 ++++++++++-- - .../salomesmesh/src/SMDS/SMDS_VtkVolume.cpp | 38 +++++++++++----- - .../src/SMESH/SMESH_MeshEditor.cpp | 8 ++-- - src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp | 7 ++- - 14 files changed, 179 insertions(+), 58 deletions(-) - -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx -@@ -40,11 +40,16 @@ - - #include <vtkType.h> - #include <vtkCellType.h> -+#include <vtkCellArray.h> - - //typedef unsigned short UShortType; - typedef short ShortType; - typedef int LongType; -- -+#ifdef VTK_CELL_ARRAY_V2 -+typedef const vtkIdType* vtkIdTypePtr; -+#else -+typedef vtkIdType* vtkIdTypePtr; -+#endif - class SMDS_MeshNode; - class SMDS_MeshEdge; - class SMDS_MeshFace; -@@ -192,7 +197,7 @@ protected: - //! Element index in vector SMDS_Mesh::myNodes or SMDS_Mesh::myCells - int myID; - //! index in vtkUnstructuredGrid -- int myVtkID; -+ vtkIdType myVtkID; - //! SMDS_Mesh identification in SMESH - ShortType myMeshId; - //! SubShape and SubMesh identification in SMESHDS -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx -@@ -95,7 +95,11 @@ public: - std::map<int, std::map<long,int> >& nodeQuadDomains); - vtkCellLinks* GetLinks() - { -+#ifdef VTK_CELL_ARRAY_V2 -+ return static_cast<vtkCellLinks*>(GetCellLinks()); -+#else - return Links; -+#endif - } - SMDS_Downward* getDownArray(unsigned char vtkType) - { -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp -@@ -67,10 +67,16 @@ void SMDS_BallElement::SetDiameter(doubl - bool SMDS_BallElement::ChangeNode (const SMDS_MeshNode * node) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew<vtkIdList> cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ cellPoints->SetId(0, node->getVtkId()); -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); - pts[0] = node->getVtkId(); -+#endif - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; - } -@@ -83,7 +89,8 @@ void SMDS_BallElement::Print (std::ostre - const SMDS_MeshNode* SMDS_BallElement::GetNode (const int ind) const - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( myVtkID, npts, pts ); - return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ 0 ]); - } -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp -@@ -303,7 +303,7 @@ int SMDS_Down1D::getNodeSet(int cellId, - void SMDS_Down1D::setNodes(int cellId, int vtkId) - { - vtkIdType npts = 0; -- vtkIdType *pts; // will refer to the point id's of the face -+ vtkIdTypePtr pts; // will refer to the point id's of the face - _grid->GetCellPoints(vtkId, npts, pts); - // MESSAGE(vtkId << " " << npts << " " << _nbDownCells); - //ASSERT(npts == _nbDownCells); -@@ -357,7 +357,7 @@ int SMDS_Down1D::computeVtkCells(int *pt - { - vtkIdType point = pts[i]; - int numCells = _grid->GetLinks()->GetNcells(point); -- vtkIdType *cells = _grid->GetLinks()->GetCells(point); -+ vtkIdTypePtr cells = _grid->GetLinks()->GetCells(point); - for (int j = 0; j < numCells; j++) - { - int vtkCellId = cells[j]; -@@ -532,7 +532,7 @@ int SMDS_Down2D::computeVolumeIds(int ce - // --- find point id's of the face - - vtkIdType npts = 0; -- vtkIdType *pts; // will refer to the point id's of the face -+ vtkIdTypePtr pts; // will refer to the point id's of the face - _grid->GetCellPoints(cellId, npts, pts); - vector<int> nodes; - for (int i = 0; i < npts; i++) -@@ -577,7 +577,7 @@ int SMDS_Down2D::computeVolumeIdsFromNod - vtkIdType point = pts[i]; - int numCells = _grid->GetLinks()->GetNcells(point); - //MESSAGE("cells pour " << i << " " << numCells); -- vtkIdType *cells = _grid->GetLinks()->GetCells(point); -+ vtkIdTypePtr cells = _grid->GetLinks()->GetCells(point); - for (int j = 0; j < numCells; j++) - { - int vtkCellId = cells[j]; -@@ -627,7 +627,7 @@ int SMDS_Down2D::computeVolumeIdsFromNod - void SMDS_Down2D::setTempNodes(int cellId, int vtkId) - { - vtkIdType npts = 0; -- vtkIdType *pts; // will refer to the point id's of the face -+ vtkIdTypePtr pts; // will refer to the point id's of the face - _grid->GetCellPoints(vtkId, npts, pts); - // MESSAGE(vtkId << " " << npts << " " << _nbNodes); - //ASSERT(npts == _nbNodes); -@@ -795,7 +795,7 @@ void SMDS_Down3D::getNodeIds(int cellId, - { - int vtkId = this->_vtkCellIds[cellId]; - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(vtkId, npts, nodes); - for (int i = 0; i < npts; i++) - nodeSet.insert(nodes[i]); -@@ -1126,7 +1126,7 @@ void SMDS_DownTetra::getOrderedNodesOfFa - //MESSAGE("cellId = " << cellId); - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); - - set<int> tofind; -@@ -1178,7 +1178,7 @@ void SMDS_DownTetra::computeFacesWithNod - // --- find point id's of the volume - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(cellId, npts, nodes); - - // --- create all the ordered list of node id's for each face -@@ -1234,7 +1234,7 @@ void SMDS_DownQuadTetra::getOrderedNodes - //MESSAGE("cellId = " << cellId); - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); - - set<int> tofind; -@@ -1288,7 +1288,7 @@ void SMDS_DownQuadTetra::computeFacesWit - // --- find point id's of the volume - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(cellId, npts, nodes); - - // --- create all the ordered list of node id's for each face -@@ -1357,7 +1357,7 @@ void SMDS_DownPyramid::getOrderedNodesOf - //MESSAGE("cellId = " << cellId); - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); - - set<int> tofind; -@@ -1435,7 +1435,7 @@ void SMDS_DownPyramid::computeFacesWithN - // --- find point id's of the volume - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(cellId, npts, nodes); - - // --- create all the ordered list of node id's for each face -@@ -1500,7 +1500,7 @@ void SMDS_DownQuadPyramid::getOrderedNod - //MESSAGE("cellId = " << cellId); - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); - - set<int> tofind; -@@ -1580,7 +1580,7 @@ void SMDS_DownQuadPyramid::computeFacesW - // --- find point id's of the volume - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(cellId, npts, nodes); - - // --- create all the ordered list of node id's for each face -@@ -1660,7 +1660,7 @@ void SMDS_DownPenta::getOrderedNodesOfFa - //MESSAGE("cellId = " << cellId); - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); - - set<int> tofind; -@@ -1744,7 +1744,7 @@ void SMDS_DownPenta::computeFacesWithNod - // --- find point id's of the volume - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(cellId, npts, nodes); - - // --- create all the ordered list of node id's for each face -@@ -1810,7 +1810,7 @@ void SMDS_DownQuadPenta::getOrderedNodes - //MESSAGE("cellId = " << cellId); - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); - - set<int> tofind; -@@ -1896,7 +1896,7 @@ void SMDS_DownQuadPenta::computeFacesWit - // --- find point id's of the volume - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(cellId, npts, nodes); - - // --- create all the ordered list of node id's for each face -@@ -1981,7 +1981,7 @@ void SMDS_DownHexa::getOrderedNodesOfFac - //MESSAGE("cellId = " << cellId); - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); - - set<int> tofind; -@@ -2036,7 +2036,7 @@ void SMDS_DownHexa::computeFacesWithNode - // --- find point id's of the volume - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(cellId, npts, nodes); - - // --- create all the ordered list of node id's for each face -@@ -2112,7 +2112,7 @@ void SMDS_DownQuadHexa::getOrderedNodesO - //MESSAGE("cellId = " << cellId); - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); - - set<int> tofind; -@@ -2167,7 +2167,7 @@ void SMDS_DownQuadHexa::computeFacesWith - // --- find point id's of the volume - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(cellId, npts, nodes); - - // --- create all the ordered list of node id's for each face -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp -@@ -4768,7 +4768,11 @@ void SMDS_Mesh::dumpGrid(string ficdump) - ficcon << endl; - } - ficcon << "-------------------------------- connectivity " << nbPoints << endl; -- vtkCellLinks *links = myGrid->GetCellLinks(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkCellLinks *links = static_cast<vtkCellLinks*>(myGrid->GetCellLinks()); -+#else -+ vtkCellLinks *links = myGrid->GetCellLinks(); -+#endif - for (int i=0; i<nbPoints; i++) - { - int ncells = links->GetNcells(i); -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp -@@ -146,6 +146,17 @@ bool SMDS_Mesh0DElement::ChangeNodes(con - if ( nbNodes == 1 ) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew<vtkIdList> cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ if (nbNodes != cellPoints->GetNumberOfIds()) -+ { -+ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); -+ return false; -+ } -+ myNode = nodes[0]; -+ cellPoints->SetId(0, myNode->getVtkId()); -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); -@@ -156,6 +167,7 @@ bool SMDS_Mesh0DElement::ChangeNodes(con - } - myNode = nodes[0]; - pts[0] = myNode->getVtkId(); -+#endif - - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp -@@ -191,7 +191,7 @@ public: - SMDS_ElemIteratorPtr SMDS_MeshNode:: - GetInverseElementIterator(SMDSAbs_ElementType type) const - { -- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); -+ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); - //MESSAGE("myID " << myID << " ncells " << l.ncells); - return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyInvIterator(SMDS_Mesh::_meshList[myMeshId], l.cells, l.ncells, type)); - } -@@ -251,7 +251,7 @@ elementsIterator(SMDSAbs_ElementType typ - return SMDS_MeshElement::elementsIterator(SMDSAbs_Node); - else - { -- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); -+ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); - return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyIterator(SMDS_Mesh::_meshList[myMeshId], l.cells, l.ncells, type)); - } - } -@@ -350,7 +350,7 @@ void SMDS_MeshNode::AddInverseElement(co - const SMDS_MeshCell *cell = dynamic_cast<const SMDS_MeshCell*> (ME); - assert(cell); - SMDS_UnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -- vtkCellLinks *Links = grid->GetCellLinks(); -+ vtkCellLinks *Links = static_cast<vtkCellLinks*>(grid->GetCellLinks()); - Links->ResizeCellList(myVtkID, 1); - Links->AddCellReference(cell->getVtkId(), myVtkID); - } -@@ -366,7 +366,7 @@ void SMDS_MeshNode::ClearInverseElements - - bool SMDS_MeshNode::emptyInverseElements() - { -- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); -+ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); - return (l.ncells == 0); - } - -@@ -378,7 +378,7 @@ bool SMDS_MeshNode::emptyInverseElements - - int SMDS_MeshNode::NbInverseElements(SMDSAbs_ElementType type) const - { -- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); -+ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); - - if ( type == SMDSAbs_All ) - return l.ncells; -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp -@@ -139,8 +139,8 @@ int SMDS_UnstructuredGrid::InsertNextLin - for (; it != setOfNodes.end(); ++it) - { - //MESSAGE("reverse link for node " << *it << " cell " << cellid); -- this->Links->ResizeCellList(*it, 1); -- this->Links->AddCellReference(cellid, *it); -+ this->GetLinks()->ResizeCellList(*it, 1); -+ this->GetLinks()->AddCellReference(cellid, *it); - } - - return cellid; -@@ -332,9 +332,13 @@ void SMDS_UnstructuredGrid::copyBloc(vtk - { - newTypes->SetValue(alreadyCopied, this->Types->GetValue(j)); - idCellsOldToNew[j] = alreadyCopied; // old vtkId --> new vtkId -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkIdType oldLoc = this->GetCellLocationsArray()->GetValue(j); -+#else - vtkIdType oldLoc = this->Locations->GetValue(j); -+#endif - vtkIdType nbpts; -- vtkIdType *oldPtsCell = 0; -+ vtkIdTypePtr oldPtsCell = 0; - this->Connectivity->GetCell(oldLoc, nbpts, oldPtsCell); - assert(nbpts < NBMAXNODESINCELL); - //MESSAGE(j << " " << alreadyCopied << " " << (int)this->Types->GetValue(j) << " " << oldLoc << " " << nbpts ); -@@ -952,6 +956,21 @@ void SMDS_UnstructuredGrid::GetNodeIds(s - */ - void SMDS_UnstructuredGrid::ModifyCellNodes(int vtkVolId, std::map<int, int> localClonedNodeIds) - { -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew<vtkIdList> cellPoints; -+ this->GetCellPoints(vtkVolId, cellPoints.GetPointer()); -+ for (vtkIdType i = 0; i < cellPoints->GetNumberOfIds(); i++) -+ { -+ if (localClonedNodeIds.count(cellPoints->GetId(i))) -+ { -+ vtkIdType oldpt = cellPoints->GetId(i); -+ cellPoints->SetId(i, localClonedNodeIds[oldpt]); -+ //MESSAGE(oldpt << " --> " << pts[i]); -+ //this->RemoveReferenceToCell(oldpt, vtkVolId); -+ //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); -@@ -966,6 +985,7 @@ void SMDS_UnstructuredGrid::ModifyCellNo - //this->AddReferenceToCell(pts[i], vtkVolId); - } - } -+#endif - } - - /*! reorder the nodes of a face -@@ -995,11 +1015,20 @@ 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 -+ GetLinks()->BuildLinks(this); -+ 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 - } - - /*! Create a volume (prism or hexahedron) by duplication of a face. -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp -@@ -33,7 +33,8 @@ SMDS_VtkCellIterator::SMDS_VtkCellIterat - } - else - { -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( _cellId, npts, pts ); - _vtkIdList->SetNumberOfIds( _nbNodes = npts ); - for (int i = 0; i < _nbNodes; i++) -@@ -67,7 +68,7 @@ SMDS_VtkCellIteratorToUNV::SMDS_VtkCellI - //MESSAGE("SMDS_VtkCellInterlacedIterator (UNV)" << _type); - - _vtkIdList = vtkIdList::New(); -- vtkIdType* pts; -+ vtkIdTypePtr pts; - vtkIdType npts; - vtkUnstructuredGrid* grid = _mesh->getGrid(); - grid->GetCellPoints((vtkIdType)_cellId, npts, pts); -@@ -182,7 +183,7 @@ SMDS_VtkCellIteratorPolyH::SMDS_VtkCellI - { - //MESSAGE("SMDS_VtkCellIterator Polyhedra"); - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(_cellId, nFaces, ptIds); - int id = 0; - _nbNodesInFaces = 0; -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp -@@ -67,6 +67,19 @@ bool SMDS_VtkEdge::ChangeNodes(const SMD - bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew<vtkIdList> cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ if (nbNodes != cellPoints->GetNumberOfIds()) -+ { -+ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); -+ return false; -+ } -+ for (int i = 0; i < nbNodes; i++) -+ { -+ cellPoints->SetId(i, nodes[i]->getVtkId()); -+ } -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); -@@ -79,6 +92,7 @@ bool SMDS_VtkEdge::ChangeNodes(const SMD - { - pts[i] = nodes[i]->getVtkId(); - } -+#endif - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; - } -@@ -87,7 +101,7 @@ bool SMDS_VtkEdge::IsMediumNode(const SM - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); - vtkIdType npts = 0; -- vtkIdType* pts = 0; -+ vtkIdTypePtr pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); - //MESSAGE("IsMediumNode " << npts << " " << (node->getVtkId() == pts[npts-1])); - return ((npts == 3) && (node->getVtkId() == pts[2])); -@@ -137,7 +151,8 @@ const SMDS_MeshNode* - SMDS_VtkEdge::GetNode(const int ind) const - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( this->myVtkID, npts, pts ); - return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ ind ]); - } -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp -@@ -101,6 +101,19 @@ void SMDS_VtkFace::initQuadPoly(const st - bool SMDS_VtkFace::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew<vtkIdList> cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ if (nbNodes != cellPoints->GetNumberOfIds()) -+ { -+ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); -+ return false; -+ } -+ for (int i = 0; i < nbNodes; i++) -+ { -+ cellPoints->SetId(i, nodes[i]->getVtkId()); -+ } -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); -@@ -113,6 +126,7 @@ bool SMDS_VtkFace::ChangeNodes(const SMD - { - pts[i] = nodes[i]->getVtkId(); - } -+#endif - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; - } -@@ -173,7 +187,8 @@ const SMDS_MeshNode* - SMDS_VtkFace::GetNode(const int ind) const - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( this->myVtkID, npts, pts ); - return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ ind ]); - } -@@ -186,7 +201,8 @@ SMDS_VtkFace::GetNode(const int ind) con - int SMDS_VtkFace::GetNodeIndex( const SMDS_MeshNode* node ) const - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( this->myVtkID, npts, pts ); - for ( vtkIdType i = 0; i < npts; ++i ) - if ( pts[i] == node->getVtkId() ) -@@ -251,7 +267,7 @@ bool SMDS_VtkFace::IsMediumNode(const SM - return false; - } - vtkIdType npts = 0; -- vtkIdType* pts = 0; -+ vtkIdTypePtr pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); - vtkIdType nodeId = node->getVtkId(); - for (int rank = 0; rank < npts; rank++) -@@ -356,11 +372,18 @@ SMDS_NodeIteratorPtr SMDS_VtkFace::inter - void SMDS_VtkFace::ChangeApex(SMDS_MeshNode* node) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew<vtkIdList> cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ grid->RemoveReferenceToCell(cellPoints->GetId(0), myVtkID); -+ cellPoints->SetId(0, node->getVtkId()); -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); - grid->RemoveReferenceToCell(pts[0], myVtkID); - pts[0] = node->getVtkId(); -+#endif - node->AddInverseElement(this), - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - } -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp -@@ -133,6 +133,19 @@ void SMDS_VtkVolume::initPoly(const std: - bool SMDS_VtkVolume::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew<vtkIdList> cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ if (nbNodes != cellPoints->GetNumberOfIds()) -+ { -+ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); -+ return false; -+ } -+ for (int i = 0; i < nbNodes; i++) -+ { -+ cellPoints->SetId(i, nodes[i]->getVtkId()); -+ } -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); -@@ -145,6 +158,7 @@ bool SMDS_VtkVolume::ChangeNodes(const S - { - pts[i] = nodes[i]->getVtkId(); - } -+#endif - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; - } -@@ -207,7 +221,7 @@ int SMDS_VtkVolume::NbFaces() const - case VTK_POLYHEDRON: - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - nbFaces = nFaces; - break; -@@ -236,7 +250,7 @@ int SMDS_VtkVolume::NbNodes() const - else - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0; - for (int i = 0; i < nFaces; i++) -@@ -276,7 +290,7 @@ int SMDS_VtkVolume::NbEdges() const - case VTK_POLYHEDRON: - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - nbEdges = 0; - int id = 0; -@@ -312,7 +326,7 @@ int SMDS_VtkVolume::NbFaceNodes(const in - if (aVtkType == VTK_POLYHEDRON) - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0; - for (int i = 0; i < nFaces; i++) -@@ -342,7 +356,7 @@ const SMDS_MeshNode* SMDS_VtkVolume::Get - if (aVtkType == VTK_POLYHEDRON) - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0; - for (int i = 0; i < nFaces; i++) -@@ -372,7 +386,7 @@ std::vector<int> SMDS_VtkVolume::GetQuan - if (aVtkType == VTK_POLYHEDRON) - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0; - for (int i = 0; i < nFaces; i++) -@@ -430,7 +444,7 @@ const SMDS_MeshNode* SMDS_VtkVolume::Get - if ( aVtkType == VTK_POLYHEDRON) - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0, nbPoints = 0; - for (int i = 0; i < nFaces; i++) -@@ -443,7 +457,8 @@ const SMDS_MeshNode* SMDS_VtkVolume::Get - } - return 0; - } -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( this->myVtkID, npts, pts ); - const std::vector<int>& interlace = SMDS_MeshCell::fromVtkOrder( VTKCellType( aVtkType )); - return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ interlace.empty() ? ind : interlace[ind]] ); -@@ -460,7 +475,7 @@ int SMDS_VtkVolume::GetNodeIndex( const - if ( aVtkType == VTK_POLYHEDRON) - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0; - for (int iF = 0; iF < nFaces; iF++) -@@ -473,7 +488,8 @@ int SMDS_VtkVolume::GetNodeIndex( const - } - return -1; - } -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( this->myVtkID, npts, pts ); - for ( vtkIdType i = 0; i < npts; ++i ) - if ( pts[i] == node->getVtkId() ) -@@ -534,7 +550,7 @@ bool SMDS_VtkVolume::IsMediumNode(const - return false; - } - vtkIdType npts = 0; -- vtkIdType* pts = 0; -+ vtkIdTypePtr pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); - vtkIdType nodeId = node->getVtkId(); - for (int rank = 0; rank < npts; rank++) -Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp -+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp -@@ -11348,7 +11348,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGrou - { - int oldId = *itn; - //MESSAGE(" node " << oldId); -- vtkCellLinks::Link l = grid->GetCellLinks()->GetLink(oldId); -+ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(grid->GetCellLinks())->GetLink(oldId); - for (int i=0; i<l.ncells; i++) - { - int vtkId = l.cells[i]; -@@ -11527,7 +11527,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGrou - //MESSAGE(" domain " << idom << " volume " << elem->GetID()); - double values[3]; - vtkIdType npts = 0; -- vtkIdType* pts = 0; -+ vtkIdTypePtr pts = 0; - grid->GetCellPoints(vtkVolIds[ivol], npts, pts); - SMDS_VtkVolume::gravityCenter(grid, pts, npts, values); - if (id ==0) -@@ -11708,7 +11708,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGrou - { - int oldId = itnod->first; - //MESSAGE(" node " << oldId); -- vtkCellLinks::Link l = grid->GetCellLinks()->GetLink(oldId); -+ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(grid->GetCellLinks())->GetLink(oldId); - for (int i = 0; i < l.ncells; i++) - { - int vtkId = l.cells[i]; -@@ -12165,7 +12165,7 @@ void SMESH_MeshEditor::CreateHoleSkin(do - MESSAGE("volume to check, vtkId " << vtkId << " smdsId " << meshDS->fromVtkToSmds(vtkId)); - bool volInside = false; - vtkIdType npts = 0; -- vtkIdType* pts = 0; -+ vtkIdTypePtr pts = 0; - grid->GetCellPoints(vtkId, npts, pts); - for (int i=0; i<npts; i++) - { -Index: FreeCAD-0.19.2/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp -=================================================================== ---- FreeCAD-0.19.2.orig/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp -+++ FreeCAD-0.19.2/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp -@@ -20,7 +20,6 @@ - * * - ***************************************************************************/ - -- - #include "PreCompiled.h" - - #ifndef _PreComp_ Copied: freecad/repos/community-x86_64/freecad-vtk9.patch (from rev 1054469, freecad/trunk/freecad-vtk9.patch) =================================================================== --- freecad-vtk9.patch (rev 0) +++ freecad-vtk9.patch 2021-11-23 15:08:09 UTC (rev 1054470) @@ -0,0 +1,827 @@ +From bb9bcbd51df7c3cb76c5823038e4ea0f7e25a9ff Mon Sep 17 00:00:00 2001 +From: wmayer <wma...@users.sourceforge.net> +Date: Mon, 12 Oct 2020 17:56:03 +0200 +Subject: [PATCH] Make smesh compile with vtk9 + +--- + .../salomesmesh/inc/SMDS_MeshElement.hxx | 9 +++- + .../salomesmesh/inc/SMDS_UnstructuredGrid.hxx | 4 ++ + .../salomesmesh/src/SMDS/SMDS_BallElement.cpp | 9 +++- + .../salomesmesh/src/SMDS/SMDS_Downward.cpp | 44 +++++++++---------- + .../salomesmesh/src/SMDS/SMDS_Mesh.cpp | 6 ++- + .../src/SMDS/SMDS_Mesh0DElement.cpp | 12 +++++ + .../salomesmesh/src/SMDS/SMDS_MeshNode.cpp | 10 ++--- + .../src/SMDS/SMDS_UnstructuredGrid.cpp | 35 +++++++++++++-- + .../src/SMDS/SMDS_VtkCellIterator.cpp | 7 +-- + .../salomesmesh/src/SMDS/SMDS_VtkEdge.cpp | 19 +++++++- + .../salomesmesh/src/SMDS/SMDS_VtkFace.cpp | 29 ++++++++++-- + .../salomesmesh/src/SMDS/SMDS_VtkVolume.cpp | 38 +++++++++++----- + .../src/SMESH/SMESH_MeshEditor.cpp | 8 ++-- + src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp | 7 ++- + 14 files changed, 179 insertions(+), 58 deletions(-) + +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx +@@ -40,11 +40,16 @@ + + #include <vtkType.h> + #include <vtkCellType.h> ++#include <vtkCellArray.h> + + //typedef unsigned short UShortType; + typedef short ShortType; + typedef int LongType; +- ++#ifdef VTK_CELL_ARRAY_V2 ++typedef const vtkIdType* vtkIdTypePtr; ++#else ++typedef vtkIdType* vtkIdTypePtr; ++#endif + class SMDS_MeshNode; + class SMDS_MeshEdge; + class SMDS_MeshFace; +@@ -192,7 +197,7 @@ protected: + //! Element index in vector SMDS_Mesh::myNodes or SMDS_Mesh::myCells + int myID; + //! index in vtkUnstructuredGrid +- int myVtkID; ++ vtkIdType myVtkID; + //! SMDS_Mesh identification in SMESH + ShortType myMeshId; + //! SubShape and SubMesh identification in SMESHDS +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx +@@ -95,7 +95,11 @@ public: + std::map<int, std::map<long,int> >& nodeQuadDomains); + vtkCellLinks* GetLinks() + { ++#ifdef VTK_CELL_ARRAY_V2 ++ return static_cast<vtkCellLinks*>(GetCellLinks()); ++#else + return Links; ++#endif + } + SMDS_Downward* getDownArray(unsigned char vtkType) + { +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp +@@ -67,10 +67,16 @@ void SMDS_BallElement::SetDiameter(doubl + bool SMDS_BallElement::ChangeNode (const SMDS_MeshNode * node) + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); ++#ifdef VTK_CELL_ARRAY_V2 ++ vtkNew<vtkIdList> cellPoints; ++ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); ++ cellPoints->SetId(0, node->getVtkId()); ++#else + vtkIdType npts = 0; + vtkIdType* pts = 0; + grid->GetCellPoints(myVtkID, npts, pts); + pts[0] = node->getVtkId(); ++#endif + SMDS_Mesh::_meshList[myMeshId]->setMyModified(); + return true; + } +@@ -83,7 +89,8 @@ void SMDS_BallElement::Print (std::ostre + const SMDS_MeshNode* SMDS_BallElement::GetNode (const int ind) const + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); +- vtkIdType npts, *pts; ++ vtkIdType npts; ++ vtkIdTypePtr pts; + grid->GetCellPoints( myVtkID, npts, pts ); + return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ 0 ]); + } +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp +@@ -303,7 +303,7 @@ int SMDS_Down1D::getNodeSet(int cellId, + void SMDS_Down1D::setNodes(int cellId, int vtkId) + { + vtkIdType npts = 0; +- vtkIdType *pts; // will refer to the point id's of the face ++ vtkIdTypePtr pts; // will refer to the point id's of the face + _grid->GetCellPoints(vtkId, npts, pts); + // MESSAGE(vtkId << " " << npts << " " << _nbDownCells); + //ASSERT(npts == _nbDownCells); +@@ -357,7 +357,7 @@ int SMDS_Down1D::computeVtkCells(int *pt + { + vtkIdType point = pts[i]; + int numCells = _grid->GetLinks()->GetNcells(point); +- vtkIdType *cells = _grid->GetLinks()->GetCells(point); ++ vtkIdTypePtr cells = _grid->GetLinks()->GetCells(point); + for (int j = 0; j < numCells; j++) + { + int vtkCellId = cells[j]; +@@ -532,7 +532,7 @@ int SMDS_Down2D::computeVolumeIds(int ce + // --- find point id's of the face + + vtkIdType npts = 0; +- vtkIdType *pts; // will refer to the point id's of the face ++ vtkIdTypePtr pts; // will refer to the point id's of the face + _grid->GetCellPoints(cellId, npts, pts); + vector<int> nodes; + for (int i = 0; i < npts; i++) +@@ -577,7 +577,7 @@ int SMDS_Down2D::computeVolumeIdsFromNod + vtkIdType point = pts[i]; + int numCells = _grid->GetLinks()->GetNcells(point); + //MESSAGE("cells pour " << i << " " << numCells); +- vtkIdType *cells = _grid->GetLinks()->GetCells(point); ++ vtkIdTypePtr cells = _grid->GetLinks()->GetCells(point); + for (int j = 0; j < numCells; j++) + { + int vtkCellId = cells[j]; +@@ -627,7 +627,7 @@ int SMDS_Down2D::computeVolumeIdsFromNod + void SMDS_Down2D::setTempNodes(int cellId, int vtkId) + { + vtkIdType npts = 0; +- vtkIdType *pts; // will refer to the point id's of the face ++ vtkIdTypePtr pts; // will refer to the point id's of the face + _grid->GetCellPoints(vtkId, npts, pts); + // MESSAGE(vtkId << " " << npts << " " << _nbNodes); + //ASSERT(npts == _nbNodes); +@@ -795,7 +795,7 @@ void SMDS_Down3D::getNodeIds(int cellId, + { + int vtkId = this->_vtkCellIds[cellId]; + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(vtkId, npts, nodes); + for (int i = 0; i < npts; i++) + nodeSet.insert(nodes[i]); +@@ -1126,7 +1126,7 @@ void SMDS_DownTetra::getOrderedNodesOfFa + //MESSAGE("cellId = " << cellId); + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); + + set<int> tofind; +@@ -1178,7 +1178,7 @@ void SMDS_DownTetra::computeFacesWithNod + // --- find point id's of the volume + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(cellId, npts, nodes); + + // --- create all the ordered list of node id's for each face +@@ -1234,7 +1234,7 @@ void SMDS_DownQuadTetra::getOrderedNodes + //MESSAGE("cellId = " << cellId); + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); + + set<int> tofind; +@@ -1288,7 +1288,7 @@ void SMDS_DownQuadTetra::computeFacesWit + // --- find point id's of the volume + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(cellId, npts, nodes); + + // --- create all the ordered list of node id's for each face +@@ -1357,7 +1357,7 @@ void SMDS_DownPyramid::getOrderedNodesOf + //MESSAGE("cellId = " << cellId); + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); + + set<int> tofind; +@@ -1435,7 +1435,7 @@ void SMDS_DownPyramid::computeFacesWithN + // --- find point id's of the volume + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(cellId, npts, nodes); + + // --- create all the ordered list of node id's for each face +@@ -1500,7 +1500,7 @@ void SMDS_DownQuadPyramid::getOrderedNod + //MESSAGE("cellId = " << cellId); + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); + + set<int> tofind; +@@ -1580,7 +1580,7 @@ void SMDS_DownQuadPyramid::computeFacesW + // --- find point id's of the volume + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(cellId, npts, nodes); + + // --- create all the ordered list of node id's for each face +@@ -1660,7 +1660,7 @@ void SMDS_DownPenta::getOrderedNodesOfFa + //MESSAGE("cellId = " << cellId); + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); + + set<int> tofind; +@@ -1744,7 +1744,7 @@ void SMDS_DownPenta::computeFacesWithNod + // --- find point id's of the volume + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(cellId, npts, nodes); + + // --- create all the ordered list of node id's for each face +@@ -1810,7 +1810,7 @@ void SMDS_DownQuadPenta::getOrderedNodes + //MESSAGE("cellId = " << cellId); + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); + + set<int> tofind; +@@ -1896,7 +1896,7 @@ void SMDS_DownQuadPenta::computeFacesWit + // --- find point id's of the volume + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(cellId, npts, nodes); + + // --- create all the ordered list of node id's for each face +@@ -1981,7 +1981,7 @@ void SMDS_DownHexa::getOrderedNodesOfFac + //MESSAGE("cellId = " << cellId); + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); + + set<int> tofind; +@@ -2036,7 +2036,7 @@ void SMDS_DownHexa::computeFacesWithNode + // --- find point id's of the volume + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(cellId, npts, nodes); + + // --- create all the ordered list of node id's for each face +@@ -2112,7 +2112,7 @@ void SMDS_DownQuadHexa::getOrderedNodesO + //MESSAGE("cellId = " << cellId); + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); + + set<int> tofind; +@@ -2167,7 +2167,7 @@ void SMDS_DownQuadHexa::computeFacesWith + // --- find point id's of the volume + + vtkIdType npts = 0; +- vtkIdType *nodes; // will refer to the point id's of the volume ++ vtkIdTypePtr nodes; // will refer to the point id's of the volume + _grid->GetCellPoints(cellId, npts, nodes); + + // --- create all the ordered list of node id's for each face +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp +@@ -4768,7 +4768,11 @@ void SMDS_Mesh::dumpGrid(string ficdump) + ficcon << endl; + } + ficcon << "-------------------------------- connectivity " << nbPoints << endl; +- vtkCellLinks *links = myGrid->GetCellLinks(); ++#ifdef VTK_CELL_ARRAY_V2 ++ vtkCellLinks *links = static_cast<vtkCellLinks*>(myGrid->GetCellLinks()); ++#else ++ vtkCellLinks *links = myGrid->GetCellLinks(); ++#endif + for (int i=0; i<nbPoints; i++) + { + int ncells = links->GetNcells(i); +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp +@@ -146,6 +146,17 @@ bool SMDS_Mesh0DElement::ChangeNodes(con + if ( nbNodes == 1 ) + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); ++#ifdef VTK_CELL_ARRAY_V2 ++ vtkNew<vtkIdList> cellPoints; ++ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); ++ if (nbNodes != cellPoints->GetNumberOfIds()) ++ { ++ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); ++ return false; ++ } ++ myNode = nodes[0]; ++ cellPoints->SetId(0, myNode->getVtkId()); ++#else + vtkIdType npts = 0; + vtkIdType* pts = 0; + grid->GetCellPoints(myVtkID, npts, pts); +@@ -156,6 +167,7 @@ bool SMDS_Mesh0DElement::ChangeNodes(con + } + myNode = nodes[0]; + pts[0] = myNode->getVtkId(); ++#endif + + SMDS_Mesh::_meshList[myMeshId]->setMyModified(); + return true; +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp +@@ -191,7 +191,7 @@ public: + SMDS_ElemIteratorPtr SMDS_MeshNode:: + GetInverseElementIterator(SMDSAbs_ElementType type) const + { +- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); ++ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); + //MESSAGE("myID " << myID << " ncells " << l.ncells); + return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyInvIterator(SMDS_Mesh::_meshList[myMeshId], l.cells, l.ncells, type)); + } +@@ -251,7 +251,7 @@ elementsIterator(SMDSAbs_ElementType typ + return SMDS_MeshElement::elementsIterator(SMDSAbs_Node); + else + { +- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); ++ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); + return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyIterator(SMDS_Mesh::_meshList[myMeshId], l.cells, l.ncells, type)); + } + } +@@ -350,7 +350,7 @@ void SMDS_MeshNode::AddInverseElement(co + const SMDS_MeshCell *cell = dynamic_cast<const SMDS_MeshCell*> (ME); + assert(cell); + SMDS_UnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); +- vtkCellLinks *Links = grid->GetCellLinks(); ++ vtkCellLinks *Links = static_cast<vtkCellLinks*>(grid->GetCellLinks()); + Links->ResizeCellList(myVtkID, 1); + Links->AddCellReference(cell->getVtkId(), myVtkID); + } +@@ -366,7 +366,7 @@ void SMDS_MeshNode::ClearInverseElements + + bool SMDS_MeshNode::emptyInverseElements() + { +- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); ++ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); + return (l.ncells == 0); + } + +@@ -378,7 +378,7 @@ bool SMDS_MeshNode::emptyInverseElements + + int SMDS_MeshNode::NbInverseElements(SMDSAbs_ElementType type) const + { +- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); ++ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); + + if ( type == SMDSAbs_All ) + return l.ncells; +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp +@@ -139,8 +139,8 @@ int SMDS_UnstructuredGrid::InsertNextLin + for (; it != setOfNodes.end(); ++it) + { + //MESSAGE("reverse link for node " << *it << " cell " << cellid); +- this->Links->ResizeCellList(*it, 1); +- this->Links->AddCellReference(cellid, *it); ++ this->GetLinks()->ResizeCellList(*it, 1); ++ this->GetLinks()->AddCellReference(cellid, *it); + } + + return cellid; +@@ -332,9 +332,13 @@ void SMDS_UnstructuredGrid::copyBloc(vtk + { + newTypes->SetValue(alreadyCopied, this->Types->GetValue(j)); + idCellsOldToNew[j] = alreadyCopied; // old vtkId --> new vtkId ++#ifdef VTK_CELL_ARRAY_V2 ++ vtkIdType oldLoc = this->GetCellLocationsArray()->GetValue(j); ++#else + vtkIdType oldLoc = this->Locations->GetValue(j); ++#endif + vtkIdType nbpts; +- vtkIdType *oldPtsCell = 0; ++ vtkIdTypePtr oldPtsCell = 0; + this->Connectivity->GetCell(oldLoc, nbpts, oldPtsCell); + assert(nbpts < NBMAXNODESINCELL); + //MESSAGE(j << " " << alreadyCopied << " " << (int)this->Types->GetValue(j) << " " << oldLoc << " " << nbpts ); +@@ -952,6 +956,21 @@ void SMDS_UnstructuredGrid::GetNodeIds(s + */ + void SMDS_UnstructuredGrid::ModifyCellNodes(int vtkVolId, std::map<int, int> localClonedNodeIds) + { ++#ifdef VTK_CELL_ARRAY_V2 ++ vtkNew<vtkIdList> cellPoints; ++ this->GetCellPoints(vtkVolId, cellPoints.GetPointer()); ++ for (vtkIdType i = 0; i < cellPoints->GetNumberOfIds(); i++) ++ { ++ if (localClonedNodeIds.count(cellPoints->GetId(i))) ++ { ++ vtkIdType oldpt = cellPoints->GetId(i); ++ cellPoints->SetId(i, localClonedNodeIds[oldpt]); ++ //MESSAGE(oldpt << " --> " << pts[i]); ++ //this->RemoveReferenceToCell(oldpt, vtkVolId); ++ //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); +@@ -966,6 +985,7 @@ void SMDS_UnstructuredGrid::ModifyCellNo + //this->AddReferenceToCell(pts[i], vtkVolId); + } + } ++#endif + } + + /*! reorder the nodes of a face +@@ -995,11 +1015,20 @@ 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 ++ GetLinks()->BuildLinks(this); ++ 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 + } + + /*! Create a volume (prism or hexahedron) by duplication of a face. +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp +@@ -33,7 +33,8 @@ SMDS_VtkCellIterator::SMDS_VtkCellIterat + } + else + { +- vtkIdType npts, *pts; ++ vtkIdType npts; ++ vtkIdTypePtr pts; + grid->GetCellPoints( _cellId, npts, pts ); + _vtkIdList->SetNumberOfIds( _nbNodes = npts ); + for (int i = 0; i < _nbNodes; i++) +@@ -67,7 +68,7 @@ SMDS_VtkCellIteratorToUNV::SMDS_VtkCellI + //MESSAGE("SMDS_VtkCellInterlacedIterator (UNV)" << _type); + + _vtkIdList = vtkIdList::New(); +- vtkIdType* pts; ++ vtkIdTypePtr pts; + vtkIdType npts; + vtkUnstructuredGrid* grid = _mesh->getGrid(); + grid->GetCellPoints((vtkIdType)_cellId, npts, pts); +@@ -182,7 +183,7 @@ SMDS_VtkCellIteratorPolyH::SMDS_VtkCellI + { + //MESSAGE("SMDS_VtkCellIterator Polyhedra"); + vtkIdType nFaces = 0; +- vtkIdType* ptIds = 0; ++ vtkIdTypePtr ptIds = 0; + grid->GetFaceStream(_cellId, nFaces, ptIds); + int id = 0; + _nbNodesInFaces = 0; +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp +@@ -67,6 +67,19 @@ bool SMDS_VtkEdge::ChangeNodes(const SMD + bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); ++#ifdef VTK_CELL_ARRAY_V2 ++ vtkNew<vtkIdList> cellPoints; ++ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); ++ if (nbNodes != cellPoints->GetNumberOfIds()) ++ { ++ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); ++ return false; ++ } ++ for (int i = 0; i < nbNodes; i++) ++ { ++ cellPoints->SetId(i, nodes[i]->getVtkId()); ++ } ++#else + vtkIdType npts = 0; + vtkIdType* pts = 0; + grid->GetCellPoints(myVtkID, npts, pts); +@@ -79,6 +92,7 @@ bool SMDS_VtkEdge::ChangeNodes(const SMD + { + pts[i] = nodes[i]->getVtkId(); + } ++#endif + SMDS_Mesh::_meshList[myMeshId]->setMyModified(); + return true; + } +@@ -87,7 +101,7 @@ bool SMDS_VtkEdge::IsMediumNode(const SM + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); + vtkIdType npts = 0; +- vtkIdType* pts = 0; ++ vtkIdTypePtr pts = 0; + grid->GetCellPoints(myVtkID, npts, pts); + //MESSAGE("IsMediumNode " << npts << " " << (node->getVtkId() == pts[npts-1])); + return ((npts == 3) && (node->getVtkId() == pts[2])); +@@ -137,7 +151,8 @@ const SMDS_MeshNode* + SMDS_VtkEdge::GetNode(const int ind) const + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); +- vtkIdType npts, *pts; ++ vtkIdType npts; ++ vtkIdTypePtr pts; + grid->GetCellPoints( this->myVtkID, npts, pts ); + return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ ind ]); + } +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp +@@ -101,6 +101,19 @@ void SMDS_VtkFace::initQuadPoly(const st + bool SMDS_VtkFace::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); ++#ifdef VTK_CELL_ARRAY_V2 ++ vtkNew<vtkIdList> cellPoints; ++ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); ++ if (nbNodes != cellPoints->GetNumberOfIds()) ++ { ++ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); ++ return false; ++ } ++ for (int i = 0; i < nbNodes; i++) ++ { ++ cellPoints->SetId(i, nodes[i]->getVtkId()); ++ } ++#else + vtkIdType npts = 0; + vtkIdType* pts = 0; + grid->GetCellPoints(myVtkID, npts, pts); +@@ -113,6 +126,7 @@ bool SMDS_VtkFace::ChangeNodes(const SMD + { + pts[i] = nodes[i]->getVtkId(); + } ++#endif + SMDS_Mesh::_meshList[myMeshId]->setMyModified(); + return true; + } +@@ -173,7 +187,8 @@ const SMDS_MeshNode* + SMDS_VtkFace::GetNode(const int ind) const + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); +- vtkIdType npts, *pts; ++ vtkIdType npts; ++ vtkIdTypePtr pts; + grid->GetCellPoints( this->myVtkID, npts, pts ); + return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ ind ]); + } +@@ -186,7 +201,8 @@ SMDS_VtkFace::GetNode(const int ind) con + int SMDS_VtkFace::GetNodeIndex( const SMDS_MeshNode* node ) const + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); +- vtkIdType npts, *pts; ++ vtkIdType npts; ++ vtkIdTypePtr pts; + grid->GetCellPoints( this->myVtkID, npts, pts ); + for ( vtkIdType i = 0; i < npts; ++i ) + if ( pts[i] == node->getVtkId() ) +@@ -251,7 +267,7 @@ bool SMDS_VtkFace::IsMediumNode(const SM + return false; + } + vtkIdType npts = 0; +- vtkIdType* pts = 0; ++ vtkIdTypePtr pts = 0; + grid->GetCellPoints(myVtkID, npts, pts); + vtkIdType nodeId = node->getVtkId(); + for (int rank = 0; rank < npts; rank++) +@@ -356,11 +372,18 @@ SMDS_NodeIteratorPtr SMDS_VtkFace::inter + void SMDS_VtkFace::ChangeApex(SMDS_MeshNode* node) + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); ++#ifdef VTK_CELL_ARRAY_V2 ++ vtkNew<vtkIdList> cellPoints; ++ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); ++ grid->RemoveReferenceToCell(cellPoints->GetId(0), myVtkID); ++ cellPoints->SetId(0, node->getVtkId()); ++#else + vtkIdType npts = 0; + vtkIdType* pts = 0; + grid->GetCellPoints(myVtkID, npts, pts); + grid->RemoveReferenceToCell(pts[0], myVtkID); + pts[0] = node->getVtkId(); ++#endif + node->AddInverseElement(this), + SMDS_Mesh::_meshList[myMeshId]->setMyModified(); + } +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp +@@ -133,6 +133,19 @@ void SMDS_VtkVolume::initPoly(const std: + bool SMDS_VtkVolume::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) + { + vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); ++#ifdef VTK_CELL_ARRAY_V2 ++ vtkNew<vtkIdList> cellPoints; ++ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); ++ if (nbNodes != cellPoints->GetNumberOfIds()) ++ { ++ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); ++ return false; ++ } ++ for (int i = 0; i < nbNodes; i++) ++ { ++ cellPoints->SetId(i, nodes[i]->getVtkId()); ++ } ++#else + vtkIdType npts = 0; + vtkIdType* pts = 0; + grid->GetCellPoints(myVtkID, npts, pts); +@@ -145,6 +158,7 @@ bool SMDS_VtkVolume::ChangeNodes(const S + { + pts[i] = nodes[i]->getVtkId(); + } ++#endif + SMDS_Mesh::_meshList[myMeshId]->setMyModified(); + return true; + } +@@ -207,7 +221,7 @@ int SMDS_VtkVolume::NbFaces() const + case VTK_POLYHEDRON: + { + vtkIdType nFaces = 0; +- vtkIdType* ptIds = 0; ++ vtkIdTypePtr ptIds = 0; + grid->GetFaceStream(this->myVtkID, nFaces, ptIds); + nbFaces = nFaces; + break; +@@ -236,7 +250,7 @@ int SMDS_VtkVolume::NbNodes() const + else + { + vtkIdType nFaces = 0; +- vtkIdType* ptIds = 0; ++ vtkIdTypePtr ptIds = 0; + grid->GetFaceStream(this->myVtkID, nFaces, ptIds); + int id = 0; + for (int i = 0; i < nFaces; i++) +@@ -276,7 +290,7 @@ int SMDS_VtkVolume::NbEdges() const + case VTK_POLYHEDRON: + { + vtkIdType nFaces = 0; +- vtkIdType* ptIds = 0; ++ vtkIdTypePtr ptIds = 0; + grid->GetFaceStream(this->myVtkID, nFaces, ptIds); + nbEdges = 0; + int id = 0; +@@ -312,7 +326,7 @@ int SMDS_VtkVolume::NbFaceNodes(const in + if (aVtkType == VTK_POLYHEDRON) + { + vtkIdType nFaces = 0; +- vtkIdType* ptIds = 0; ++ vtkIdTypePtr ptIds = 0; + grid->GetFaceStream(this->myVtkID, nFaces, ptIds); + int id = 0; + for (int i = 0; i < nFaces; i++) +@@ -342,7 +356,7 @@ const SMDS_MeshNode* SMDS_VtkVolume::Get + if (aVtkType == VTK_POLYHEDRON) + { + vtkIdType nFaces = 0; +- vtkIdType* ptIds = 0; ++ vtkIdTypePtr ptIds = 0; + grid->GetFaceStream(this->myVtkID, nFaces, ptIds); + int id = 0; + for (int i = 0; i < nFaces; i++) +@@ -372,7 +386,7 @@ std::vector<int> SMDS_VtkVolume::GetQuan + if (aVtkType == VTK_POLYHEDRON) + { + vtkIdType nFaces = 0; +- vtkIdType* ptIds = 0; ++ vtkIdTypePtr ptIds = 0; + grid->GetFaceStream(this->myVtkID, nFaces, ptIds); + int id = 0; + for (int i = 0; i < nFaces; i++) +@@ -430,7 +444,7 @@ const SMDS_MeshNode* SMDS_VtkVolume::Get + if ( aVtkType == VTK_POLYHEDRON) + { + vtkIdType nFaces = 0; +- vtkIdType* ptIds = 0; ++ vtkIdTypePtr ptIds = 0; + grid->GetFaceStream(this->myVtkID, nFaces, ptIds); + int id = 0, nbPoints = 0; + for (int i = 0; i < nFaces; i++) +@@ -443,7 +457,8 @@ const SMDS_MeshNode* SMDS_VtkVolume::Get + } + return 0; + } +- vtkIdType npts, *pts; ++ vtkIdType npts; ++ vtkIdTypePtr pts; + grid->GetCellPoints( this->myVtkID, npts, pts ); + const std::vector<int>& interlace = SMDS_MeshCell::fromVtkOrder( VTKCellType( aVtkType )); + return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ interlace.empty() ? ind : interlace[ind]] ); +@@ -460,7 +475,7 @@ int SMDS_VtkVolume::GetNodeIndex( const + if ( aVtkType == VTK_POLYHEDRON) + { + vtkIdType nFaces = 0; +- vtkIdType* ptIds = 0; ++ vtkIdTypePtr ptIds = 0; + grid->GetFaceStream(this->myVtkID, nFaces, ptIds); + int id = 0; + for (int iF = 0; iF < nFaces; iF++) +@@ -473,7 +488,8 @@ int SMDS_VtkVolume::GetNodeIndex( const + } + return -1; + } +- vtkIdType npts, *pts; ++ vtkIdType npts; ++ vtkIdTypePtr pts; + grid->GetCellPoints( this->myVtkID, npts, pts ); + for ( vtkIdType i = 0; i < npts; ++i ) + if ( pts[i] == node->getVtkId() ) +@@ -534,7 +550,7 @@ bool SMDS_VtkVolume::IsMediumNode(const + return false; + } + vtkIdType npts = 0; +- vtkIdType* pts = 0; ++ vtkIdTypePtr pts = 0; + grid->GetCellPoints(myVtkID, npts, pts); + vtkIdType nodeId = node->getVtkId(); + for (int rank = 0; rank < npts; rank++) +Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp ++++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp +@@ -11348,7 +11348,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGrou + { + int oldId = *itn; + //MESSAGE(" node " << oldId); +- vtkCellLinks::Link l = grid->GetCellLinks()->GetLink(oldId); ++ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(grid->GetCellLinks())->GetLink(oldId); + for (int i=0; i<l.ncells; i++) + { + int vtkId = l.cells[i]; +@@ -11527,7 +11527,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGrou + //MESSAGE(" domain " << idom << " volume " << elem->GetID()); + double values[3]; + vtkIdType npts = 0; +- vtkIdType* pts = 0; ++ vtkIdTypePtr pts = 0; + grid->GetCellPoints(vtkVolIds[ivol], npts, pts); + SMDS_VtkVolume::gravityCenter(grid, pts, npts, values); + if (id ==0) +@@ -11708,7 +11708,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGrou + { + int oldId = itnod->first; + //MESSAGE(" node " << oldId); +- vtkCellLinks::Link l = grid->GetCellLinks()->GetLink(oldId); ++ vtkCellLinks::Link l = static_cast<vtkCellLinks*>(grid->GetCellLinks())->GetLink(oldId); + for (int i = 0; i < l.ncells; i++) + { + int vtkId = l.cells[i]; +@@ -12165,7 +12165,7 @@ void SMESH_MeshEditor::CreateHoleSkin(do + MESSAGE("volume to check, vtkId " << vtkId << " smdsId " << meshDS->fromVtkToSmds(vtkId)); + bool volInside = false; + vtkIdType npts = 0; +- vtkIdType* pts = 0; ++ vtkIdTypePtr pts = 0; + grid->GetCellPoints(vtkId, npts, pts); + for (int i=0; i<npts; i++) + { +Index: FreeCAD-0.19.2/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp +=================================================================== +--- FreeCAD-0.19.2.orig/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp ++++ FreeCAD-0.19.2/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp +@@ -20,7 +20,6 @@ + * * + ***************************************************************************/ + +- + #include "PreCompiled.h" + + #ifndef _PreComp_ Deleted: freecad.xml =================================================================== --- freecad.xml 2021-11-23 15:08:00 UTC (rev 1054469) +++ freecad.xml 2021-11-23 15:08:09 UTC (rev 1054470) @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> - <mime-type type="application/x-extension-fcstd"> - <sub-class-of type="application/zip"/> - <comment>FreeCAD document</comment> - <glob pattern="*.fcstd"/> - <icon name="freecad"/> - </mime-type> -</mime-info> Copied: freecad/repos/community-x86_64/freecad.xml (from rev 1054469, freecad/trunk/freecad.xml) =================================================================== --- freecad.xml (rev 0) +++ freecad.xml 2021-11-23 15:08:09 UTC (rev 1054470) @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> + <mime-type type="application/x-extension-fcstd"> + <sub-class-of type="application/zip"/> + <comment>FreeCAD document</comment> + <glob pattern="*.fcstd"/> + <icon name="freecad"/> + </mime-type> +</mime-info>