[arch-commits] Commit in freecad/repos/community-x86_64 (8 files)
Alexander Rødseth
arodseth at gemini.archlinux.org
Wed Nov 3 17:07:10 UTC 2021
Date: Wednesday, November 3, 2021 @ 17:07:10
Author: arodseth
Revision: 1035646
archrelease: copy trunk to community-x86_64
Added:
freecad/repos/community-x86_64/PKGBUILD
(from rev 1035645, freecad/trunk/PKGBUILD)
freecad/repos/community-x86_64/freecad-boost.patch
(from rev 1035645, freecad/trunk/freecad-boost.patch)
freecad/repos/community-x86_64/freecad-vtk9.patch
(from rev 1035645, freecad/trunk/freecad-vtk9.patch)
freecad/repos/community-x86_64/freecad.xml
(from rev 1035645, 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 | 202 +++---
freecad-boost.patch | 50 -
freecad-vtk9.patch | 1654 +++++++++++++++++++++++++-------------------------
freecad.xml | 18
4 files changed, 964 insertions(+), 960 deletions(-)
Deleted: PKGBUILD
===================================================================
--- PKGBUILD 2021-11-03 17:06:59 UTC (rev 1035645)
+++ PKGBUILD 2021-11-03 17:07:10 UTC (rev 1035646)
@@ -1,99 +0,0 @@
-# Maintainer: Alexander F. Rødseth <xyproto at archlinux.org>
-# Contributor: loqs <bugs-archlinux at entropy-collector.net>
-# Contributor: Gabriel Souza Franco <gabrielfrancosouza at gmail.com>
-# Contributor: Florian Pritz
-# Contributor: Jonas Heinrich <onny at project-insanity.org>
-# Contributor: Jordi De Groof <jordi.degroof at gmail.com>
-# Contributor: mickele
-# Contributor: manwithgrenade
-# Contributor: bricem13
-# Contributor: gborzi
-
-pkgname=freecad
-pkgver=0.19.2
-pkgrel=4
-_commit=7b5e18a0759de778b74d3a5c17eba9cb815035ac # tag: 0.19.2
-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-matplotlib python-pivy python-ply python-pyside2
- qt5-svg qt5-tools qt5-webkit qt5-x11extras qt5-xmlpatterns
- xerces-c)
-makedepends=(boost cmake coin eigen gcc-fortran gendesk git ninja
- python-shiboken2 shiboken2 swig python-mpi4py postgresql-libs pdal liblas libharu adios2 utf8cpp jdk-openjdk openvr)
-source=("git+https://github.com/FreeCAD/FreeCAD#commit=$_commit" freecad.xml
- freecad-vtk9.patch
- freecad-boost.patch)
-b2sums=('SKIP'
- 'f5f295b9b5f268126feffbe3f3344c124faf5e2263f3f071348bd7f5d0bf2e30eb33fcf174d0ab76ad80ca7bd8ddea95ccbaf7f33f0896189ac78603fecb9485'
- '242702f926101c57774046548068d17b22bd582ba1a1c45534ac8ceaa174c56277db80f32bed8ad1475b37006a1d777193b6c098ed8a733772152a898d1dd825'
- '6ec5dcead7f3438b387aeb3f608b910105d493aafcd47ae84715cdfe6f8651926056283ec4aeeab542b89df9fd9ffc2dbb74f5593e864acd23c8b352033ed1dc')
-
-prepare() {
- patch -d FreeCAD -p1 -i "$srcdir"/freecad-vtk9.patch # Fix build with VTK 9 (Fedora)
- patch -d FreeCAD -p1 -i "$srcdir"/freecad-boost.patch # Fix Boost linking with VTK 9
-
- cd FreeCAD/src
- gendesk -f -n --pkgname "$pkgname" --pkgdesc "$pkgdesc" --name FreeCAD \
- --mimetypes='application/x-extension-fcstd' --startupnotify=true
-}
-
-build() {
- # OpenCascade requires that /bin comes before /usr/bin in $PATH
- export PATH="/usr/bin:$PATH"
-
- mkdir -p build
- cd build
- cmake ../FreeCAD \
- -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 OpenVR_INCLUDE_DIR=/usr/include/openvr/ \
- -D OpenVR_LIBRARY=/usr/lib/libopenvr_api.so \
- -G Ninja
- ninja
-}
-
-package() {
- DESTDIR="$pkgdir" ninja -C build install
-
- # Desktop shortcut
- install -Dm644 FreeCAD/src/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 1035645, freecad/trunk/PKGBUILD)
===================================================================
--- PKGBUILD (rev 0)
+++ PKGBUILD 2021-11-03 17:07:10 UTC (rev 1035646)
@@ -0,0 +1,103 @@
+# Maintainer: Alexander F. Rødseth <xyproto at archlinux.org>
+# Contributor: loqs <bugs-archlinux at entropy-collector.net>
+# Contributor: Gabriel Souza Franco <gabrielfrancosouza at gmail.com>
+# Contributor: Florian Pritz
+# Contributor: Jonas Heinrich <onny at project-insanity.org>
+# Contributor: Jordi De Groof <jordi.degroof at gmail.com>
+# Contributor: mickele
+# Contributor: manwithgrenade
+# Contributor: bricem13
+# Contributor: gborzi
+
+pkgname=freecad
+pkgver=0.19.2
+pkgrel=5
+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 coin eigen gcc-fortran gendesk git jdk-openjdk
+ libharu liblas ninja openvr 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 OpenVR_INCLUDE_DIR=/usr/include/openvr/ \
+ -D OpenVR_LIBRARY=/usr/lib/libopenvr_api.so \
+ -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"
+}
Deleted: freecad-boost.patch
===================================================================
--- freecad-boost.patch 2021-11-03 17:06:59 UTC (rev 1035645)
+++ freecad-boost.patch 2021-11-03 17:07:10 UTC (rev 1035646)
@@ -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 1035645, freecad/trunk/freecad-boost.patch)
===================================================================
--- freecad-boost.patch (rev 0)
+++ freecad-boost.patch 2021-11-03 17:07:10 UTC (rev 1035646)
@@ -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-03 17:06:59 UTC (rev 1035645)
+++ freecad-vtk9.patch 2021-11-03 17:07:10 UTC (rev 1035646)
@@ -1,827 +0,0 @@
-From bb9bcbd51df7c3cb76c5823038e4ea0f7e25a9ff Mon Sep 17 00:00:00 2001
-From: wmayer <wmayer at 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 1035645, freecad/trunk/freecad-vtk9.patch)
===================================================================
--- freecad-vtk9.patch (rev 0)
+++ freecad-vtk9.patch 2021-11-03 17:07:10 UTC (rev 1035646)
@@ -0,0 +1,827 @@
+From bb9bcbd51df7c3cb76c5823038e4ea0f7e25a9ff Mon Sep 17 00:00:00 2001
+From: wmayer <wmayer at 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-03 17:06:59 UTC (rev 1035645)
+++ freecad.xml 2021-11-03 17:07:10 UTC (rev 1035646)
@@ -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 1035645, freecad/trunk/freecad.xml)
===================================================================
--- freecad.xml (rev 0)
+++ freecad.xml 2021-11-03 17:07:10 UTC (rev 1035646)
@@ -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>
More information about the arch-commits
mailing list