mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
gnu: freecad: Update to 0.19.3-0.09a05a9.
* gnu/packages/engineering.scm (freecad): Update to 0.19.3-0.09a05a9. [source]: Remove patches. [arguments]: Remove unneeded variables for pyside2 and shiboken2 from 'configure-flags'. * gnu/packages/patches/freecad-boost-serialization.patch: Remove file. * gnu/packages/patches/freecad-vtk9.patch: Remove file. * gnu/locak.mk (dist_patch_DATA): Remove "freecad-boost-serialization.patch" and "freecad-vtk9.patch".
This commit is contained in:
parent
7241ca87d0
commit
2c9f1c4389
4 changed files with 99 additions and 972 deletions
|
@ -1075,8 +1075,6 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/fp16-system-libraries.patch \
|
||||
%D%/packages/patches/fpc-reproducibility.patch \
|
||||
%D%/packages/patches/fplll-std-fenv.patch \
|
||||
%D%/packages/patches/freecad-boost-serialization.patch \
|
||||
%D%/packages/patches/freecad-vtk9.patch \
|
||||
%D%/packages/patches/freedink-engine-fix-sdl-hints.patch \
|
||||
%D%/packages/patches/freeglut-gcc-compat.patch \
|
||||
%D%/packages/patches/freeimage-unbundle.patch \
|
||||
|
|
|
@ -2398,127 +2398,110 @@ (define-public emacs-scad-mode
|
|||
comments.")))
|
||||
|
||||
(define-public freecad
|
||||
(package
|
||||
(name "freecad")
|
||||
(version "0.19.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/FreeCAD/FreeCAD")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1dkiwnqr6bhi2d90hz7ijqd872144c9n9xxpd1vbrmxr2x8cfl88"))
|
||||
(patches (search-patches "freecad-vtk9.patch"
|
||||
"freecad-boost-serialization.patch"))))
|
||||
(build-system qt-build-system)
|
||||
(native-inputs
|
||||
(list doxygen
|
||||
graphviz
|
||||
qttools
|
||||
pkg-config
|
||||
python-pyside-2-tools
|
||||
swig))
|
||||
(inputs
|
||||
(list boost
|
||||
coin3D
|
||||
double-conversion
|
||||
eigen
|
||||
freetype
|
||||
gl2ps
|
||||
glew
|
||||
hdf5-1.10
|
||||
jsoncpp
|
||||
libarea
|
||||
libjpeg-turbo
|
||||
libmedfile
|
||||
libspnav
|
||||
libtheora
|
||||
libtiff
|
||||
libxi
|
||||
libxml++
|
||||
libxmu
|
||||
lz4
|
||||
netcdf
|
||||
opencascade-occt
|
||||
openmpi
|
||||
proj
|
||||
python-gitpython
|
||||
python-matplotlib
|
||||
python-pivy
|
||||
python-ply
|
||||
python-pyside-2
|
||||
python-pyyaml
|
||||
python-shiboken-2
|
||||
python-wrapper
|
||||
qtbase-5
|
||||
qtdeclarative
|
||||
qtsvg
|
||||
qtwebchannel
|
||||
qtwebengine
|
||||
qtx11extras
|
||||
qtxmlpatterns
|
||||
sqlite
|
||||
tbb
|
||||
vtk
|
||||
xerces-c
|
||||
zlib))
|
||||
(arguments
|
||||
`(#:tests? #f ; Project has no tests
|
||||
#:configure-flags
|
||||
,#~(list
|
||||
"-DBUILD_QT5=ON"
|
||||
"-DBUILD_FLAT_MESH:BOOL=ON"
|
||||
"-DBUILD_ENABLE_CXX_STD:STRING=C++17"
|
||||
(string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib")
|
||||
(string-append "-DPYSIDE2UICBINARY="
|
||||
#$(this-package-native-input
|
||||
"python-pyside-2-tools")
|
||||
"/bin/uic")
|
||||
(string-append "-DPYSIDE2RCCBINARY="
|
||||
#$(this-package-native-input
|
||||
"python-pyside-2-tools")
|
||||
"/bin/rcc")
|
||||
"-DPYSIDE_LIBRARY=PySide2::pyside2"
|
||||
(string-append
|
||||
"-DPYSIDE_INCLUDE_DIR="
|
||||
#$(this-package-input "python-pyside-2") "/include;"
|
||||
#$(this-package-input "python-pyside-2") "/include/PySide2;"
|
||||
#$(this-package-input "python-pyside-2") "/include/PySide2/QtCore;"
|
||||
#$(this-package-input "python-pyside-2") "/include/PySide2/QtWidgets;"
|
||||
#$(this-package-input "python-pyside-2") "/include/PySide2/QtGui;")
|
||||
"-DSHIBOKEN_LIBRARY=Shiboken2::libshiboken"
|
||||
(string-append "-DSHIBOKEN_INCLUDE_DIR="
|
||||
#$(this-package-input "python-shiboken-2")
|
||||
"/include/shiboken2"))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'restore-pythonpath
|
||||
(lambda _
|
||||
(substitute* "src/Main/MainGui.cpp"
|
||||
(("_?putenv\\(\"PYTHONPATH=\"\\);") ""))))
|
||||
(add-after 'install 'wrap-pythonpath
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(wrap-program (string-append out "/bin/FreeCAD")
|
||||
(list "GUIX_PYTHONPATH"
|
||||
'prefix (list (getenv "GUIX_PYTHONPATH"))))))))))
|
||||
(home-page "https://www.freecadweb.org/")
|
||||
(synopsis "Your Own 3D Parametric Modeler")
|
||||
(description
|
||||
"FreeCAD is a general purpose feature-based, parametric 3D modeler for
|
||||
;; FIXME: We use a commit directly because upstream has compatibility fixes
|
||||
;; that are not in a release yet for boost, opencascade-occt-7.6 and vtk-9.
|
||||
;; Switch back to a regular version (probably 0.20) when it is released.
|
||||
(let ((commit "09a05a9cd0c4692a57a3e038268b4389b4657fc6")
|
||||
(revision "0"))
|
||||
(package
|
||||
(name "freecad")
|
||||
(version (git-version "0.19.3" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/FreeCAD/FreeCAD")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0818basym0n44dsgix0yv1l00xgv9igrr7wkszd8x74lh1rr591r"))))
|
||||
(build-system qt-build-system)
|
||||
(native-inputs
|
||||
(list doxygen
|
||||
graphviz
|
||||
qttools
|
||||
pkg-config
|
||||
python-pyside-2-tools
|
||||
swig))
|
||||
(inputs
|
||||
(list boost
|
||||
coin3D
|
||||
double-conversion
|
||||
eigen
|
||||
freetype
|
||||
gl2ps
|
||||
glew
|
||||
hdf5-1.10
|
||||
jsoncpp
|
||||
libarea
|
||||
libjpeg-turbo
|
||||
libmedfile
|
||||
libspnav
|
||||
libtheora
|
||||
libtiff
|
||||
libxi
|
||||
libxml++
|
||||
libxmu
|
||||
lz4
|
||||
netcdf
|
||||
opencascade-occt
|
||||
openmpi
|
||||
proj
|
||||
python-gitpython
|
||||
python-matplotlib
|
||||
python-pivy
|
||||
python-ply
|
||||
python-pyside-2
|
||||
python-pyyaml
|
||||
python-shiboken-2
|
||||
python-wrapper
|
||||
qtbase-5
|
||||
qtdeclarative
|
||||
qtsvg
|
||||
qtwebchannel
|
||||
qtwebengine
|
||||
qtx11extras
|
||||
qtxmlpatterns
|
||||
sqlite
|
||||
tbb
|
||||
vtk
|
||||
xerces-c
|
||||
zlib))
|
||||
(arguments
|
||||
`(#:tests? #f ; Project has no tests
|
||||
#:configure-flags
|
||||
,#~(list
|
||||
"-DBUILD_QT5=ON"
|
||||
"-DBUILD_FLAT_MESH:BOOL=ON"
|
||||
"-DBUILD_ENABLE_CXX_STD:STRING=C++17"
|
||||
(string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib"))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'restore-pythonpath
|
||||
(lambda _
|
||||
(substitute* "src/Main/MainGui.cpp"
|
||||
(("_?putenv\\(\"PYTHONPATH=\"\\);") ""))))
|
||||
(add-after 'install 'wrap-pythonpath
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(wrap-program (string-append out "/bin/FreeCAD")
|
||||
(list "GUIX_PYTHONPATH"
|
||||
'prefix (list (getenv "GUIX_PYTHONPATH"))))))))))
|
||||
(home-page "https://www.freecadweb.org/")
|
||||
(synopsis "Your Own 3D Parametric Modeler")
|
||||
(description
|
||||
"FreeCAD is a general purpose feature-based, parametric 3D modeler for
|
||||
CAD, MCAD, CAx, CAE and PLM, aimed directly at mechanical engineering and
|
||||
product design but also fits a wider range of uses in engineering, such as
|
||||
architecture or other engineering specialties. It is 100% Open Source (LGPL2+
|
||||
license) and extremely modular, allowing for very advanced extension and
|
||||
customization.")
|
||||
(license
|
||||
(list
|
||||
license:lgpl2.1+
|
||||
license:lgpl2.0+
|
||||
license:gpl3+
|
||||
license:bsd-3))))
|
||||
(license
|
||||
(list
|
||||
license:lgpl2.1+
|
||||
license:lgpl2.0+
|
||||
license:gpl3+
|
||||
license:bsd-3)))))
|
||||
|
||||
(define-public libmedfile
|
||||
(package
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
Taken from: https://github.com/archlinux/svntogit-community/blob/packages/freecad/trunk/freecad-boost.patch.
|
||||
|
||||
Index: FreeCAD-0.19.2/CMakeLists.txt
|
||||
===================================================================
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/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
|
||||
===================================================================
|
||||
--- a/src/App/CMakeLists.txt
|
||||
+++ b/src/App/CMakeLists.txt
|
||||
@@ -59,7 +59,7 @@ include_directories(
|
||||
|
||||
set(FreeCADApp_LIBS
|
||||
FreeCADBase
|
||||
- ${Boost_LIBRARIES}
|
||||
+ ${Boost_LIBRARIES_App}
|
||||
)
|
||||
|
||||
if (BUILD_QT5)
|
|
@ -1,827 +0,0 @@
|
|||
From bb9bcbd51df7c3cb76c5823038e4ea0f7e25a9ff Mon Sep 17 00:00:00 2001
|
||||
From: wmayer <wmayer@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_
|
Loading…
Reference in a new issue