aboutsummaryrefslogtreecommitdiff
path: root/cad/freecad
diff options
context:
space:
mode:
authorChristoph Moench-Tegeder <cmt@FreeBSD.org>2022-06-15 13:24:50 +0000
committerChristoph Moench-Tegeder <cmt@FreeBSD.org>2022-06-15 13:24:50 +0000
commit21a1b657eea111bc0864c10754fabc5e55728c39 (patch)
treedaf87ccce3bac92af35f2e1b4753cff662d6bfb4 /cad/freecad
parente64dd94c22dc59ad474126f79c0e4374519c0618 (diff)
downloadports-21a1b657eea111bc0864c10754fabc5e55728c39.tar.gz
ports-21a1b657eea111bc0864c10754fabc5e55728c39.zip
cad/freecad: update to 0.20
Diffstat (limited to 'cad/freecad')
-rw-r--r--cad/freecad/Makefile8
-rw-r--r--cad/freecad/distinfo6
-rw-r--r--cad/freecad/files/patch-0cfea3fee3e7848bbf043d2b1a19f6405d7ebe25820
-rw-r--r--cad/freecad/files/patch-6f3b00d67ec0bd0072b7b493e2a38d2a2e3af27d133
-rw-r--r--cad/freecad/files/patch-74639da997d5f2e53f001d9f256be86ceee901f5477
-rw-r--r--cad/freecad/files/patch-cMake_FindPySide2Tools.cmake20
-rw-r--r--cad/freecad/files/patch-cMake_FreeCAD__Helpers_SetupSalomeSMESH.cmake39
-rw-r--r--cad/freecad/files/patch-src_3rdParty_libE57Format_src_CheckedFile.cpp34
-rw-r--r--cad/freecad/files/patch-src_3rdParty_salomesmesh_src_SMESH_SMESH_Mesh.cpp10
-rw-r--r--cad/freecad/files/patch-src_App_PropertyExpressionEngine.h11
-rw-r--r--cad/freecad/files/patch-src_Mod_Fem_App_FemConstraint.cpp22
-rw-r--r--cad/freecad/files/patch-src_Mod_Fem_App_FemConstraintFixed.cpp11
-rw-r--r--cad/freecad/files/patch-src_Mod_MeshPart_App_MeshFlattening.cpp52
-rw-r--r--cad/freecad/files/patch-src_Mod_PartDesign_Gui_ViewProviderAddSub.cpp21
-rw-r--r--cad/freecad/files/patch-src_Mod_PartDesign_Gui_ViewProviderTransformed.cpp19
-rw-r--r--cad/freecad/files/patch-src_Mod_Part_App_AppPartPy.cpp29
-rw-r--r--cad/freecad/files/patch-src_Mod_Part_App_Tools.cpp45
-rw-r--r--cad/freecad/files/patch-src_Mod_Part_App_TopoShape.cpp146
-rw-r--r--cad/freecad/files/patch-src_Mod_Part_Gui_ViewProviderExt.cpp81
-rw-r--r--cad/freecad/files/patch-src_Mod_Raytracing_App_PovTools.cpp23
-rw-r--r--cad/freecad/pkg-plist373
21 files changed, 390 insertions, 1990 deletions
diff --git a/cad/freecad/Makefile b/cad/freecad/Makefile
index a7d73e106ed0..ae4ecbd4f147 100644
--- a/cad/freecad/Makefile
+++ b/cad/freecad/Makefile
@@ -1,6 +1,5 @@
PORTNAME= FreeCAD
-DISTVERSION= 0.19.4
-PORTREVISION= 1
+DISTVERSION= 0.20
# use these for bugfixes/snapshots
# DISTVERSION= 0.18-16093 # git rev-list --count
# DISTVERSIONSUFFIX= -g690774c0e
@@ -39,8 +38,9 @@ USES= dos2unix compiler:c++17-lang cmake cpe gl eigen:3 fortran jpeg \
USE_GITHUB= yes
USE_XORG= ice sm x11 xext xt
USE_GL= gl glu
-USE_QT= buildtools concurrent core gui network opengl printsupport \
- qmake_build svg webkit widgets xml xmlpatterns
+USE_QT= buildtools concurrent core declarative gui location network \
+ opengl printsupport qmake_build svg webchannel webengine \
+ widgets xml xmlpatterns
USE_LDCONFIG= yes
CPE_VENDOR= freecad_project
diff --git a/cad/freecad/distinfo b/cad/freecad/distinfo
index 4786748e1b59..0cefc5129d99 100644
--- a/cad/freecad/distinfo
+++ b/cad/freecad/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1646236843
-SHA256 (FreeCAD-FreeCAD-0.19.4_GH0.tar.gz) = e40a1c343956e13c56cc8578d025ae83d68d9d20acda1732953bc8a3883e9722
-SIZE (FreeCAD-FreeCAD-0.19.4_GH0.tar.gz) = 296990652
+TIMESTAMP = 1655206018
+SHA256 (FreeCAD-FreeCAD-0.20_GH0.tar.gz) = c4d9ce782d3da0edfa16d6218db4ce8613e346124ee47b3fe6a6dae40c0a61d9
+SIZE (FreeCAD-FreeCAD-0.20_GH0.tar.gz) = 75452957
diff --git a/cad/freecad/files/patch-0cfea3fee3e7848bbf043d2b1a19f6405d7ebe25 b/cad/freecad/files/patch-0cfea3fee3e7848bbf043d2b1a19f6405d7ebe25
deleted file mode 100644
index 1a36b3eddc31..000000000000
--- a/cad/freecad/files/patch-0cfea3fee3e7848bbf043d2b1a19f6405d7ebe25
+++ /dev/null
@@ -1,820 +0,0 @@
-This is "Make smesh compile with vtk9" from
-https://github.com/FreeCAD/FreeCAD/commit/0cfea3fee3e7848bbf043d2b1a19f6405d7ebe25.patch
-slightly adopted for "make patch".
-We keep a local copy here as github's patch file is not stable (checksum
-keeps changing due to different commit hash representations).
-
-From 0cfea3fee3e7848bbf043d2b1a19f6405d7ebe25 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 ++--
- 13 files changed, 173 insertions(+), 57 deletions(-)
-
-diff --git src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx b/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx
-index 14a6d9a763f..0e9b9e6c905 100644
---- src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx
-+++ 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
-diff --git src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx b/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx
-index 9e4a23eddfb..77465814541 100644
---- src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx
-+++ 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)
- {
-diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp
-index 299093c94f6..2680c217305 100644
---- src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp
-+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp
-@@ -67,10 +67,16 @@ void SMDS_BallElement::SetDiameter(double diameter)
- 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::ostream & OS) const
- 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 ]);
- }
-diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp
-index d6049c0bd19..a41f5c18e78 100644
---- src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp
-+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp
-@@ -303,7 +303,7 @@ int SMDS_Down1D::getNodeSet(int cellId, int* nodeSet)
- 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 *pts, std::vector<int>& vtkIds)
- {
- 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 cellId, int* ids)
- // --- 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::computeVolumeIdsFromNodesFace(int* pts, int npts, int* ids)
- 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::computeVolumeIdsFromNodesFace(int* pts, int npts, int* ids)
- 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, std::set<int>& nodeSet)
- {
- 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::getOrderedNodesOfFace(int cellId, std::vector<vtkIdType>& o
- //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::computeFacesWithNodes(int cellId, ListElemByNodesType& face
- // --- 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::getOrderedNodesOfFace(int cellId, std::vector<vtkIdType
- //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::computeFacesWithNodes(int cellId, ListElemByNodesType&
- // --- 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::getOrderedNodesOfFace(int cellId, std::vector<vtkIdType>&
- //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::computeFacesWithNodes(int cellId, ListElemByNodesType& fa
- // --- 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::getOrderedNodesOfFace(int cellId, std::vector<vtkIdTy
- //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::computeFacesWithNodes(int cellId, ListElemByNodesType
- // --- 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::getOrderedNodesOfFace(int cellId, std::vector<vtkIdType>& o
- //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::computeFacesWithNodes(int cellId, ListElemByNodesType& face
- // --- 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::getOrderedNodesOfFace(int cellId, std::vector<vtkIdType
- //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::computeFacesWithNodes(int cellId, ListElemByNodesType&
- // --- 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::getOrderedNodesOfFace(int cellId, std::vector<vtkIdType>& or
- //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::computeFacesWithNodes(int cellId, ListElemByNodesType& faces
- // --- 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::getOrderedNodesOfFace(int cellId, std::vector<vtkIdType>
- //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::computeFacesWithNodes(int cellId, ListElemByNodesType& f
- // --- 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
-diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp
-index 61c8e751d94..1eac2907d3d 100644
---- src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp
-+++ 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);
-diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp
-index 95438eab064..0df32e3b97c 100644
---- src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp
-+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp
-@@ -146,6 +146,17 @@ bool SMDS_Mesh0DElement::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbN
- 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(const SMDS_MeshNode* nodes[], const int nbN
- }
- myNode = nodes[0];
- pts[0] = myNode->getVtkId();
-+#endif
-
- SMDS_Mesh::_meshList[myMeshId]->setMyModified();
- return true;
-diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp
-index f647a5f1b8f..5b903c8fb55 100644
---- src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp
-+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp
-@@ -191,7 +191,7 @@ class SMDS_MeshNode_MyInvIterator: public SMDS_ElemIterator
- 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 type) const
- 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(const SMDS_MeshElement* ME)
- 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;
-diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
-index fbd903b1e74..ff2b81e9694 100644
---- src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
-+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
-@@ -139,8 +139,8 @@ int SMDS_UnstructuredGrid::InsertNextLinkedCell(int type, int npts, vtkIdType *p
- 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(vtkUnsignedCharArray *newTypes,
- {
- 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(std::set<int>& nodeSet, int downId, unsig
- */
- 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::ModifyCellNodes(int vtkVolId, std::map<int, int> loc
- //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.
-diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp
-index deb05985f00..63b6eabb704 100644
---- src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp
-+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp
-@@ -33,7 +33,8 @@ SMDS_VtkCellIterator::SMDS_VtkCellIterator(SMDS_Mesh* mesh, int vtkCellId, SMDSA
- }
- 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_VtkCellIteratorToUNV(SMDS_Mesh* mesh, int vtkCel
- //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_VtkCellIteratorPolyH(SMDS_Mesh* mesh, int vtkCel
- {
- //MESSAGE("SMDS_VtkCellIterator Polyhedra");
- vtkIdType nFaces = 0;
-- vtkIdType* ptIds = 0;
-+ vtkIdTypePtr ptIds = 0;
- grid->GetFaceStream(_cellId, nFaces, ptIds);
- int id = 0;
- _nbNodesInFaces = 0;
-diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp
-index 9786abf9aae..6d772a3cd4a 100644
---- src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp
-+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp
-@@ -67,6 +67,19 @@ bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode * node1, const SMDS_MeshNode
- bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes)
- {
- vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
-+#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 SMDS_MeshNode* nodes[], const int nbNodes)
- {
- pts[i] = nodes[i]->getVtkId();
- }
-+#endif
- SMDS_Mesh::_meshList[myMeshId]->setMyModified();
- return true;
- }
-@@ -87,7 +101,7 @@ bool SMDS_VtkEdge::IsMediumNode(const SMDS_MeshNode* node) const
- {
- 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 ]);
- }
-diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp
-index 1389e0d3585..cb981bfb18e 100644
---- src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp
-+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp
-@@ -101,6 +101,19 @@ void SMDS_VtkFace::initQuadPoly(const std::vector<vtkIdType>& nodeIds, SMDS_Mesh
- 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 SMDS_MeshNode* nodes[], const int nbNodes)
- {
- 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) const
- 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 SMDS_MeshNode* node) 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++)
-@@ -356,11 +372,18 @@ SMDS_NodeIteratorPtr SMDS_VtkFace::interlacedNodesIterator() const
- 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();
- }
-diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp
-index 015edf75fd2..19ebd0746c8 100644
---- src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp
-+++ src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp
-@@ -133,6 +133,19 @@ void SMDS_VtkVolume::initPoly(const std::vector<vtkIdType>& nodeIds,
- 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 SMDS_MeshNode* nodes[], const int nbNodes
- {
- 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 int face_ind) 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 i = 0; i < nFaces; i++)
-@@ -342,7 +356,7 @@ const SMDS_MeshNode* SMDS_VtkVolume::GetFaceNode(const int face_ind, const int n
- 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::GetQuantities() 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 i = 0; i < nFaces; i++)
-@@ -430,7 +444,7 @@ const SMDS_MeshNode* SMDS_VtkVolume::GetNode(const int ind) const
- 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::GetNode(const int ind) const
- }
- 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 SMDS_MeshNode* node ) 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 SMDS_MeshNode* node ) 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 SMDS_MeshNode* node) 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++)
-diff --git src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp
-index fcd044b00f2..f54c24f8618 100644
---- src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp
-+++ src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp
-@@ -11348,7 +11348,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vector<TIDSorted
- {
- 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::DoubleNodesOnGroupBoundaries( const std::vector<TIDSorted
- //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::DoubleNodesOnGroupBoundaries( const std::vector<TIDSorted
- {
- 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(double radius,
- 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++)
- {
diff --git a/cad/freecad/files/patch-6f3b00d67ec0bd0072b7b493e2a38d2a2e3af27d b/cad/freecad/files/patch-6f3b00d67ec0bd0072b7b493e2a38d2a2e3af27d
deleted file mode 100644
index 433498c0f55e..000000000000
--- a/cad/freecad/files/patch-6f3b00d67ec0bd0072b7b493e2a38d2a2e3af27d
+++ /dev/null
@@ -1,133 +0,0 @@
-commit 6f3b00d67ec0bd0072b7b493e2a38d2a2e3af27d
-Author: wmayer <wmayer@users.sourceforge.net>
-Date: Mon Oct 11 00:30:22 2021 +0200
-
- SMESH: port to OCCT 7.6
-
-diff --git src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp
-index cd6f0b2b07..ea83984b97 100644
---- src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp
-+++ src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp
-@@ -56,6 +56,7 @@
- #include <NCollection_Map.hxx>
- #include <Standard_ErrorHandler.hxx>
- #include <Standard_ProgramError.hxx>
-+#include <Standard_Version.hxx>
- #include <TColStd_MapOfInteger.hxx>
- #include <TopExp.hxx>
- #include <TopExp_Explorer.hxx>
-@@ -700,7 +701,13 @@ double NETGENPlugin_Mesher::GetDefaultMinSize(const TopoDS_Shape& geom,
- BRep_Tool::Triangulation ( TopoDS::Face( fExp.Current() ), loc);
- if ( triangulation.IsNull() ) continue;
- const double fTol = BRep_Tool::Tolerance( TopoDS::Face( fExp.Current() ));
-+#if OCC_VERSION_HEX < 0x070600
- const TColgp_Array1OfPnt& points = triangulation->Nodes();
-+#else
-+ auto points = [&triangulation](Standard_Integer index) {
-+ return triangulation->Node(index);
-+ };
-+#endif
- const Poly_Array1OfTriangle& trias = triangulation->Triangles();
- for ( int iT = trias.Lower(); iT <= trias.Upper(); ++iT )
- {
-diff --git src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp
-index 5a07308310..fbb1b25008 100644
---- src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp
-+++ src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp
-@@ -38,10 +38,13 @@
- #include <GC_MakeSegment.hxx>
- #include <GeomAPI_ExtremaCurveCurve.hxx>
- #include <Geom_Line.hxx>
--#include <IntAna_IntConicQuad.hxx>
--#include <IntAna_Quadric.hxx>
-+#include <gp_Cone.hxx>
-+#include <gp_Cylinder.hxx>
- #include <gp_Lin.hxx>
- #include <gp_Pln.hxx>
-+#include <gp_Sphere.hxx>
-+#include <IntAna_IntConicQuad.hxx>
-+#include <IntAna_Quadric.hxx>
-
- #include <limits>
- #include <numeric>
-diff --git src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp
-index 88970f36b5..7c51601c7b 100644
---- src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp
-+++ src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp
-@@ -46,6 +46,7 @@
- #include <Poly_Array1OfTriangle.hxx>
- #include <Poly_PolygonOnTriangulation.hxx>
- #include <Poly_Triangulation.hxx>
-+#include <Standard_Version.hxx>
- #include <TColgp_Array1OfPnt.hxx>
- #include <TopExp.hxx>
- #include <TopExp_Explorer.hxx>
-@@ -318,13 +319,26 @@ namespace // internal utils
- {
- myFaceTol = SMESH_MesherHelper::MaxTolerance( face );
- myTree = triaTree;
-+#if OCC_VERSION_HEX < 0x070600
- myNodes = & tr->Nodes();
-+#else
-+ TColgp_Array1OfPnt* trNodes = new TColgp_Array1OfPnt( 1, tr->NbNodes() );
-+ for (Standard_Integer i = myNodes->Lower(); i <= myNodes->Upper(); i++)
-+ {
-+ trNodes->SetValue(i, tr->Node(i));
-+ }
-+ myNodes = trNodes;
-+ myOwnNodes = true;
-+#endif
- myPolyTrias = & tr->Triangles();
- myTriasDeflection = tr->Deflection();
- if ( !loc.IsIdentity() ) // transform nodes if necessary
- {
- TColgp_Array1OfPnt* trsfNodes = new TColgp_Array1OfPnt( myNodes->Lower(), myNodes->Upper() );
- trsfNodes->Assign( *myNodes );
-+#if OCC_VERSION_HEX >= 0x070600
-+ delete myNodes; // it's already a copy
-+#endif
- myNodes = trsfNodes;
- myOwnNodes = true;
- const gp_Trsf& trsf = loc;
-diff --git src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp
-index f7ac411d9a..5d5c15c366 100644
---- src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp
-+++ src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp
-@@ -50,7 +50,7 @@
- #include <Geom_Surface.hxx>
- #include <NCollection_DefineArray2.hxx>
- #include <Precision.hxx>
--#include <Quantity_Parameter.hxx>
-+#include <Standard_Real.hxx>
- #include <TColStd_SequenceOfInteger.hxx>
- #include <TColStd_SequenceOfReal.hxx>
- #include <TColgp_SequenceOfXY.hxx>
-diff --git src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp
-index 8ee0e26832..e9f4618305 100644
---- src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp
-+++ src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp
-@@ -44,7 +44,10 @@
- #include "SMESH_subMeshEventListener.hxx"
- #include "StdMeshers_FaceSide.hxx"
-
-+#include <Standard_Version.hxx>
-+#if OCC_VERSION_HEX < 0x070600
- #include <Adaptor3d_HSurface.hxx>
-+#endif
- #include <BRepAdaptor_Curve2d.hxx>
- #include <BRepAdaptor_Surface.hxx>
- #include <BRepLProp_SLProps.hxx>
-@@ -1340,8 +1343,13 @@ namespace VISCOUS_3D
- //case GeomAbs_SurfaceOfExtrusion:
- case GeomAbs_OffsetSurface:
- {
-+#if OCC_VERSION_HEX < 0x070600
- Handle(Adaptor3d_HSurface) base = surface.BasisSurface();
- return getRovolutionAxis( base->Surface(), axis );
-+#else
-+ Handle(Adaptor3d_Surface) base = surface.BasisSurface();
-+ return getRovolutionAxis( *base, axis );
-+#endif
- }
- default: return false;
- }
diff --git a/cad/freecad/files/patch-74639da997d5f2e53f001d9f256be86ceee901f5 b/cad/freecad/files/patch-74639da997d5f2e53f001d9f256be86ceee901f5
deleted file mode 100644
index dcd1a2d81116..000000000000
--- a/cad/freecad/files/patch-74639da997d5f2e53f001d9f256be86ceee901f5
+++ /dev/null
@@ -1,477 +0,0 @@
-commit 74639da997d5f2e53f001d9f256be86ceee901f5
-Author: wmayer <wmayer@users.sourceforge.net>
-Date: Sat Oct 9 13:49:02 2021 +0200
-
- OCCT: port FreeCAD sources to version 7.6
- SMESH is not yet ported
- Although FreeCAD code compiles with OCCT 7.6 it doesn't work at the moment
-
-diff --git src/Mod/Drawing/App/DrawingExport.cpp src/Mod/Drawing/App/DrawingExport.cpp
-index b87891ed50..7572be417c 100644
---- src/Mod/Drawing/App/DrawingExport.cpp
-+++ src/Mod/Drawing/App/DrawingExport.cpp
-@@ -64,10 +64,7 @@
- #include <BRep_Tool.hxx>
-
- #include <BRepAdaptor_CompCurve.hxx>
--#include <BRepAdaptor_HCompCurve.hxx>
- #include <Approx_Curve3d.hxx>
--#include <BRepAdaptor_HCurve.hxx>
--#include <BRepAdaptor_HCurve.hxx>
- #include <Geom_BSplineCurve.hxx>
- #include <Geom_BezierCurve.hxx>
- #include <GeomConvert_BSplineCurveToBezierCurve.hxx>
-@@ -75,11 +72,19 @@
- #include <Geom2d_BSplineCurve.hxx>
- #include <BRepLProp_CLProps.hxx>
- #include <Standard_Failure.hxx>
-+#include <Standard_Version.hxx>
-+#if OCC_VERSION_HEX < 0x070600
-+#include <BRepAdaptor_HCurve.hxx>
-+#endif
-
- #include "DrawingExport.h"
- #include <Base/Tools.h>
- #include <Base/Vector3D.h>
-
-+#if OCC_VERSION_HEX >= 0x070600
-+using BRepAdaptor_HCurve = BRepAdaptor_Curve;
-+#endif
-+
- using namespace Drawing;
- using namespace std;
-
-diff --git src/Mod/Drawing/App/ProjectionAlgos.cpp src/Mod/Drawing/App/ProjectionAlgos.cpp
-index 9afae7e9c0..da03d49057 100644
---- src/Mod/Drawing/App/ProjectionAlgos.cpp
-+++ src/Mod/Drawing/App/ProjectionAlgos.cpp
-@@ -61,10 +61,7 @@
- #include <BRepMesh_IncrementalMesh.hxx>
- #include <BRepLib.hxx>
- #include <BRepAdaptor_CompCurve.hxx>
--#include <BRepAdaptor_HCompCurve.hxx>
- #include <Approx_Curve3d.hxx>
--#include <BRepAdaptor_HCurve.hxx>
--#include <BRepAdaptor_HCurve.hxx>
- #include <Geom_BSplineCurve.hxx>
- #include <Geom_BezierCurve.hxx>
- #include <GeomConvert_BSplineCurveToBezierCurve.hxx>
-diff --git src/Mod/Import/App/ImpExpDxf.cpp src/Mod/Import/App/ImpExpDxf.cpp
-index 09827bd928..dcd88ef138 100644
---- src/Mod/Import/App/ImpExpDxf.cpp
-+++ src/Mod/Import/App/ImpExpDxf.cpp
-@@ -29,7 +29,6 @@
-
- #include <Approx_Curve3d.hxx>
- #include <BRepAdaptor_Curve.hxx>
--#include <BRepAdaptor_HCurve.hxx>
- #include <BRep_Builder.hxx>
- #include <BRepBuilderAPI_MakeEdge.hxx>
- #include <BRepBuilderAPI_MakeVertex.hxx>
-@@ -47,6 +46,7 @@
- #include <gp_Pnt.hxx>
- #include <gp_Dir.hxx>
- #include <gp_Vec.hxx>
-+#include <Standard_Version.hxx>
- #include <TopoDS.hxx>
- #include <TopoDS_Edge.hxx>
- #include <TopoDS_Vertex.hxx>
-@@ -55,6 +55,9 @@
- #include <TopExp_Explorer.hxx>
- #include <TopoDS_Edge.hxx>
- #include <TColgp_Array1OfPnt.hxx>
-+#if OCC_VERSION_HEX < 0x070600
-+#include <BRepAdaptor_HCurve.hxx>
-+#endif
-
- #include <Base/Console.h>
- #include <Base/Parameter.h>
-@@ -68,6 +71,10 @@
-
- using namespace Import;
-
-+#if OCC_VERSION_HEX >= 0x070600
-+using BRepAdaptor_HCurve = BRepAdaptor_Curve;
-+#endif
-+
-
- //******************************************************************************
- // reading
-diff --git src/Mod/Part/App/GeomPlate/CurveConstraintPyImp.cpp src/Mod/Part/App/GeomPlate/CurveConstraintPyImp.cpp
-index 3271f3651a..b63227d537 100644
---- src/Mod/Part/App/GeomPlate/CurveConstraintPyImp.cpp
-+++ src/Mod/Part/App/GeomPlate/CurveConstraintPyImp.cpp
-@@ -24,10 +24,13 @@
- #include "PreCompiled.h"
- #ifndef _PreComp_
- # include <GeomAdaptor_Curve.hxx>
--# include <GeomAdaptor_HCurve.hxx>
- # include <Geom2dAdaptor_Curve.hxx>
--# include <Geom2dAdaptor_HCurve.hxx>
- # include <Standard_Failure.hxx>
-+# include <Standard_Version.hxx>
-+# if OCC_VERSION_HEX < 0x070600
-+# include <GeomAdaptor_HCurve.hxx>
-+# include <Geom2dAdaptor_HCurve.hxx>
-+# endif
- #endif
-
- #include "GeomPlate/CurveConstraintPy.h"
-@@ -76,6 +79,16 @@ int CurveConstraintPy::PyInit(PyObject* args, PyObject* kwds)
- return -1;
- }
-
-+#if OCC_VERSION_HEX >= 0x070600
-+ Handle(Adaptor3d_Curve) hCurve;
-+ if (curve->getTypeId().isDerivedFrom(GeomTrimmedCurve::getClassTypeId())) {
-+ GeomTrimmedCurve* trim = static_cast<GeomTrimmedCurve*>(curve);
-+ hCurve = new GeomAdaptor_Curve(handle, trim->getFirstParameter(), trim->getLastParameter());
-+ }
-+ else {
-+ hCurve = new GeomAdaptor_Curve(handle);
-+ }
-+#else
- Handle(Adaptor3d_HCurve) hCurve;
- if (curve->getTypeId().isDerivedFrom(GeomTrimmedCurve::getClassTypeId())) {
- GeomTrimmedCurve* trim = static_cast<GeomTrimmedCurve*>(curve);
-@@ -86,6 +99,7 @@ int CurveConstraintPy::PyInit(PyObject* args, PyObject* kwds)
- GeomAdaptor_Curve adapt(handle);
- hCurve = new GeomAdaptor_HCurve(adapt);
- }
-+#endif
-
- ptr.reset(new GeomPlate_CurveConstraint(hCurve, order, nbPts, tolDist, tolAng, tolCurv));
- }
-@@ -212,11 +226,15 @@ PyObject* CurveConstraintPy::curve3d(PyObject *args)
- return nullptr;
-
- try {
-- Handle(Adaptor3d_HCurve) hAdapt = getGeomPlate_CurveConstraintPtr()->Curve3d();
-+ auto hAdapt = getGeomPlate_CurveConstraintPtr()->Curve3d();
- if (hAdapt.IsNull())
- Py_Return;
-
-+#if OCC_VERSION_HEX >= 0x070600
-+ const Adaptor3d_Curve& a3d = *hAdapt;
-+#else
- const Adaptor3d_Curve& a3d = hAdapt->Curve();
-+#endif
- std::unique_ptr<GeomCurve> ptr(Part::makeFromCurveAdaptor(a3d));
- return ptr->getPyObject();
- }
-@@ -282,6 +300,16 @@ PyObject* CurveConstraintPy::setProjectedCurve(PyObject *args)
- return nullptr;
- }
-
-+#if OCC_VERSION_HEX >= 0x070600
-+ Handle(Adaptor2d_Curve2d) hCurve;
-+ if (handle->IsKind(STANDARD_TYPE(Geom2d_TrimmedCurve))) {
-+ Handle(Geom2d_TrimmedCurve) aTC (Handle(Geom2d_TrimmedCurve)::DownCast (handle));
-+ hCurve = new Geom2dAdaptor_Curve(handle, aTC->FirstParameter(), aTC->LastParameter());
-+ }
-+ else {
-+ hCurve = new Geom2dAdaptor_Curve(handle);
-+ }
-+#else
- Handle(Adaptor2d_HCurve2d) hCurve;
- if (handle->IsKind(STANDARD_TYPE(Geom2d_TrimmedCurve))) {
- Handle(Geom2d_TrimmedCurve) aTC (Handle(Geom2d_TrimmedCurve)::DownCast (handle));
-@@ -292,6 +320,7 @@ PyObject* CurveConstraintPy::setProjectedCurve(PyObject *args)
- Geom2dAdaptor_Curve adapt(handle);
- hCurve = new Geom2dAdaptor_HCurve(adapt);
- }
-+#endif
-
- getGeomPlate_CurveConstraintPtr()->SetProjectedCurve(hCurve, tolU, tolV);
- Py_Return;
-@@ -308,11 +337,15 @@ PyObject* CurveConstraintPy::projectedCurve(PyObject *args)
- return nullptr;
-
- try {
-- Handle(Adaptor2d_HCurve2d) hAdapt = getGeomPlate_CurveConstraintPtr()->ProjectedCurve();
-+ auto hAdapt = getGeomPlate_CurveConstraintPtr()->ProjectedCurve();
- if (hAdapt.IsNull())
- Py_Return;
-
-+#if OCC_VERSION_HEX >= 0x070600
-+ const Adaptor2d_Curve2d& a2d = *hAdapt;
-+#else
- const Adaptor2d_Curve2d& a2d = hAdapt->Curve2d();
-+#endif
- std::unique_ptr<Geom2dCurve> ptr(Part::makeFromCurveAdaptor2d(a2d));
- return ptr->getPyObject();
- }
-diff --git src/Mod/Part/App/Geometry.cpp src/Mod/Part/App/Geometry.cpp
-index e6d6396ca9..1d1d67d4f0 100644
---- src/Mod/Part/App/Geometry.cpp
-+++ src/Mod/Part/App/Geometry.cpp
-@@ -51,7 +51,6 @@
- # include <Geom_RectangularTrimmedSurface.hxx>
- # include <Geom_SurfaceOfRevolution.hxx>
- # include <Geom_SurfaceOfLinearExtrusion.hxx>
--# include <GeomAdaptor_HCurve.hxx>
- # include <GeomAPI_Interpolate.hxx>
- # include <GeomConvert.hxx>
- # include <GeomConvert_CompCurveToBSplineCurve.hxx>
-@@ -101,6 +100,9 @@
- # include <GeomAPI_ExtremaCurveCurve.hxx>
- # include <ShapeConstruct_Curve.hxx>
- # include <LProp_NotDefined.hxx>
-+# if OCC_VERSION_HEX < 0x070600
-+# include <GeomAdaptor_HCurve.hxx>
-+# endif
-
- # include <ctime>
- # include <cmath>
-@@ -144,6 +146,9 @@
-
- #include "Geometry.h"
-
-+#if OCC_VERSION_HEX >= 0x070600
-+using GeomAdaptor_HCurve = GeomAdaptor_Curve;
-+#endif
-
- using namespace Part;
-
-diff --git src/Mod/Part/App/PartFeatures.cpp src/Mod/Part/App/PartFeatures.cpp
-index 2dc503bdf2..4d9e1fc0f9 100644
---- src/Mod/Part/App/PartFeatures.cpp
-+++ src/Mod/Part/App/PartFeatures.cpp
-@@ -25,9 +25,7 @@
- #ifndef _PreComp_
- # include <BRepFill.hxx>
- # include <BRepAdaptor_Curve.hxx>
--# include <BRepAdaptor_HCurve.hxx>
- # include <BRepAdaptor_CompCurve.hxx>
--# include <BRepAdaptor_HCompCurve.hxx>
- # include <BRepLib_MakeWire.hxx>
- # include <Geom_BSplineSurface.hxx>
- # include <TopoDS.hxx>
-@@ -43,7 +41,7 @@
- # include <TopExp_Explorer.hxx>
- # include <TopoDS.hxx>
- # include <Precision.hxx>
--# include <Adaptor3d_HCurve.hxx>
-+# include <memory>
- #endif
-
-
-@@ -170,22 +168,18 @@ App::DocumentObjectExecReturn *RuledSurface::execute(void)
-
- if (Orientation.getValue() == 0) {
- // Automatic
-- Handle(Adaptor3d_HCurve) a1;
-- Handle(Adaptor3d_HCurve) a2;
-+ std::unique_ptr<Adaptor3d_Curve> a1;
-+ std::unique_ptr<Adaptor3d_Curve> a2;
- if (!isWire) {
-- BRepAdaptor_Curve adapt1(TopoDS::Edge(S1));
-- BRepAdaptor_Curve adapt2(TopoDS::Edge(S2));
-- a1 = new BRepAdaptor_HCurve(adapt1);
-- a2 = new BRepAdaptor_HCurve(adapt2);
-+ a1 = std::make_unique<BRepAdaptor_Curve>(TopoDS::Edge(S1));
-+ a2 = std::make_unique<BRepAdaptor_Curve>(TopoDS::Edge(S2));
- }
- else {
-- BRepAdaptor_CompCurve adapt1(TopoDS::Wire(S1));
-- BRepAdaptor_CompCurve adapt2(TopoDS::Wire(S2));
-- a1 = new BRepAdaptor_HCompCurve(adapt1);
-- a2 = new BRepAdaptor_HCompCurve(adapt2);
-+ a1 = std::make_unique<BRepAdaptor_CompCurve>(TopoDS::Wire(S1));
-+ a2 = std::make_unique<BRepAdaptor_CompCurve>(TopoDS::Wire(S2));
- }
-
-- if (!a1.IsNull() && !a2.IsNull()) {
-+ if (a1 && a2) {
- // get end points of 1st curve
- Standard_Real first, last;
- first = a1->FirstParameter();
-diff --git src/Mod/Part/App/TopoShapeFacePyImp.cpp src/Mod/Part/App/TopoShapeFacePyImp.cpp
-index ea6cd98bdf..63e8bead74 100644
---- src/Mod/Part/App/TopoShapeFacePyImp.cpp
-+++ src/Mod/Part/App/TopoShapeFacePyImp.cpp
-@@ -493,6 +493,15 @@ PyObject* TopoShapeFacePy::getUVNodes(PyObject *args)
- return Py::new_reference_to(list);
- }
-
-+#if OCC_VERSION_HEX >= 0x070600
-+ for (int i=1; i<=mesh->NbNodes(); i++) {
-+ gp_Pnt2d pt2d = mesh->UVNode(i);
-+ Py::Tuple uv(2);
-+ uv.setItem(0, Py::Float(pt2d.X()));
-+ uv.setItem(1, Py::Float(pt2d.Y()));
-+ list.append(uv);
-+ }
-+#else
- const TColgp_Array1OfPnt2d& aNodesUV = mesh->UVNodes();
- for (int i=aNodesUV.Lower(); i<=aNodesUV.Upper(); i++) {
- gp_Pnt2d pt2d = aNodesUV(i);
-@@ -501,6 +510,7 @@ PyObject* TopoShapeFacePy::getUVNodes(PyObject *args)
- uv.setItem(1, Py::Float(pt2d.Y()));
- list.append(uv);
- }
-+#endif
-
- return Py::new_reference_to(list);
- }
-diff --git src/Mod/Part/App/TopoShapeWirePyImp.cpp src/Mod/Part/App/TopoShapeWirePyImp.cpp
-index 95c1aff681..a1f32d6d03 100644
---- src/Mod/Part/App/TopoShapeWirePyImp.cpp
-+++ src/Mod/Part/App/TopoShapeWirePyImp.cpp
-@@ -344,9 +344,9 @@ PyObject* TopoShapeWirePy::approximate(PyObject *args, PyObject *kwds)
- return 0;
- try {
- BRepAdaptor_CompCurve adapt(TopoDS::Wire(getTopoShapePtr()->getShape()));
-- Handle(Adaptor3d_HCurve) hcurve = adapt.Trim(adapt.FirstParameter(),
-- adapt.LastParameter(),
-- tol2d);
-+ auto hcurve = adapt.Trim(adapt.FirstParameter(),
-+ adapt.LastParameter(),
-+ tol2d);
- Approx_Curve3d approx(hcurve, tol3d, GeomAbs_C0, maxseg, maxdeg);
- if (approx.IsDone()) {
- return new BSplineCurvePy(new GeomBSplineCurve(approx.Curve()));
-diff --git src/Mod/Part/Gui/TaskCheckGeometry.cpp src/Mod/Part/Gui/TaskCheckGeometry.cpp
-index 5de7c16920..aaef13d9d0 100644
---- src/Mod/Part/Gui/TaskCheckGeometry.cpp
-+++ src/Mod/Part/Gui/TaskCheckGeometry.cpp
-@@ -711,8 +711,10 @@ int TaskCheckGeometryResults::goBOPSingleCheck(const TopoDS_Shape& shapeIn, Resu
- #if OCC_VERSION_HEX >= 0x060900
- #if OCC_VERSION_HEX < 0x070500
- BOPCheck.SetProgressIndicator(theProgress);
--#else
-+#elif OCC_VERSION_HEX < 0x070600
- BOPCheck.SetProgressIndicator(theScope);
-+#else
-+ Q_UNUSED(theScope)
- #endif // 0x070500
- #else
- Q_UNUSED(theProgress);
-@@ -740,7 +742,7 @@ int TaskCheckGeometryResults::goBOPSingleCheck(const TopoDS_Shape& shapeIn, Resu
- Base::TimeInfo start_time;
- #endif
-
--BOPCheck.Perform();
-+ BOPCheck.Perform();
-
- #ifdef FC_DEBUG
- float bopAlgoTime = Base::TimeInfo::diffTimeF(start_time,Base::TimeInfo());
-diff --git src/Mod/Part/Gui/ViewProviderExt.cpp src/Mod/Part/Gui/ViewProviderExt.cpp
-index 77cefbe3e0..8a52f1701b 100644
---- src/Mod/Part/Gui/ViewProviderExt.cpp
-+++ src/Mod/Part/Gui/ViewProviderExt.cpp
-@@ -1150,16 +1150,25 @@
-
-
- // cycling through the poly mesh
-+#if OCC_VERSION_HEX < 0x070600
- const Poly_Array1OfTriangle& Triangles = mesh->Triangles();
- const TColgp_Array1OfPnt& Nodes = mesh->Nodes();
- TColgp_Array1OfDir Normals (Nodes.Lower(), Nodes.Upper());
-+#else
-+ int numNodes = mesh->NbNodes();
-+ TColgp_Array1OfDir Normals (1, numNodes);
-+#endif
- if (NormalsFromUV)
- getNormals(actFace, mesh, Normals);
-
- for (int g=1;g<=nbTriInFace;g++) {
- // Get the triangle
- Standard_Integer N1,N2,N3;
-+#if OCC_VERSION_HEX < 0x070600
- Triangles(g).Get(N1,N2,N3);
-+#else
-+ mesh->Triangle(g).Get(N1,N2,N3);
-+#endif
-
- // change orientation of the triangle if the face is reversed
- if ( orient != TopAbs_FORWARD ) {
-@@ -1169,7 +1178,11 @@
- }
-
- // get the 3 points of this triangle
-+#if OCC_VERSION_HEX < 0x070600
- gp_Pnt V1(Nodes(N1)), V2(Nodes(N2)), V3(Nodes(N3));
-+#else
-+ gp_Pnt V1(mesh->Node(N1)), V2(mesh->Node(N2)), V3(mesh->Node(N3));
-+#endif
-
- // get the 3 normals of this triangle
- gp_Vec NV1, NV2, NV3;
-@@ -1246,7 +1259,11 @@
- // rare cases where some points are only referenced by the polygon
- // but not by any triangle. Thus, we must apply the coordinates to
- // make sure that everything is properly set.
-+#if OCC_VERSION_HEX < 0x070600
- gp_Pnt p(Nodes(nodeIndex));
-+#else
-+ gp_Pnt p(mesh->Node(nodeIndex));
-+#endif
- if (!identity)
- p.Transform(myTransf);
- verts[index].setValue((float)(p.X()),(float)(p.Y()),(float)(p.Z()));
-diff --git src/Mod/Path/App/AppPathPy.cpp src/Mod/Path/App/AppPathPy.cpp
-index 6e0c72d2f5..ce912b4474 100644
---- src/Mod/Path/App/AppPathPy.cpp
-+++ src/Mod/Path/App/AppPathPy.cpp
-@@ -49,10 +49,7 @@
- #include <TopExp_Explorer.hxx>
- #include <gp_Lin.hxx>
- #include <BRep_Tool.hxx>
--#include <BRepAdaptor_CompCurve.hxx>
--#include <BRepAdaptor_HCompCurve.hxx>
--#include <Approx_Curve3d.hxx>
--#include <BRepAdaptor_HCurve.hxx>
-+#include <BRepAdaptor_Curve.hxx>
-
- #include "CommandPy.h"
- #include "PathPy.h"
-diff --git src/Mod/TechDraw/App/Geometry.cpp src/Mod/TechDraw/App/Geometry.cpp
-index b6c3637137..59a92d7e51 100644
---- src/Mod/TechDraw/App/Geometry.cpp
-+++ src/Mod/TechDraw/App/Geometry.cpp
-@@ -28,13 +28,13 @@
- #include <BRepAdaptor_Curve.hxx>
- #include <BRep_Tool.hxx>
- #include <BRepTools.hxx>
--#include <BRepAdaptor_HCurve.hxx>
- #include <BRepLib.hxx>
- #include <BRepBuilderAPI_MakeVertex.hxx>
- #include <BRepBuilderAPI_MakeEdge.hxx>
- #include <BRepBuilderAPI_MakeWire.hxx>
- #include <BRepBuilderAPI_MakeFace.hxx>
- #include <BRepExtrema_DistShapeShape.hxx>
-+#include <BRepLProp_CLProps.hxx>
- #include <Precision.hxx>
- #include <GCPnts_AbscissaPoint.hxx>
- #include <gce_MakeCirc.hxx>
-@@ -58,14 +58,16 @@
- #include <GeomLProp_CLProps.hxx>
- #include <GeomAPI_ProjectPointOnCurve.hxx>
- #include <Poly_Polygon3D.hxx>
-+#include <Standard_Version.hxx>
- #include <TopoDS.hxx>
- #include <TopoDS_Edge.hxx>
- #include <TopExp.hxx>
- #include <TopExp_Explorer.hxx>
- #include <TColgp_Array1OfPnt2d.hxx>
- #include <TColgp_Array1OfPnt.hxx>
--#include <BRepLProp_CLProps.hxx>
--
-+#if OCC_VERSION_HEX < 0x070600
-+#include <BRepAdaptor_HCurve.hxx>
-+#endif
- #include <cmath>
- #endif // #ifndef _PreComp_
-
-@@ -86,6 +88,10 @@
- using namespace TechDraw;
- using namespace std;
-
-+#if OCC_VERSION_HEX >= 0x070600
-+using BRepAdaptor_HCurve = BRepAdaptor_Curve;
-+#endif
-+
- #define GEOMETRYEDGE 0
- #define COSMETICEDGE 1
- #define CENTERLINE 2
diff --git a/cad/freecad/files/patch-cMake_FindPySide2Tools.cmake b/cad/freecad/files/patch-cMake_FindPySide2Tools.cmake
deleted file mode 100644
index 63ab4c74b770..000000000000
--- a/cad/freecad/files/patch-cMake_FindPySide2Tools.cmake
+++ /dev/null
@@ -1,20 +0,0 @@
---- cMake/FindPySide2Tools.cmake.orig 2021-03-12 22:05:53 UTC
-+++ cMake/FindPySide2Tools.cmake
-@@ -58,7 +58,7 @@
- # we follow the tool command with in-place sed.
- ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
- COMMAND "${PYSIDE2UICBINARY}" ${UICOPTIONS} "${infile}" -o "${outfile}"
-- COMMAND sed -i "/^# /d" "${outfile}"
-+ COMMAND sed -i \"\" "/^# /d" "${outfile}"
- MAIN_DEPENDENCY "${infile}"
- )
- endif()
-@@ -85,7 +85,7 @@
- # we follow the tool command with in-place sed.
- ADD_CUSTOM_COMMAND(OUTPUT "${outfile}"
- COMMAND "${PYSIDE2RCCBINARY}" ${RCCOPTIONS} "${infile}" ${PY_ATTRIBUTE} -o "${outfile}"
-- COMMAND sed -i "/^# /d" "${outfile}"
-+ COMMAND sed -i \"\" "/^# /d" "${outfile}"
- MAIN_DEPENDENCY "${infile}"
- )
- endif()
diff --git a/cad/freecad/files/patch-cMake_FreeCAD__Helpers_SetupSalomeSMESH.cmake b/cad/freecad/files/patch-cMake_FreeCAD__Helpers_SetupSalomeSMESH.cmake
index 2b3bc745c000..2d20cbb7e033 100644
--- a/cad/freecad/files/patch-cMake_FreeCAD__Helpers_SetupSalomeSMESH.cmake
+++ b/cad/freecad/files/patch-cMake_FreeCAD__Helpers_SetupSalomeSMESH.cmake
@@ -1,40 +1,11 @@
---- cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake.orig 2021-04-15 09:17:08 UTC
+--- cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake.orig 2022-06-14 23:16:43 +0200
+++ cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake
-@@ -12,24 +12,24 @@ macro(SetupSalomeSMESH)
-
- #if we use smesh we definitely also need vtk, no matter of external or internal smesh
- set (VTK_COMPONENTS
-- vtkCommonCore
-- vtkCommonDataModel
-- vtkFiltersVerdict
-- vtkIOXML
-- vtkFiltersCore
-- vtkFiltersGeneral
-- vtkIOLegacy
-- vtkFiltersExtraction
-- vtkFiltersSources
-- vtkFiltersGeometry
-+ CommonCore
-+ tkCommonDataModel
-+ tkFiltersVerdict
-+ tkIOXML
-+ tkFiltersCore
-+ tkFiltersGeneral
-+ tkIOLegacy
-+ tkFiltersExtraction
-+ tkFiltersSources
-+ tkFiltersGeometry
- )
+@@ -26,7 +26,7 @@
# check which modules are available
if(UNIX OR WIN32)
- find_package(VTK COMPONENTS vtkCommonCore REQUIRED NO_MODULE)
-- list(APPEND VTK_COMPONENTS vtkIOMPIParallel vtkParallelMPI vtkhdf5 vtkFiltersParallelDIY2 vtkRenderingCore vtkInteractionStyle vtkRenderingFreeType vtkRenderingOpenGL2)
+ find_package(VTK COMPONENTS CommonCore REQUIRED NO_MODULE)
-+ list(APPEND VTK_COMPONENTS IOMPIParallel ParallelMPI hdf5 FiltersParallelDIY2 RenderingCore InteractionStyle RenderingFreeType RenderingOpenGL2)
- foreach(_module ${VTK_COMPONENTS})
-- list (FIND VTK_MODULES_ENABLED ${_module} _index)
-+ list (FIND VTK_AVAILABLE_COMPONENTS ${_module} _index)
- if (${_index} GREATER -1)
- list(APPEND AVAILABLE_VTK_COMPONENTS ${_module})
- endif()
+ if(${VTK_MAJOR_VERSION} LESS 9)
+ list(APPEND VTK_COMPONENTS vtkIOMPIParallel vtkParallelMPI vtkhdf5 vtkFiltersParallelDIY2 vtkRenderingCore vtkInteractionStyle vtkRenderingFreeType vtkRenderingOpenGL2)
+ foreach(_module ${VTK_COMPONENTS})
diff --git a/cad/freecad/files/patch-src_3rdParty_libE57Format_src_CheckedFile.cpp b/cad/freecad/files/patch-src_3rdParty_libE57Format_src_CheckedFile.cpp
new file mode 100644
index 000000000000..bb6f490be2a9
--- /dev/null
+++ b/cad/freecad/files/patch-src_3rdParty_libE57Format_src_CheckedFile.cpp
@@ -0,0 +1,34 @@
+--- src/3rdParty/libE57Format/src/CheckedFile.cpp.orig 2022-06-14 16:52:22 +0200
++++ src/3rdParty/libE57Format/src/CheckedFile.cpp
+@@ -25,6 +25,11 @@
+ * DEALINGS IN THE SOFTWARE.
+ */
+
++// convenience for all the BSDs
++#if defined( __FreeBSD__) || defined( __NetBSD__) || defined( __OpenBSD__)
++#define __BSD
++#endif
++
+ #if defined( _WIN32 )
+ #if defined( _MSC_VER )
+ #include <codecvt>
+@@ -47,6 +52,10 @@
+ #elif defined( __APPLE__ )
+ #include <sys/types.h>
+ #include <unistd.h>
++#elif defined( __BSD )
++#include <sys/stat.h>
++#include <sys/types.h>
++#include <unistd.h>
+ #else
+ #error "no supported OS platform defined"
+ #endif
+@@ -483,7 +492,7 @@
+ #endif
+ #elif defined( __linux__ )
+ int64_t result = ::lseek64( fd_, offset, whence );
+-#elif defined( __APPLE__ )
++#elif defined( __APPLE__ ) || defined ( __BSD )
+ int64_t result = ::lseek( fd_, offset, whence );
+ #else
+ #error "no supported OS platform defined"
diff --git a/cad/freecad/files/patch-src_3rdParty_salomesmesh_src_SMESH_SMESH_Mesh.cpp b/cad/freecad/files/patch-src_3rdParty_salomesmesh_src_SMESH_SMESH_Mesh.cpp
deleted file mode 100644
index f88315cbaeb4..000000000000
--- a/cad/freecad/files/patch-src_3rdParty_salomesmesh_src_SMESH_SMESH_Mesh.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
---- src/3rdParty/salomesmesh/src/SMESH/SMESH_Mesh.cpp.orig 2022-01-30 21:22:20.383703000 +0100
-+++ src/3rdParty/salomesmesh/src/SMESH/SMESH_Mesh.cpp 2022-01-30 21:22:56.240456000 +0100
-@@ -64,7 +64,6 @@
-
- #include <GEOMUtils.hxx>
-
--#undef _Precision_HeaderFile
- #include <BRepBndLib.hxx>
- #include <BRepPrimAPI_MakeBox.hxx>
- #include <Bnd_Box.hxx>
diff --git a/cad/freecad/files/patch-src_App_PropertyExpressionEngine.h b/cad/freecad/files/patch-src_App_PropertyExpressionEngine.h
new file mode 100644
index 000000000000..ed1096e7b835
--- /dev/null
+++ b/cad/freecad/files/patch-src_App_PropertyExpressionEngine.h
@@ -0,0 +1,11 @@
+--- src/App/PropertyExpressionEngine.h.orig 2022-06-14 21:47:38 +0200
++++ src/App/PropertyExpressionEngine.h
+@@ -179,7 +179,7 @@
+ typedef boost::adjacency_list< boost::listS, boost::vecS, boost::directedS > DiGraph;
+ typedef std::pair<int, int> Edge;
+ // Note: use std::map instead of unordered_map to keep the binding order stable
+- #ifdef FC_OS_MACOSX
++ #if defined(FC_OS_MACOSX) || defined(FC_OS_BSD)
+ typedef std::map<App::ObjectIdentifier, ExpressionInfo> ExpressionMap;
+ #else
+ typedef std::map<const App::ObjectIdentifier, ExpressionInfo> ExpressionMap;
diff --git a/cad/freecad/files/patch-src_Mod_Fem_App_FemConstraint.cpp b/cad/freecad/files/patch-src_Mod_Fem_App_FemConstraint.cpp
deleted file mode 100644
index 88d9de1b36e6..000000000000
--- a/cad/freecad/files/patch-src_Mod_Fem_App_FemConstraint.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
---- src/Mod/Fem/App/FemConstraint.cpp.orig 2022-02-04 00:04:15.767125000 +0100
-+++ src/Mod/Fem/App/FemConstraint.cpp 2022-02-04 00:04:38.270409000 +0100
-@@ -36,8 +36,6 @@
- # include <BRepAdaptor_Curve.hxx>
- # include <GCPnts_AbscissaPoint.hxx>
- # include <Adaptor3d_IsoCurve.hxx>
--# include <Adaptor3d_HSurface.hxx>
--# include <BRepAdaptor_HSurface.hxx>
- # include <BRepAdaptor_Surface.hxx>
- # include <GProp_GProps.hxx>
- # include <BRepGProp.hxx>
-@@ -248,8 +246,8 @@
- gp_Pnt center;
-
- // Get an estimate for the number of arrows by finding the average length of curves
-- Handle(Adaptor3d_HSurface) hsurf;
-- hsurf = new BRepAdaptor_HSurface(surface);
-+ Handle(Adaptor3d_Surface) hsurf;
-+ hsurf = new BRepAdaptor_Surface(surface);
-
- Adaptor3d_IsoCurve isoc(hsurf);
- try {
diff --git a/cad/freecad/files/patch-src_Mod_Fem_App_FemConstraintFixed.cpp b/cad/freecad/files/patch-src_Mod_Fem_App_FemConstraintFixed.cpp
deleted file mode 100644
index 319300cae57e..000000000000
--- a/cad/freecad/files/patch-src_Mod_Fem_App_FemConstraintFixed.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/Mod/Fem/App/FemConstraintFixed.cpp.orig 2022-02-03 23:52:01.569143000 +0100
-+++ src/Mod/Fem/App/FemConstraintFixed.cpp 2022-02-03 23:52:36.672029000 +0100
-@@ -32,8 +32,6 @@
- #include <BRepAdaptor_Surface.hxx>
- #include <GCPnts_AbscissaPoint.hxx>
- #include <Adaptor3d_IsoCurve.hxx>
--#include <Adaptor3d_HSurface.hxx>
--#include <BRepAdaptor_HSurface.hxx>
- #include <GProp_GProps.hxx>
- #include <BRepGProp.hxx>
- #include <TopoDS_Vertex.hxx>
diff --git a/cad/freecad/files/patch-src_Mod_MeshPart_App_MeshFlattening.cpp b/cad/freecad/files/patch-src_Mod_MeshPart_App_MeshFlattening.cpp
deleted file mode 100644
index b68142a11254..000000000000
--- a/cad/freecad/files/patch-src_Mod_MeshPart_App_MeshFlattening.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
---- src/Mod/MeshPart/App/MeshFlattening.cpp.orig 2022-02-03 23:13:33.919226000 +0100
-+++ src/Mod/MeshPart/App/MeshFlattening.cpp 2022-02-03 23:30:59.747315000 +0100
-@@ -141,37 +141,37 @@
- if (triangulation.IsNull())
- throw std::runtime_error("null triangulation in face construction");
-
-+ Standard_Integer numNodes = triangulation->NbNodes();
-+ Standard_Integer numTriangles = triangulation->NbTriangles();
-+
- // compute uv coordinates
- if (triangulation->HasUVNodes())
- {
-- const TColgp_Array1OfPnt2d &_uv_nodes = triangulation->UVNodes();
-- this->uv_nodes.resize(triangulation->NbNodes(), 2);
-+ this->uv_nodes.resize(numNodes, 2);
- i = 0;
-- for (Standard_Integer index = _uv_nodes.Lower(); index <= _uv_nodes.Upper(); ++index)
-+ for (Standard_Integer index = 1; index <= numNodes; ++index)
- {
-- const gp_Pnt2d& _uv_node = _uv_nodes.Value(index);
-+ const gp_Pnt2d& _uv_node = triangulation->UVNode(index);
- this->uv_nodes.row(i) << _uv_node.X(), _uv_node.Y();
- i++;
- }
- }
- //
-- const TColgp_Array1OfPnt &_nodes = triangulation->Nodes();
-- this->xyz_nodes.resize(triangulation->NbNodes(), 3);
-+ this->xyz_nodes.resize(numNodes, 3);
- i = 0;
-- for (Standard_Integer index = _nodes.Lower(); index <= _nodes.Upper(); ++index)
-+ for (Standard_Integer index = 1; index <= numNodes; ++index)
- {
-- gp_Pnt _node = _nodes.Value(index);
-+ gp_Pnt _node = triangulation->Node(index);
- this->xyz_nodes.row(i) << _node.X(), _node.Y(), _node.Z();
- i++;
- }
-
-- const Poly_Array1OfTriangle &_tris = triangulation->Triangles();
-- this->tris.resize(triangulation->NbTriangles(), 3);
-+ this->tris.resize(numTriangles, 3);
- i = 0;
-- for (Standard_Integer index = _tris.Lower(); index <= _tris.Upper(); ++index)
-+ for (Standard_Integer index = 1; index <= numTriangles; ++index)
- {
- int n1, n2, n3;
-- Poly_Triangle _tri = _tris.Value(index);
-+ Poly_Triangle _tri = triangulation->Triangle(index);
- _tri.Get(n1, n2, n3);
- this->tris.row(i) << n1-1, n2-1, n3-1;
- i++;
diff --git a/cad/freecad/files/patch-src_Mod_PartDesign_Gui_ViewProviderAddSub.cpp b/cad/freecad/files/patch-src_Mod_PartDesign_Gui_ViewProviderAddSub.cpp
deleted file mode 100644
index 7c7c3c09accd..000000000000
--- a/cad/freecad/files/patch-src_Mod_PartDesign_Gui_ViewProviderAddSub.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
---- src/Mod/PartDesign/Gui/ViewProviderAddSub.cpp.orig 2022-03-03 20:43:05.599798000 +0100
-+++ src/Mod/PartDesign/Gui/ViewProviderAddSub.cpp 2022-03-03 21:06:11.466643000 +0100
-@@ -194,8 +194,7 @@
-
- // cycling through the poly mesh
- const Poly_Array1OfTriangle& Triangles = mesh->Triangles();
-- const TColgp_Array1OfPnt& Nodes = mesh->Nodes();
-- TColgp_Array1OfDir Normals (Nodes.Lower(), Nodes.Upper());
-+ TColgp_Array1OfDir Normals (1, nbNodesInFace);
- getNormals(actFace, mesh, Normals);
-
- for (int g=1;g<=nbTriInFace;g++) {
-@@ -211,7 +210,7 @@
- }
-
- // get the 3 points of this triangle
-- gp_Pnt V1(Nodes(N1)), V2(Nodes(N2)), V3(Nodes(N3));
-+ gp_Pnt V1(mesh->Node(N1)), V2(mesh->Node(N2)), V3(mesh->Node(N3));
-
- // get the 3 previewNormals of this triangle
- gp_Dir NV1(Normals(N1)), NV2(Normals(N2)), NV3(Normals(N3));
diff --git a/cad/freecad/files/patch-src_Mod_PartDesign_Gui_ViewProviderTransformed.cpp b/cad/freecad/files/patch-src_Mod_PartDesign_Gui_ViewProviderTransformed.cpp
deleted file mode 100644
index 2e2c02a95065..000000000000
--- a/cad/freecad/files/patch-src_Mod_PartDesign_Gui_ViewProviderTransformed.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
---- src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp.orig 2022-03-03 21:21:36.816245000 +0100
-+++ src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp 2022-03-03 21:22:41.559121000 +0100
-@@ -285,7 +285,6 @@
-
- // cycling through the poly mesh
- const Poly_Array1OfTriangle& Triangles = mesh->Triangles();
-- const TColgp_Array1OfPnt& Nodes = mesh->Nodes();
- for (int g=1; g <= nbTriInFace; g++) {
- // Get the triangle
- Standard_Integer N1,N2,N3;
-@@ -299,7 +298,7 @@
- }
-
- // get the 3 points of this triangle
-- gp_Pnt V1(Nodes(N1)), V2(Nodes(N2)), V3(Nodes(N3));
-+ gp_Pnt V1(mesh->Node(N1)), V2(mesh->Node(N2)), V3(mesh->Node(N3));
-
- // transform the vertices to the place of the face
- if (!identity) {
diff --git a/cad/freecad/files/patch-src_Mod_Part_App_AppPartPy.cpp b/cad/freecad/files/patch-src_Mod_Part_App_AppPartPy.cpp
deleted file mode 100644
index dc95388b984e..000000000000
--- a/cad/freecad/files/patch-src_Mod_Part_App_AppPartPy.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
---- src/Mod/Part/App/AppPartPy.cpp.orig 2022-01-30 22:29:02.026790000 +0100
-+++ src/Mod/Part/App/AppPartPy.cpp 2022-01-30 22:50:54.044159000 +0100
-@@ -804,14 +804,26 @@
- const TopAbs_Orientation anOrientation = currentFace.Orientation();
- bool flip = (anOrientation == TopAbs_REVERSED);
- if (!facets.IsNull()) {
-+#if OCC_VERSION_HEX < 0x070600
- const TColgp_Array1OfPnt& nodes = facets->Nodes();
- const Poly_Array1OfTriangle& triangles = facets->Triangles();
- for (int i = 1; i <= triangles.Length(); i++) {
-+#else
-+ int nbtri = facets->NbTriangles();
-+ for (int i = 1; i <= nbtri; i++) {
-+#endif
- Standard_Integer n1,n2,n3;
-+#if OCC_VERSION_HEX < 0x070600
- triangles(i).Get(n1, n2, n3);
- gp_Pnt p1 = nodes(n1);
- gp_Pnt p2 = nodes(n2);
- gp_Pnt p3 = nodes(n3);
-+#else
-+ facets->Triangle(i).Get(n1, n2, n3);
-+ gp_Pnt p1 = facets->Node(n1);
-+ gp_Pnt p2 = facets->Node(n2);
-+ gp_Pnt p3 = facets->Node(n3);
-+#endif
- p1.Transform(loc.Transformation());
- p2.Transform(loc.Transformation());
- p3.Transform(loc.Transformation());
diff --git a/cad/freecad/files/patch-src_Mod_Part_App_Tools.cpp b/cad/freecad/files/patch-src_Mod_Part_App_Tools.cpp
deleted file mode 100644
index 191d1c081f35..000000000000
--- a/cad/freecad/files/patch-src_Mod_Part_App_Tools.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
---- src/Mod/Part/App/Tools.cpp.orig 2022-02-03 20:59:16.862252000 +0100
-+++ src/Mod/Part/App/Tools.cpp 2022-02-03 21:43:13.008464000 +0100
-@@ -25,10 +25,9 @@
- # include <cassert>
- # include <gp_Pln.hxx>
- # include <gp_Lin.hxx>
--# include <Adaptor3d_HCurveOnSurface.hxx>
- # include <Geom_BSplineSurface.hxx>
- # include <Geom_Plane.hxx>
--# include <GeomAdaptor_HCurve.hxx>
-+# include <GeomAdaptor_Curve.hxx>
- # include <GeomAPI_IntSS.hxx>
- # include <Geom_Line.hxx>
- # include <Geom_Point.hxx>
-@@ -98,8 +97,8 @@
- return found;
- }
-
--/*! The objects in \a theBoundaries must be of the type Adaptor3d_HCurveOnSurface or
--GeomAdaptor_HCurve or Geom_Point indicating type of a constraint. Otherwise an exception
-+/*! The objects in \a theBoundaries must be of the type Adaptor3d_CurveOnSurface or
-+GeomAdaptor_Curve or Geom_Point indicating type of a constraint. Otherwise an exception
- Standard_TypeMismatch is thrown.
-
- If the \a theBoundaries list is empty then Standard_ConstructionError is thrown.
-@@ -138,15 +137,15 @@
- assert (0);
- Standard_ConstructionError::Raise ("Tools::makeSurface()");
- }
-- else if (aCur->IsKind (STANDARD_TYPE (Adaptor3d_HCurveOnSurface))) {
-+ else if (aCur->IsKind (STANDARD_TYPE (Adaptor3d_CurveOnSurface))) {
- //G1 constraint
-- Handle(Adaptor3d_HCurveOnSurface) aHCOS (Handle(Adaptor3d_HCurveOnSurface)::DownCast (aCur));
-+ Handle(Adaptor3d_CurveOnSurface) aHCOS (Handle(Adaptor3d_CurveOnSurface)::DownCast (aCur));
- Handle (GeomPlate_CurveConstraint) aConst = new GeomPlate_CurveConstraint (aHCOS, 1 /*GeomAbs_G1*/,aNbPnts, aTol3d, anAngTol, aCurvTol);
- aPlateBuilder.Add (aConst);
- }
-- else if (aCur->IsKind (STANDARD_TYPE (GeomAdaptor_HCurve))) {
-+ else if (aCur->IsKind (STANDARD_TYPE (GeomAdaptor_Curve))) {
- //G0 constraint
-- Handle(GeomAdaptor_HCurve) aHC (Handle(GeomAdaptor_HCurve)::DownCast (aCur));
-+ Handle(GeomAdaptor_Curve) aHC (Handle(GeomAdaptor_Curve)::DownCast (aCur));
- Handle (GeomPlate_CurveConstraint) aConst = new GeomPlate_CurveConstraint (aHC, 0 /*GeomAbs_G0*/, aNbPnts, aTol3d);
- aPlateBuilder.Add (aConst);
- }
diff --git a/cad/freecad/files/patch-src_Mod_Part_App_TopoShape.cpp b/cad/freecad/files/patch-src_Mod_Part_App_TopoShape.cpp
deleted file mode 100644
index 51285e1c05f4..000000000000
--- a/cad/freecad/files/patch-src_Mod_Part_App_TopoShape.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
---- src/Mod/Part/App/TopoShape.cpp.orig 2022-02-03 21:51:04.000000000 +0100
-+++ src/Mod/Part/App/TopoShape.cpp 2022-02-03 22:55:05.882488000 +0100
-@@ -38,8 +38,6 @@
- # include <BRep_Tool.hxx>
- # include <BRepAdaptor_Curve.hxx>
- # include <BRepAdaptor_CompCurve.hxx>
--# include <BRepAdaptor_HCurve.hxx>
--# include <BRepAdaptor_HCompCurve.hxx>
- # include <BRepAdaptor_Surface.hxx>
- # include <BRepAlgoAPI_Common.hxx>
- # include <BRepAlgoAPI_Cut.hxx>
-@@ -1122,10 +1120,10 @@
- // check orientation
- TopAbs_Orientation orient = aFace.Orientation();
-
-+ nbTriInFace = aPoly->NbTriangles();
- // cycling through the poly mesh
- const Poly_Array1OfTriangle& Triangles = aPoly->Triangles();
-- const TColgp_Array1OfPnt& Nodes = aPoly->Nodes();
-- for (int i=1;i<=nbTriInFace;i++) {
-+ for (int i=1; i<=nbTriInFace; i++) {
- // Get the triangle
- Standard_Integer N1,N2,N3;
- Triangles(i).Get(N1,N2,N3);
-@@ -1137,9 +1135,9 @@
- N2 = tmp;
- }
-
-- gp_Pnt V1 = Nodes(N1);
-- gp_Pnt V2 = Nodes(N2);
-- gp_Pnt V3 = Nodes(N3);
-+ gp_Pnt V1 = aPoly->Node(N1);
-+ gp_Pnt V2 = aPoly->Node(N2);
-+ gp_Pnt V3 = aPoly->Node(N3);
-
- // transform the vertices to the place of the face
- if (!identity) {
-@@ -1193,6 +1191,7 @@
-
- std::vector<Base::Vector3f> vertices;
- Standard_Integer nbNodesInFace;
-+ Standard_Integer nbNodesInTria;
-
- // triangulation succeeded?
- if (!aPoly.IsNull()) {
-@@ -1233,16 +1232,14 @@
-
- // getting size and create the array
- nbNodesInFace = aPoly->NbNodes();
-+ nbNodesInTria = aPolyTria->NbNodes();
- vertices.resize(nbNodesInFace);
-
-- const TColStd_Array1OfInteger& indices = aPoly->Nodes();
-- const TColgp_Array1OfPnt& Nodes = aPolyTria->Nodes();
--
- gp_Pnt V;
- int pos = 0;
- // go through the index array
-- for (Standard_Integer i=indices.Lower();i <= indices.Upper();i++) {
-- V = Nodes(indices(i));
-+ for (Standard_Integer i=1; i<=nbNodesInTria; i++) {
-+ V = aPolyTria->Node(i);
- V.Transform(myTransf);
- vertices[pos++].Set((float)(V.X()),(float)(V.Y()),(float)(V.Z()));
- }
-@@ -2215,12 +2212,20 @@
- if (this->_Shape.IsNull())
- Standard_Failure::Raise("Cannot sweep along empty spine");
-
-+#if OCC_VERSION_HEX >= 0x070600
-+ Handle(Adaptor3d_Curve) myPath;
-+ if (this->_Shape.ShapeType() == TopAbs_EDGE) {
-+ const TopoDS_Edge& path_edge = TopoDS::Edge(this->_Shape);
-+ myPath = new BRepAdaptor_Curve(path_edge);
-+ }
-+#else
- Handle(Adaptor3d_HCurve) myPath;
- if (this->_Shape.ShapeType() == TopAbs_EDGE) {
- const TopoDS_Edge& path_edge = TopoDS::Edge(this->_Shape);
- BRepAdaptor_Curve path_adapt(path_edge);
- myPath = new BRepAdaptor_HCurve(path_adapt);
- }
-+#endif
- //else if (this->_Shape.ShapeType() == TopAbs_WIRE) {
- // const TopoDS_Wire& path_wire = TopoDS::Wire(this->_Shape);
- // BRepAdaptor_CompCurve path_adapt(path_wire);
-@@ -3401,10 +3406,10 @@
-
- Domain domain;
- // copy the points
-- const TColgp_Array1OfPnt& points = theTriangulation->Nodes();
-- domain.points.reserve(points.Length());
-- for (int i = 1; i <= points.Length(); i++) {
-- gp_Pnt p = points(i);
-+ int nbptintria = theTriangulation->NbNodes();
-+ domain.points.reserve(nbptintria);
-+ for (int i = 1; i <= nbptintria; i++) {
-+ gp_Pnt p = theTriangulation->Node(i);
- p.Transform(loc.Transformation());
- Standard_Real X, Y, Z;
- p.Coord (X, Y, Z);
-@@ -3414,11 +3419,11 @@
- // copy the triangles
- const TopAbs_Orientation anOrientation = face.Orientation();
- bool flip = (anOrientation == TopAbs_REVERSED);
-- const Poly_Array1OfTriangle& faces = theTriangulation->Triangles();
-- domain.facets.reserve(faces.Length());
-- for (int i = 1; i <= faces.Length(); i++) {
-+ int nbtri = theTriangulation->NbTriangles();
-+ domain.facets.reserve(nbtri);
-+ for (int i = 1; i <= nbtri; i++) {
- Standard_Integer N1, N2, N3;
-- faces(i).Get(N1, N2, N3);
-+ theTriangulation->Triangle(i).Get(N1, N2, N3);
-
- Facet tria;
- tria.I1 = N1-1; tria.I2 = N2-1; tria.I3 = N3-1;
-@@ -3774,8 +3779,8 @@
- const TColgp_Array1OfPnt& Nodes = aPoly->Nodes();
-
- gp_Pnt V;
-- for (Standard_Integer i=0;i < nbNodesInFace;i++) {
-- V = Nodes(i+1);
-+ for (Standard_Integer i=1; i <= nbNodesInFace; i++) {
-+ V = Nodes(i);
- V.Transform(myTransf);
- vertices.emplace_back(V.X(),V.Y(),V.Z());
- }
-@@ -3808,14 +3813,12 @@
-
- // getting size and create the array
- nbNodesInFace = aPoly->NbNodes();
-+ int nbNodesInTria = aPolyTria->NbNodes();
-
-- const TColStd_Array1OfInteger& indices = aPoly->Nodes();
-- const TColgp_Array1OfPnt& Nodes = aPolyTria->Nodes();
--
- gp_Pnt V;
- // go through the index array
-- for (Standard_Integer i=indices.Lower();i <= indices.Upper();i++) {
-- V = Nodes(indices(i));
-+ for (Standard_Integer i=1 ;i <= nbNodesInTria; i++) {
-+ V = aPolyTria->Node(i);
- V.Transform(myTransf);
- vertices.emplace_back(V.X(),V.Y(),V.Z());
- }
diff --git a/cad/freecad/files/patch-src_Mod_Part_Gui_ViewProviderExt.cpp b/cad/freecad/files/patch-src_Mod_Part_Gui_ViewProviderExt.cpp
deleted file mode 100644
index 197253155500..000000000000
--- a/cad/freecad/files/patch-src_Mod_Part_Gui_ViewProviderExt.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
---- src/Mod/Part/Gui/ViewProviderExt.cpp.orig 2022-03-02 17:15:16.283319000 +0100
-+++ src/Mod/Part/Gui/ViewProviderExt.cpp 2022-03-02 23:49:04.036080000 +0100
-@@ -137,26 +137,17 @@
- const Handle(Poly_Triangulation)& aPolyTri,
- TColgp_Array1OfDir& theNormals)
- {
-- const TColgp_Array1OfPnt& aNodes = aPolyTri->Nodes();
--
- if(aPolyTri->HasNormals())
- {
- // normals pre-computed in triangulation structure
-- const TShort_Array1OfShortReal& aNormals = aPolyTri->Normals();
-- const Standard_ShortReal* aNormArr = &(aNormals.Value(aNormals.Lower()));
--
-- for(Standard_Integer aNodeIter = aNodes.Lower(); aNodeIter <= aNodes.Upper(); ++aNodeIter)
-+ for(Standard_Integer aNodeIter = 1; aNodeIter <= aPolyTri->NbNodes(); ++aNodeIter)
- {
-- const Standard_Integer anId = 3 * (aNodeIter - aNodes.Lower());
-- const gp_Dir aNorm(aNormArr[anId + 0],
-- aNormArr[anId + 1],
-- aNormArr[anId + 2]);
-- theNormals(aNodeIter) = aNorm;
-+ theNormals(aNodeIter) = aPolyTri->Normal(aNodeIter);
- }
-
- if(theFace.Orientation() == TopAbs_REVERSED)
- {
-- for(Standard_Integer aNodeIter = aNodes.Lower(); aNodeIter <= aNodes.Upper(); ++aNodeIter)
-+ for(Standard_Integer aNodeIter = 1; aNodeIter <= aPolyTri->NbNodes(); ++aNodeIter)
- {
- theNormals.ChangeValue(aNodeIter).Reverse();
- }
-@@ -172,16 +163,13 @@
- const Standard_Real aTol = Precision::Confusion();
- Handle(TShort_HArray1OfShortReal) aNormals = new TShort_HArray1OfShortReal(1, aPolyTri->NbNodes() * 3);
- const Poly_Array1OfTriangle& aTriangles = aPolyTri->Triangles();
-- const TColgp_Array1OfPnt2d* aNodesUV = aPolyTri->HasUVNodes() && !aSurf.IsNull()
-- ? &aPolyTri->UVNodes()
-- : NULL;
-+ const Standard_Boolean hasUV = aPolyTri->HasUVNodes() && !aSurf.IsNull();
- Standard_Integer aTri[3];
-
-- for(Standard_Integer aNodeIter = aNodes.Lower(); aNodeIter <= aNodes.Upper(); ++aNodeIter)
-+ for(Standard_Integer aNodeIter = 1; aNodeIter <= aPolyTri->NbNodes(); ++aNodeIter)
- {
- // try to retrieve normal from real surface first, when UV coordinates are available
-- if(aNodesUV == NULL
-- || GeomLib::NormEstim(aSurf, aNodesUV->Value(aNodeIter), aTol, theNormals(aNodeIter)) > 1)
-+ if(hasUV || GeomLib::NormEstim(aSurf, aPolyTri->UVNode(aNodeIter), aTol, theNormals(aNodeIter)) > 1)
- {
- // compute flat normals
- gp_XYZ eqPlan(0.0, 0.0, 0.0);
-@@ -189,8 +177,8 @@
- for(thePolyConnect.Initialize(aNodeIter); thePolyConnect.More(); thePolyConnect.Next())
- {
- aTriangles(thePolyConnect.Value()).Get(aTri[0], aTri[1], aTri[2]);
-- const gp_XYZ v1(aNodes(aTri[1]).Coord() - aNodes(aTri[0]).Coord());
-- const gp_XYZ v2(aNodes(aTri[2]).Coord() - aNodes(aTri[1]).Coord());
-+ const gp_XYZ v1(aPolyTri->Node(aTri[1]).Coord() - aPolyTri->Node(aTri[0]).Coord());
-+ const gp_XYZ v2(aPolyTri->Node(aTri[2]).Coord() - aPolyTri->Node(aTri[1]).Coord());
- const gp_XYZ vv = v1 ^ v2;
- const Standard_Real aMod = vv.Modulus();
-
-@@ -204,7 +192,7 @@
- theNormals(aNodeIter) = (aModMax > aTol) ? gp_Dir(eqPlan) : gp::DZ();
- }
-
-- const Standard_Integer anId = (aNodeIter - aNodes.Lower()) * 3;
-+ const Standard_Integer anId = (aNodeIter - 1) * 3;
- aNormals->SetValue(anId + 1, (Standard_ShortReal)theNormals(aNodeIter).X());
- aNormals->SetValue(anId + 2, (Standard_ShortReal)theNormals(aNodeIter).Y());
- aNormals->SetValue(anId + 3, (Standard_ShortReal)theNormals(aNodeIter).Z());
-@@ -214,7 +202,7 @@
-
- if(theFace.Orientation() == TopAbs_REVERSED)
- {
-- for(Standard_Integer aNodeIter = aNodes.Lower(); aNodeIter <= aNodes.Upper(); ++aNodeIter)
-+ for(Standard_Integer aNodeIter = 1; aNodeIter <= aPolyTri->NbNodes(); ++aNodeIter)
- {
- theNormals.ChangeValue(aNodeIter).Reverse();
- }
diff --git a/cad/freecad/files/patch-src_Mod_Raytracing_App_PovTools.cpp b/cad/freecad/files/patch-src_Mod_Raytracing_App_PovTools.cpp
deleted file mode 100644
index c96ce988fc2d..000000000000
--- a/cad/freecad/files/patch-src_Mod_Raytracing_App_PovTools.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
---- src/Mod/Raytracing/App/PovTools.cpp.orig 2022-02-03 23:01:51.000000000 +0100
-+++ src/Mod/Raytracing/App/PovTools.cpp 2022-02-03 23:03:51.000000000 +0100
-@@ -402,7 +402,6 @@
-
- // cycling through the poly mesh
- const Poly_Array1OfTriangle& Triangles = aPoly->Triangles();
-- const TColgp_Array1OfPnt& Nodes = aPoly->Nodes();
- for (i=1; i<=nbTriInFace; i++) {
- // Get the triangle
- Standard_Integer N1,N2,N3;
-@@ -416,9 +415,9 @@
- N2 = tmp;
- }
-
-- gp_Pnt V1 = Nodes(N1);
-- gp_Pnt V2 = Nodes(N2);
-- gp_Pnt V3 = Nodes(N3);
-+ gp_Pnt V1 = aPoly->Node(N1);
-+ gp_Pnt V2 = aPoly->Node(N2);
-+ gp_Pnt V3 = aPoly->Node(N3);
-
- // transform the vertices to the place of the face
- if (!identity) {
diff --git a/cad/freecad/pkg-plist b/cad/freecad/pkg-plist
index 94bf76ac6e6a..e8821e95206d 100644
--- a/cad/freecad/pkg-plist
+++ b/cad/freecad/pkg-plist
@@ -3,22 +3,62 @@ FreeCAD/Ext/PySide/QtGui.py
FreeCAD/Ext/PySide/QtSvg.py
FreeCAD/Ext/PySide/QtUiTools.py
FreeCAD/Ext/PySide/__init__.py
+FreeCAD/Ext/freecad/UiTools.py
FreeCAD/Ext/freecad/__init__.py
FreeCAD/Ext/freecad/gui/RemoteDebugger.py
FreeCAD/Ext/freecad/gui/RemoteDebugger.ui
FreeCAD/Ext/lazy_loader/__init__.py
FreeCAD/Ext/lazy_loader/lazy_loader.py
+FreeCAD/Mod/AddonManager/ALLOWED_PYTHON_PACKAGES.txt
+FreeCAD/Mod/AddonManager/Addon.py
FreeCAD/Mod/AddonManager/AddonManager.py
FreeCAD/Mod/AddonManager/AddonManager.ui
FreeCAD/Mod/AddonManager/AddonManagerOptions.ui
+FreeCAD/Mod/AddonManager/AddonManagerTest/__init__.py
+FreeCAD/Mod/AddonManager/AddonManagerTest/app/__init__.py
+FreeCAD/Mod/AddonManager/AddonManagerTest/app/test_addon.py
+FreeCAD/Mod/AddonManager/AddonManagerTest/app/test_macro.py
+FreeCAD/Mod/AddonManager/AddonManagerTest/app/test_utilities.py
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/DoNothing.FCMacro
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/__init__.py
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/bad_macro_metadata.FCStd
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/combination.xml
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/depends_on_all_workbenches.xml
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/good_macro_metadata.FCStd
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/good_package.xml
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/macro_only.xml
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/macro_template.FCStd
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/missing_macro_metadata.FCStd
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/prefpack_only.xml
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/test_version_detection.xml
+FreeCAD/Mod/AddonManager/AddonManagerTest/data/workbench_only.xml
+FreeCAD/Mod/AddonManager/AddonManagerTest/gui/__init__.py
+FreeCAD/Mod/AddonManager/AddonManagerTest/gui/test_gui.py
+FreeCAD/Mod/AddonManager/AddonManagerTest/test_information.md
FreeCAD/Mod/AddonManager/AddonManager_rc.py
FreeCAD/Mod/AddonManager/Init.py
FreeCAD/Mod/AddonManager/InitGui.py
+FreeCAD/Mod/AddonManager/NetworkManager.py
+FreeCAD/Mod/AddonManager/TestAddonManagerApp.py
+FreeCAD/Mod/AddonManager/TestAddonManagerGui.py
+FreeCAD/Mod/AddonManager/add_toolbar_button_dialog.ui
FreeCAD/Mod/AddonManager/addonmanager_macro.py
FreeCAD/Mod/AddonManager/addonmanager_utilities.py
FreeCAD/Mod/AddonManager/addonmanager_workers.py
+FreeCAD/Mod/AddonManager/change_branch.py
+FreeCAD/Mod/AddonManager/change_branch.ui
+FreeCAD/Mod/AddonManager/compact_view.py
+FreeCAD/Mod/AddonManager/dependency_resolution_dialog.ui
+FreeCAD/Mod/AddonManager/expanded_view.py
+FreeCAD/Mod/AddonManager/first_run.ui
+FreeCAD/Mod/AddonManager/install_to_toolbar.py
+FreeCAD/Mod/AddonManager/loading.html
+FreeCAD/Mod/AddonManager/package_details.py
+FreeCAD/Mod/AddonManager/package_list.py
+FreeCAD/Mod/AddonManager/select_toolbar_dialog.ui
FreeCAD/Mod/Arch/Arch.py
FreeCAD/Mod/Arch/ArchAxis.py
+FreeCAD/Mod/Arch/ArchAxisSystem.py
FreeCAD/Mod/Arch/ArchBuilding.py
FreeCAD/Mod/Arch/ArchBuildingPart.py
FreeCAD/Mod/Arch/ArchCommands.py
@@ -29,6 +69,7 @@ FreeCAD/Mod/Arch/ArchEquipment.py
FreeCAD/Mod/Arch/ArchFence.py
FreeCAD/Mod/Arch/ArchFloor.py
FreeCAD/Mod/Arch/ArchFrame.py
+FreeCAD/Mod/Arch/ArchGrid.py
FreeCAD/Mod/Arch/ArchIFC.py
FreeCAD/Mod/Arch/ArchIFCSchema.py
FreeCAD/Mod/Arch/ArchIFCView.py
@@ -155,11 +196,11 @@ FreeCAD/Mod/Draft/draftguitools/gui_facebinders.py
FreeCAD/Mod/Draft/draftguitools/gui_fillets.py
FreeCAD/Mod/Draft/draftguitools/gui_grid.py
FreeCAD/Mod/Draft/draftguitools/gui_groups.py
+FreeCAD/Mod/Draft/draftguitools/gui_hatch.py
FreeCAD/Mod/Draft/draftguitools/gui_heal.py
FreeCAD/Mod/Draft/draftguitools/gui_join.py
FreeCAD/Mod/Draft/draftguitools/gui_labels.py
FreeCAD/Mod/Draft/draftguitools/gui_layers.py
-FreeCAD/Mod/Draft/draftguitools/gui_lineops.py
FreeCAD/Mod/Draft/draftguitools/gui_lines.py
FreeCAD/Mod/Draft/draftguitools/gui_lineslope.py
FreeCAD/Mod/Draft/draftguitools/gui_mirror.py
@@ -210,6 +251,7 @@ FreeCAD/Mod/Draft/draftmake/make_drawingview.py
FreeCAD/Mod/Draft/draftmake/make_ellipse.py
FreeCAD/Mod/Draft/draftmake/make_facebinder.py
FreeCAD/Mod/Draft/draftmake/make_fillet.py
+FreeCAD/Mod/Draft/draftmake/make_hatch.py
FreeCAD/Mod/Draft/draftmake/make_label.py
FreeCAD/Mod/Draft/draftmake/make_layer.py
FreeCAD/Mod/Draft/draftmake/make_line.py
@@ -242,6 +284,7 @@ FreeCAD/Mod/Draft/draftobjects/drawingview.py
FreeCAD/Mod/Draft/draftobjects/ellipse.py
FreeCAD/Mod/Draft/draftobjects/facebinder.py
FreeCAD/Mod/Draft/draftobjects/fillet.py
+FreeCAD/Mod/Draft/draftobjects/hatch.py
FreeCAD/Mod/Draft/draftobjects/label.py
FreeCAD/Mod/Draft/draftobjects/layer.py
FreeCAD/Mod/Draft/draftobjects/patharray.py
@@ -269,6 +312,7 @@ FreeCAD/Mod/Draft/drafttests/auxiliary.py
FreeCAD/Mod/Draft/drafttests/draft_test_objects.py
FreeCAD/Mod/Draft/drafttests/test_airfoildat.py
FreeCAD/Mod/Draft/drafttests/test_creation.py
+FreeCAD/Mod/Draft/drafttests/test_draftgeomutils.py
FreeCAD/Mod/Draft/drafttests/test_dwg.py
FreeCAD/Mod/Draft/drafttests/test_dxf.py
FreeCAD/Mod/Draft/drafttests/test_import.py
@@ -302,12 +346,14 @@ FreeCAD/Mod/Draft/draftviewproviders/view_draft_annotation.py
FreeCAD/Mod/Draft/draftviewproviders/view_draftlink.py
FreeCAD/Mod/Draft/draftviewproviders/view_facebinder.py
FreeCAD/Mod/Draft/draftviewproviders/view_fillet.py
+FreeCAD/Mod/Draft/draftviewproviders/view_hatch.py
FreeCAD/Mod/Draft/draftviewproviders/view_label.py
FreeCAD/Mod/Draft/draftviewproviders/view_layer.py
FreeCAD/Mod/Draft/draftviewproviders/view_orthoarray.py
FreeCAD/Mod/Draft/draftviewproviders/view_point.py
FreeCAD/Mod/Draft/draftviewproviders/view_polararray.py
FreeCAD/Mod/Draft/draftviewproviders/view_rectangle.py
+FreeCAD/Mod/Draft/draftviewproviders/view_shapestring.py
FreeCAD/Mod/Draft/draftviewproviders/view_text.py
FreeCAD/Mod/Draft/draftviewproviders/view_wire.py
FreeCAD/Mod/Draft/draftviewproviders/view_wpproxy.py
@@ -325,6 +371,7 @@ FreeCAD/Mod/Drawing/README.md
FreeCAD/Mod/Fem/Init.py
FreeCAD/Mod/Fem/InitGui.py
FreeCAD/Mod/Fem/ObjectsFem.py
+FreeCAD/Mod/Fem/Resources/ui/ConstraintCentrif.ui
FreeCAD/Mod/Fem/Resources/ui/ConstraintSectionPrint.ui
FreeCAD/Mod/Fem/Resources/ui/ConstraintTie.ui
FreeCAD/Mod/Fem/Resources/ui/ElectrostaticPotential.ui
@@ -351,38 +398,72 @@ FreeCAD/Mod/Fem/femcommands/__init__.py
FreeCAD/Mod/Fem/femcommands/commands.py
FreeCAD/Mod/Fem/femcommands/manager.py
FreeCAD/Mod/Fem/femexamples/__init__.py
+FreeCAD/Mod/Fem/femexamples/boxanalysis_base.py
FreeCAD/Mod/Fem/femexamples/boxanalysis_frequency.py
FreeCAD/Mod/Fem/femexamples/boxanalysis_static.py
+FreeCAD/Mod/Fem/femexamples/buckling_lateraltorsionalbuckling.py
+FreeCAD/Mod/Fem/femexamples/buckling_platebuckling.py
+FreeCAD/Mod/Fem/femexamples/ccx_buckling_flexuralbuckling.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_base_edge.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_base_face.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_base_solid.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_beam_circle.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_beam_pipe.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_beam_rect.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_ele_hexa20.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_ele_quad4.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_ele_quad8.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_ele_seg2.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_ele_seg3.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_ele_tetra4.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_ele_tria3.py
+FreeCAD/Mod/Fem/femexamples/ccx_cantilever_ele_tria6.py
FreeCAD/Mod/Fem/femexamples/ccx_cantilever_faceload.py
-FreeCAD/Mod/Fem/femexamples/ccx_cantilever_hexa20faceload.py
FreeCAD/Mod/Fem/femexamples/ccx_cantilever_nodeload.py
FreeCAD/Mod/Fem/femexamples/ccx_cantilever_prescribeddisplacement.py
+FreeCAD/Mod/Fem/femexamples/constraint_centrif.py
FreeCAD/Mod/Fem/femexamples/constraint_contact_shell_shell.py
FreeCAD/Mod/Fem/femexamples/constraint_contact_solid_solid.py
FreeCAD/Mod/Fem/femexamples/constraint_section_print.py
FreeCAD/Mod/Fem/femexamples/constraint_selfweight_cantilever.py
FreeCAD/Mod/Fem/femexamples/constraint_tie.py
FreeCAD/Mod/Fem/femexamples/constraint_transform_beam_hinged.py
+FreeCAD/Mod/Fem/femexamples/constraint_transform_torque.py
+FreeCAD/Mod/Fem/femexamples/elmer_nonguitutorial01_eigenvalue_of_elastic_beam.py
FreeCAD/Mod/Fem/femexamples/equation_electrostatics_capacitance_two_balls.py
FreeCAD/Mod/Fem/femexamples/equation_electrostatics_electricforce_elmer_nongui6.py
FreeCAD/Mod/Fem/femexamples/examplesgui.py
+FreeCAD/Mod/Fem/femexamples/frequency_beamsimple.py
FreeCAD/Mod/Fem/femexamples/manager.py
FreeCAD/Mod/Fem/femexamples/material_multiple_bendingbeam_fiveboxes.py
FreeCAD/Mod/Fem/femexamples/material_multiple_bendingbeam_fivefaces.py
FreeCAD/Mod/Fem/femexamples/material_multiple_tensionrod_twoboxes.py
FreeCAD/Mod/Fem/femexamples/material_nl_platewithhole.py
FreeCAD/Mod/Fem/femexamples/meshes/__init__.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_beamsimple_tetra10.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_boxanalysis_tetra10.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_boxes_2_vertikal_tetra10.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_buckling_ibeam_tria6.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_buckling_plate_tria6.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_canticcx_hexa20.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_canticcx_quad4.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_canticcx_quad8.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_canticcx_seg2.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_canticcx_seg3.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_canticcx_tetra10.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_canticcx_tria3.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_canticcx_tria6.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_capacitance_two_balls_tetra10.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_constraint_centrif_tetra10.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_constraint_tie_tetra10.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_contact_box_halfcylinder_tetra10.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_contact_tube_tube_tria3.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_eigenvalue_of_elastic_beam_tetra10.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_electricforce_elmer_nongui6_tetra10.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_flexural_buckling.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_multibodybeam_tetra10.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_multibodybeam_tria6.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_plate_mystran_quad4.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_platewithhole_tetra10.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_rc_wall_2d_tria6.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_section_print_tetra10.py
@@ -392,12 +473,18 @@ FreeCAD/Mod/Fem/femexamples/meshes/mesh_thermomech_bimetall_tetra10.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_thermomech_flow1d_seg3.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_thermomech_spine_tetra10.py
FreeCAD/Mod/Fem/femexamples/meshes/mesh_transform_beam_hinged_tetra10.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_transform_torque_tetra10.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_truss_crane_seg2.py
+FreeCAD/Mod/Fem/femexamples/meshes/mesh_truss_crane_seg3.py
+FreeCAD/Mod/Fem/femexamples/mystran_plate.py
FreeCAD/Mod/Fem/femexamples/rc_wall_2d.py
FreeCAD/Mod/Fem/femexamples/square_pipe_end_twisted_edgeforces.py
FreeCAD/Mod/Fem/femexamples/square_pipe_end_twisted_nodeforces.py
FreeCAD/Mod/Fem/femexamples/thermomech_bimetall.py
FreeCAD/Mod/Fem/femexamples/thermomech_flow1d.py
FreeCAD/Mod/Fem/femexamples/thermomech_spine.py
+FreeCAD/Mod/Fem/femexamples/truss_3d_cs_circle_ele_seg2.py
+FreeCAD/Mod/Fem/femexamples/truss_3d_cs_circle_ele_seg3.py
FreeCAD/Mod/Fem/femguiobjects/__init__.py
FreeCAD/Mod/Fem/femguiobjects/readme.md
FreeCAD/Mod/Fem/femguiutils/__init__.py
@@ -405,6 +492,7 @@ FreeCAD/Mod/Fem/femguiutils/migrate_gui.py
FreeCAD/Mod/Fem/femguiutils/selection_widgets.py
FreeCAD/Mod/Fem/feminout/__init__.py
FreeCAD/Mod/Fem/feminout/convert2TetGen.py
+FreeCAD/Mod/Fem/feminout/exportNastranMesh.py
FreeCAD/Mod/Fem/feminout/importCcxDatResults.py
FreeCAD/Mod/Fem/feminout/importCcxFrdResults.py
FreeCAD/Mod/Fem/feminout/importFenicsMesh.py
@@ -422,11 +510,13 @@ FreeCAD/Mod/Fem/feminout/writeFenicsXML.py
FreeCAD/Mod/Fem/femmesh/__init__.py
FreeCAD/Mod/Fem/femmesh/femmesh2mesh.py
FreeCAD/Mod/Fem/femmesh/gmshtools.py
+FreeCAD/Mod/Fem/femmesh/meshsetsgetter.py
FreeCAD/Mod/Fem/femmesh/meshtools.py
FreeCAD/Mod/Fem/femobjects/__init__.py
FreeCAD/Mod/Fem/femobjects/base_fempythonobject.py
FreeCAD/Mod/Fem/femobjects/constant_vacuumpermittivity.py
FreeCAD/Mod/Fem/femobjects/constraint_bodyheatsource.py
+FreeCAD/Mod/Fem/femobjects/constraint_centrif.py
FreeCAD/Mod/Fem/femobjects/constraint_electrostaticpotential.py
FreeCAD/Mod/Fem/femobjects/constraint_flowvelocity.py
FreeCAD/Mod/Fem/femobjects/constraint_initialflowvelocity.py
@@ -453,6 +543,28 @@ FreeCAD/Mod/Fem/femsolver/__init__.py
FreeCAD/Mod/Fem/femsolver/calculix/__init__.py
FreeCAD/Mod/Fem/femsolver/calculix/solver.py
FreeCAD/Mod/Fem/femsolver/calculix/tasks.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_centrif.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_contact.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_displacement.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_fixed.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_fluidsection.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_force.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_heatflux.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_initialtemperature.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_planerotation.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_pressure.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_sectionprint.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_selfweight.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_temperature.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_tie.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_constraint_transform.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_femelement_geometry.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_femelement_material.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_femelement_matgeosets.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_footer.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_mesh.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_step_equation.py
+FreeCAD/Mod/Fem/femsolver/calculix/write_step_output.py
FreeCAD/Mod/Fem/femsolver/calculix/writer.py
FreeCAD/Mod/Fem/femsolver/elmer/__init__.py
FreeCAD/Mod/Fem/femsolver/elmer/equations/__init__.py
@@ -472,6 +584,16 @@ FreeCAD/Mod/Fem/femsolver/elmer/writer.py
FreeCAD/Mod/Fem/femsolver/equationbase.py
FreeCAD/Mod/Fem/femsolver/fenics/__init__.py
FreeCAD/Mod/Fem/femsolver/fenics/fenics_tools.py
+FreeCAD/Mod/Fem/femsolver/mystran/__init__.py
+FreeCAD/Mod/Fem/femsolver/mystran/add_con_fixed.py
+FreeCAD/Mod/Fem/femsolver/mystran/add_con_force.py
+FreeCAD/Mod/Fem/femsolver/mystran/add_femelement_geometry.py
+FreeCAD/Mod/Fem/femsolver/mystran/add_femelement_material.py
+FreeCAD/Mod/Fem/femsolver/mystran/add_mesh.py
+FreeCAD/Mod/Fem/femsolver/mystran/add_solver_control.py
+FreeCAD/Mod/Fem/femsolver/mystran/solver.py
+FreeCAD/Mod/Fem/femsolver/mystran/tasks.py
+FreeCAD/Mod/Fem/femsolver/mystran/writer.py
FreeCAD/Mod/Fem/femsolver/report.py
FreeCAD/Mod/Fem/femsolver/reportdialog.py
FreeCAD/Mod/Fem/femsolver/run.py
@@ -486,6 +608,7 @@ FreeCAD/Mod/Fem/femsolver/z88/solver.py
FreeCAD/Mod/Fem/femsolver/z88/tasks.py
FreeCAD/Mod/Fem/femsolver/z88/writer.py
FreeCAD/Mod/Fem/femtaskpanels/__init__.py
+FreeCAD/Mod/Fem/femtaskpanels/task_constraint_centrif.py
FreeCAD/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py
FreeCAD/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py
FreeCAD/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py
@@ -516,6 +639,7 @@ FreeCAD/Mod/Fem/femtest/app/test_open.py
FreeCAD/Mod/Fem/femtest/app/test_result.py
FreeCAD/Mod/Fem/femtest/app/test_solver_calculix.py
FreeCAD/Mod/Fem/femtest/app/test_solver_elmer.py
+FreeCAD/Mod/Fem/femtest/app/test_solver_mystran.py
FreeCAD/Mod/Fem/femtest/app/test_solver_z88.py
FreeCAD/Mod/Fem/femtest/data/__init__.py
FreeCAD/Mod/Fem/femtest/data/calculix/__init__.py
@@ -530,10 +654,22 @@ FreeCAD/Mod/Fem/femtest/data/calculix/box_static.dat
FreeCAD/Mod/Fem/femtest/data/calculix/box_static.frd
FreeCAD/Mod/Fem/femtest/data/calculix/box_static.inp
FreeCAD/Mod/Fem/femtest/data/calculix/box_static_expected_values
-FreeCAD/Mod/Fem/femtest/data/calculix/ccxcantilever_faceload.inp
-FreeCAD/Mod/Fem/femtest/data/calculix/ccxcantilever_hexa20.inp
-FreeCAD/Mod/Fem/femtest/data/calculix/ccxcantilever_nodeload.inp
-FreeCAD/Mod/Fem/femtest/data/calculix/ccxcantilever_prescribeddisplacement.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_buckling_flexuralbuckling.dat
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_buckling_flexuralbuckling.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_circle.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_pipe.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_beam_rect.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_hexa20.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_quad4.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_quad8.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_seg2.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_seg3.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_tria3.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_ele_tria6.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_faceload.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_nodeload.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/ccx_cantilever_prescribeddisplacement.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/constraint_centrif.inp
FreeCAD/Mod/Fem/femtest/data/calculix/constraint_contact_shell_shell.FCStd
FreeCAD/Mod/Fem/femtest/data/calculix/constraint_contact_shell_shell.inp
FreeCAD/Mod/Fem/femtest/data/calculix/constraint_contact_solid_solid.FCStd
@@ -541,6 +677,9 @@ FreeCAD/Mod/Fem/femtest/data/calculix/constraint_contact_solid_solid.inp
FreeCAD/Mod/Fem/femtest/data/calculix/constraint_sectionprint.inp
FreeCAD/Mod/Fem/femtest/data/calculix/constraint_selfweight_cantilever.inp
FreeCAD/Mod/Fem/femtest/data/calculix/constraint_tie.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/constraint_transform_beam_hinged.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/constraint_transform_torque.inp
+FreeCAD/Mod/Fem/femtest/data/calculix/frequency_beamsimple.inp
FreeCAD/Mod/Fem/femtest/data/calculix/material_multiple_bendingbeam_fiveboxes.inp
FreeCAD/Mod/Fem/femtest/data/calculix/material_multiple_bendingbeam_fivefaces.inp
FreeCAD/Mod/Fem/femtest/data/calculix/material_multiple_tensionrod_twoboxes.inp
@@ -573,39 +712,56 @@ FreeCAD/Mod/Fem/femtest/data/mesh/tetra10_mesh.unv
FreeCAD/Mod/Fem/femtest/data/mesh/tetra10_mesh.vtk
FreeCAD/Mod/Fem/femtest/data/mesh/tetra10_mesh.yml
FreeCAD/Mod/Fem/femtest/data/mesh/tetra10_mesh.z88
+FreeCAD/Mod/Fem/femtest/data/mystran/__init__.py
+FreeCAD/Mod/Fem/femtest/data/mystran/ccx_cantilever_ele_quad4.bdf
+FreeCAD/Mod/Fem/femtest/data/mystran/ccx_cantilever_ele_seg2.bdf
+FreeCAD/Mod/Fem/femtest/data/mystran/ccx_cantilever_ele_tria3.bdf
+FreeCAD/Mod/Fem/femtest/data/mystran/ccx_cantilever_faceload.bdf
+FreeCAD/Mod/Fem/femtest/data/mystran/ccx_cantilever_nodeload.bdf
+FreeCAD/Mod/Fem/femtest/data/mystran/mystran_plate.bdf
FreeCAD/Mod/Fem/femtest/data/open/__init__.py
FreeCAD/Mod/Fem/femtest/data/open/all_objects_de9b3fb438.FCStd
FreeCAD/Mod/Fem/femtest/data/z88/__init__.py
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/51.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/__init__.py
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88.dyn
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88elp.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i1.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i2.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88i5.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88int.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88man.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_faceload/z88mat.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_hexa20/51.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_hexa20/__init__.py
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_hexa20/z88.dyn
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_hexa20/z88elp.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_hexa20/z88i1.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_hexa20/z88i2.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_hexa20/z88i5.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_hexa20/z88int.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_hexa20/z88man.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_hexa20/z88mat.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_nodeload/51.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_nodeload/__init__.py
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_nodeload/z88.dyn
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_nodeload/z88elp.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_nodeload/z88i1.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_nodeload/z88i2.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_nodeload/z88i5.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_nodeload/z88int.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_nodeload/z88man.txt
-FreeCAD/Mod/Fem/femtest/data/z88/ccxcantilever_nodeload/z88mat.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_hexa20/51.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_hexa20/__init__.py
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_hexa20/z88.dyn
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_hexa20/z88elp.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_hexa20/z88i1.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_hexa20/z88i2.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_hexa20/z88i5.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_hexa20/z88int.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_hexa20/z88man.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_hexa20/z88mat.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_tria6/51.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_tria6/__init__.py
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_tria6/z88.dyn
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_tria6/z88elp.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_tria6/z88i1.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_tria6/z88i2.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_tria6/z88i5.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_tria6/z88int.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_tria6/z88man.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_ele_tria6/z88mat.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_faceload/51.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_faceload/__init__.py
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_faceload/z88.dyn
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_faceload/z88elp.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_faceload/z88i1.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_faceload/z88i2.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_faceload/z88i5.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_faceload/z88int.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_faceload/z88man.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_faceload/z88mat.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_nodeload/51.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_nodeload/__init__.py
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_nodeload/z88.dyn
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_nodeload/z88elp.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_nodeload/z88i1.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_nodeload/z88i2.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_nodeload/z88i5.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_nodeload/z88int.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_nodeload/z88man.txt
+FreeCAD/Mod/Fem/femtest/data/z88/ccx_cantilever_nodeload/z88mat.txt
FreeCAD/Mod/Fem/femtest/gui/__init__.py
FreeCAD/Mod/Fem/femtest/gui/test_open.py
FreeCAD/Mod/Fem/femtest/test_commands.sh
@@ -625,6 +781,7 @@ FreeCAD/Mod/Fem/femviewprovider/view_base_femconstraint.py
FreeCAD/Mod/Fem/femviewprovider/view_base_femobject.py
FreeCAD/Mod/Fem/femviewprovider/view_constant_vacuumpermittivity.py
FreeCAD/Mod/Fem/femviewprovider/view_constraint_bodyheatsource.py
+FreeCAD/Mod/Fem/femviewprovider/view_constraint_centrif.py
FreeCAD/Mod/Fem/femviewprovider/view_constraint_electrostaticpotential.py
FreeCAD/Mod/Fem/femviewprovider/view_constraint_flowvelocity.py
FreeCAD/Mod/Fem/femviewprovider/view_constraint_initialflowvelocity.py
@@ -702,6 +859,10 @@ FreeCAD/Mod/Material/materials-editor.ui
FreeCAD/Mod/Material/materialtools/__init__.py
FreeCAD/Mod/Material/materialtools/cardutils.py
FreeCAD/Mod/Measure/Init.py
+FreeCAD/Mod/Mesh/App/TestData/NASTRAN_Test_Delimited_GRID_CQUAD4.bdf
+FreeCAD/Mod/Mesh/App/TestData/NASTRAN_Test_GRIDSTAR_CQUAD4.bdf
+FreeCAD/Mod/Mesh/App/TestData/NASTRAN_Test_GRID_CQUAD4.bdf
+FreeCAD/Mod/Mesh/App/TestData/NASTRAN_Test_GRID_CTRIA3.bdf
FreeCAD/Mod/Mesh/BuildRegularGeoms.py
FreeCAD/Mod/Mesh/Init.py
FreeCAD/Mod/Mesh/InitGui.py
@@ -714,8 +875,24 @@ FreeCAD/Mod/OpenSCAD/InitGui.py
FreeCAD/Mod/OpenSCAD/OpenSCAD2Dgeom.py
FreeCAD/Mod/OpenSCAD/OpenSCADCommands.py
FreeCAD/Mod/OpenSCAD/OpenSCADFeatures.py
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/__init__.py
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/app/__init__.py
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/app/test_importCSG.py
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/data/CSG.csg
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/data/CSG.scad
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/data/Cube.stl
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/data/Square.dxf
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/data/Surface.dat
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/data/Surface.png
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/data/Surface2.dat
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/data/__init__.py
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/gui/__init__.py
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/gui/test_dummy.py
+FreeCAD/Mod/OpenSCAD/OpenSCADTest/test_information.md
FreeCAD/Mod/OpenSCAD/OpenSCADUtils.py
FreeCAD/Mod/OpenSCAD/OpenSCAD_rc.py
+FreeCAD/Mod/OpenSCAD/TestOpenSCADApp.py
+FreeCAD/Mod/OpenSCAD/TestOpenSCADGui.py
FreeCAD/Mod/OpenSCAD/colorcodeshapes.py
FreeCAD/Mod/OpenSCAD/expandplacements.py
FreeCAD/Mod/OpenSCAD/exportCSG.py
@@ -736,6 +913,7 @@ FreeCAD/Mod/Part/BOPTools/SplitFeatures.py
FreeCAD/Mod/Part/BOPTools/Utils.py
FreeCAD/Mod/Part/BOPTools/__init__.py
FreeCAD/Mod/Part/BasicShapes/CommandShapes.py
+FreeCAD/Mod/Part/BasicShapes/ShapeContent.py
FreeCAD/Mod/Part/BasicShapes/Shapes.py
FreeCAD/Mod/Part/BasicShapes/TaskTube.ui
FreeCAD/Mod/Part/BasicShapes/ViewProviderShapes.py
@@ -749,6 +927,7 @@ FreeCAD/Mod/Part/Init.py
FreeCAD/Mod/Part/InitGui.py
FreeCAD/Mod/Part/JoinFeatures.py
FreeCAD/Mod/Part/MakeBottle.py
+FreeCAD/Mod/Part/PartEnums.py
FreeCAD/Mod/Part/TestPartApp.py
FreeCAD/Mod/Part/TestPartGui.py
FreeCAD/Mod/Part/parttests/__init__.py
@@ -764,6 +943,7 @@ FreeCAD/Mod/PartDesign/PartDesignTests/TestDatum.py
FreeCAD/Mod/PartDesign/PartDesignTests/TestDraft.py
FreeCAD/Mod/PartDesign/PartDesignTests/TestFillet.py
FreeCAD/Mod/PartDesign/PartDesignTests/TestHole.py
+FreeCAD/Mod/PartDesign/PartDesignTests/TestInvoluteGear.py
FreeCAD/Mod/PartDesign/PartDesignTests/TestLinearPattern.py
FreeCAD/Mod/PartDesign/PartDesignTests/TestLoft.py
FreeCAD/Mod/PartDesign/PartDesignTests/TestMirrored.py
@@ -807,8 +987,18 @@ FreeCAD/Mod/PartDesign/fcsprocket/__init__.py
FreeCAD/Mod/PartDesign/fcsprocket/fcsprocket.py
FreeCAD/Mod/PartDesign/fcsprocket/fcsprocketdialog.py
FreeCAD/Mod/PartDesign/fcsprocket/sprocket.py
-FreeCAD/Mod/Path/Data/Threads/imperial-internal.csv
-FreeCAD/Mod/Path/Data/Threads/metric-internal.csv
+FreeCAD/Mod/Path/Data/Threads/imperial-external-2A.csv
+FreeCAD/Mod/Path/Data/Threads/imperial-external-3A.csv
+FreeCAD/Mod/Path/Data/Threads/imperial-internal-2B.csv
+FreeCAD/Mod/Path/Data/Threads/imperial-internal-3B.csv
+FreeCAD/Mod/Path/Data/Threads/metric-external-4G6G.csv
+FreeCAD/Mod/Path/Data/Threads/metric-external-6G.csv
+FreeCAD/Mod/Path/Data/Threads/metric-internal-6H.csv
+FreeCAD/Mod/Path/Generators/drill_generator.py
+FreeCAD/Mod/Path/Generators/helix_generator.py
+FreeCAD/Mod/Path/Generators/rotation_generator.py
+FreeCAD/Mod/Path/Generators/threadmilling_generator.py
+FreeCAD/Mod/Path/Generators/toolchange_generator.py
FreeCAD/Mod/Path/Images/Ops/chamfer.svg
FreeCAD/Mod/Path/Images/Tools/drill.svg
FreeCAD/Mod/Path/Images/Tools/endmill.svg
@@ -816,13 +1006,16 @@ FreeCAD/Mod/Path/Images/Tools/v-bit.svg
FreeCAD/Mod/Path/Init.py
FreeCAD/Mod/Path/InitGui.py
FreeCAD/Mod/Path/PathCommands.py
+FreeCAD/Mod/Path/PathFeedRate.py
+FreeCAD/Mod/Path/PathMachineState.py
+FreeCAD/Mod/Path/PathPythonGui/__init__.py
+FreeCAD/Mod/Path/PathPythonGui/simple_edit_panel.py
FreeCAD/Mod/Path/PathScripts/PathAdaptive.py
FreeCAD/Mod/Path/PathScripts/PathAdaptiveGui.py
FreeCAD/Mod/Path/PathScripts/PathAreaOp.py
FreeCAD/Mod/Path/PathScripts/PathArray.py
FreeCAD/Mod/Path/PathScripts/PathCircularHoleBase.py
FreeCAD/Mod/Path/PathScripts/PathCircularHoleBaseGui.py
-FreeCAD/Mod/Path/PathScripts/PathCommands.py
FreeCAD/Mod/Path/PathScripts/PathComment.py
FreeCAD/Mod/Path/PathScripts/PathCopy.py
FreeCAD/Mod/Path/PathScripts/PathCustom.py
@@ -847,6 +1040,8 @@ FreeCAD/Mod/Path/PathScripts/PathDrillingGui.py
FreeCAD/Mod/Path/PathScripts/PathEngrave.py
FreeCAD/Mod/Path/PathScripts/PathEngraveBase.py
FreeCAD/Mod/Path/PathScripts/PathEngraveGui.py
+FreeCAD/Mod/Path/PathScripts/PathFeatureExtensions.py
+FreeCAD/Mod/Path/PathScripts/PathFeatureExtensionsGui.py
FreeCAD/Mod/Path/PathScripts/PathFixture.py
FreeCAD/Mod/Path/PathScripts/PathGeom.py
FreeCAD/Mod/Path/PathScripts/PathGetPoint.py
@@ -930,42 +1125,59 @@ FreeCAD/Mod/Path/PathScripts/PathWaterline.py
FreeCAD/Mod/Path/PathScripts/PathWaterlineGui.py
FreeCAD/Mod/Path/PathScripts/PostUtils.py
FreeCAD/Mod/Path/PathScripts/__init__.py
+FreeCAD/Mod/Path/PathScripts/drillableLib.py
+FreeCAD/Mod/Path/PathScripts/post/KineticNCBeamicon2_post.py
FreeCAD/Mod/Path/PathScripts/post/__init__.py
FreeCAD/Mod/Path/PathScripts/post/centroid_post.py
FreeCAD/Mod/Path/PathScripts/post/comparams_post.py
FreeCAD/Mod/Path/PathScripts/post/dxf_post.py
FreeCAD/Mod/Path/PathScripts/post/dynapath_post.py
FreeCAD/Mod/Path/PathScripts/post/example_pre.py
+FreeCAD/Mod/Path/PathScripts/post/fablin_post.py
+FreeCAD/Mod/Path/PathScripts/post/fanuc_post.py
FreeCAD/Mod/Path/PathScripts/post/gcode_pre.py
FreeCAD/Mod/Path/PathScripts/post/grbl_post.py
+FreeCAD/Mod/Path/PathScripts/post/heidenhain_post.py
FreeCAD/Mod/Path/PathScripts/post/jtech_post.py
FreeCAD/Mod/Path/PathScripts/post/linuxcnc_post.py
FreeCAD/Mod/Path/PathScripts/post/mach3_mach4_post.py
+FreeCAD/Mod/Path/PathScripts/post/marlin_post.py
FreeCAD/Mod/Path/PathScripts/post/nccad_post.py
FreeCAD/Mod/Path/PathScripts/post/opensbp_post.py
FreeCAD/Mod/Path/PathScripts/post/opensbp_pre.py
FreeCAD/Mod/Path/PathScripts/post/philips_post.py
FreeCAD/Mod/Path/PathScripts/post/rml_post.py
+FreeCAD/Mod/Path/PathScripts/post/rrf_post.py
FreeCAD/Mod/Path/PathScripts/post/slic3r_pre.py
FreeCAD/Mod/Path/PathScripts/post/smoothie_post.py
+FreeCAD/Mod/Path/PathScripts/post/uccnc_post.py
+FreeCAD/Mod/Path/PathTests/Drilling_1.FCStd
FreeCAD/Mod/Path/PathTests/PathTestUtils.py
+FreeCAD/Mod/Path/PathTests/TestPathAdaptive.py
FreeCAD/Mod/Path/PathTests/TestPathCore.py
FreeCAD/Mod/Path/PathTests/TestPathDeburr.py
FreeCAD/Mod/Path/PathTests/TestPathDepthParams.py
FreeCAD/Mod/Path/PathTests/TestPathDressupDogbone.py
FreeCAD/Mod/Path/PathTests/TestPathDressupHoldingTags.py
+FreeCAD/Mod/Path/PathTests/TestPathDrillGenerator.py
+FreeCAD/Mod/Path/PathTests/TestPathDrillable.py
FreeCAD/Mod/Path/PathTests/TestPathGeom.py
FreeCAD/Mod/Path/PathTests/TestPathHelix.py
+FreeCAD/Mod/Path/PathTests/TestPathHelixGenerator.py
+FreeCAD/Mod/Path/PathTests/TestPathHelpers.py
FreeCAD/Mod/Path/PathTests/TestPathLog.py
FreeCAD/Mod/Path/PathTests/TestPathOpTools.py
FreeCAD/Mod/Path/PathTests/TestPathPost.py
FreeCAD/Mod/Path/PathTests/TestPathPreferences.py
FreeCAD/Mod/Path/PathTests/TestPathPropertyBag.py
+FreeCAD/Mod/Path/PathTests/TestPathRotationGenerator.py
FreeCAD/Mod/Path/PathTests/TestPathSetupSheet.py
FreeCAD/Mod/Path/PathTests/TestPathStock.py
FreeCAD/Mod/Path/PathTests/TestPathThreadMilling.py
+FreeCAD/Mod/Path/PathTests/TestPathThreadMillingGenerator.py
FreeCAD/Mod/Path/PathTests/TestPathTool.py
FreeCAD/Mod/Path/PathTests/TestPathToolBit.py
+FreeCAD/Mod/Path/PathTests/TestPathToolChangeGenerator.py
FreeCAD/Mod/Path/PathTests/TestPathToolController.py
FreeCAD/Mod/Path/PathTests/TestPathTooltable.py
FreeCAD/Mod/Path/PathTests/TestPathUtil.py
@@ -979,6 +1191,7 @@ FreeCAD/Mod/Path/PathTests/boxtest.fcstd
FreeCAD/Mod/Path/PathTests/test-path-tool-bit-bit-00.fctb
FreeCAD/Mod/Path/PathTests/test-path-tool-bit-library-00.fctl
FreeCAD/Mod/Path/PathTests/test-path-tool-bit-shape-00.fcstd
+FreeCAD/Mod/Path/PathTests/test_adaptive.fcstd
FreeCAD/Mod/Path/PathTests/test_centroid_00.ngc
FreeCAD/Mod/Path/PathTests/test_geomop.fcstd
FreeCAD/Mod/Path/PathTests/test_holes00.fcstd
@@ -994,6 +1207,7 @@ FreeCAD/Mod/Path/Tools/Bit/6mm_Bullnose.fctb
FreeCAD/Mod/Path/Tools/Bit/probe.fctb
FreeCAD/Mod/Path/Tools/Bit/slittingsaw.fctb
FreeCAD/Mod/Path/Tools/Library/Default.fctl
+FreeCAD/Mod/Path/Tools/README.md
FreeCAD/Mod/Path/Tools/Shape/ballend.fcstd
FreeCAD/Mod/Path/Tools/Shape/bullnose.fcstd
FreeCAD/Mod/Path/Tools/Shape/chamfer.fcstd
@@ -1003,6 +1217,7 @@ FreeCAD/Mod/Path/Tools/Shape/probe.fcstd
FreeCAD/Mod/Path/Tools/Shape/slittingsaw.fcstd
FreeCAD/Mod/Path/Tools/Shape/thread-mill.fcstd
FreeCAD/Mod/Path/Tools/Shape/v-bit.fcstd
+FreeCAD/Mod/Plot/Plot.py
FreeCAD/Mod/Points/Init.py
FreeCAD/Mod/Points/InitGui.py
FreeCAD/Mod/Raytracing/Init.py
@@ -1038,6 +1253,7 @@ FreeCAD/Mod/Sketcher/ProfileLib/RegularPolygon.py
FreeCAD/Mod/Sketcher/ProfileLib/__init__.py
FreeCAD/Mod/Sketcher/Profiles.py
FreeCAD/Mod/Sketcher/SketcherExample.py
+FreeCAD/Mod/Sketcher/SketcherTests/TestSketchExpression.py
FreeCAD/Mod/Sketcher/SketcherTests/TestSketchFillet.py
FreeCAD/Mod/Sketcher/SketcherTests/TestSketcherSolver.py
FreeCAD/Mod/Sketcher/SketcherTests/__init__.py
@@ -1052,9 +1268,9 @@ FreeCAD/Mod/Start/InitGui.py
FreeCAD/Mod/Start/StartPage/StartPage.py
FreeCAD/Mod/Start/StartPage/TranslationTexts.py
FreeCAD/Mod/Start/StartPage/__init__.py
-FreeCAD/Mod/Start/TestStartGui.py
FreeCAD/Mod/Start/TestStart/TestStartPage.py
FreeCAD/Mod/Start/TestStart/__init__.py
+FreeCAD/Mod/Start/TestStartGui.py
FreeCAD/Mod/Surface/Init.py
FreeCAD/Mod/Surface/InitGui.py
FreeCAD/Mod/TechDraw/Init.py
@@ -1071,13 +1287,28 @@ FreeCAD/Mod/TechDraw/TDTest/TestImage.png
FreeCAD/Mod/TechDraw/TDTest/TestSymbol.svg
FreeCAD/Mod/TechDraw/TDTest/TestTemplate.svg
FreeCAD/Mod/TechDraw/TDTest/__init__.py
+FreeCAD/Mod/TechDraw/TechDrawTools/CommandMoveView.py
+FreeCAD/Mod/TechDraw/TechDrawTools/CommandShareView.py
+FreeCAD/Mod/TechDraw/TechDrawTools/Gui/DlgPageChooser.ui
+FreeCAD/Mod/TechDraw/TechDrawTools/Gui/TaskMoveView.ui
+FreeCAD/Mod/TechDraw/TechDrawTools/TDToolsMovers.py
+FreeCAD/Mod/TechDraw/TechDrawTools/TDToolsUtil.py
+FreeCAD/Mod/TechDraw/TechDrawTools/TaskMoveView.py
+FreeCAD/Mod/TechDraw/TechDrawTools/TaskShareView.py
+FreeCAD/Mod/TechDraw/TechDrawTools/__init__.py
FreeCAD/Mod/TechDraw/TestTechDrawApp.py
FreeCAD/Mod/Test/BaseTests.py
FreeCAD/Mod/Test/Document.py
FreeCAD/Mod/Test/Init.py
FreeCAD/Mod/Test/InitGui.py
FreeCAD/Mod/Test/Menu.py
+FreeCAD/Mod/Test/Metadata.py
FreeCAD/Mod/Test/TestApp.py
+FreeCAD/Mod/Test/TestData/bad_root_node.xml
+FreeCAD/Mod/Test/TestData/bad_version.xml
+FreeCAD/Mod/Test/TestData/bad_xml.xml
+FreeCAD/Mod/Test/TestData/basic_metadata.xml
+FreeCAD/Mod/Test/TestData/content_items.xml
FreeCAD/Mod/Test/TestGui.py
FreeCAD/Mod/Test/TestPythonSyntax.py
FreeCAD/Mod/Test/UnicodeTests.py
@@ -1097,6 +1328,7 @@ FreeCAD/Mod/Web/InitGui.py
FreeCAD/Mod/Web/TestWebGui.py
FreeCAD/bin/FreeCAD
FreeCAD/bin/FreeCADCmd
+FreeCAD/include/E57Format/E57Export.h
FreeCAD/lib/DraftUtils.so
FreeCAD/lib/Drawing.so
FreeCAD/lib/DrawingGui.so
@@ -1149,6 +1381,7 @@ FreeCAD/lib/libDriver.so
FreeCAD/lib/libDriverDAT.so
FreeCAD/lib/libDriverSTL.so
FreeCAD/lib/libDriverUNV.so
+FreeCAD/lib/libE57Format.a
FreeCAD/lib/libFreeCADApp.so
FreeCAD/lib/libFreeCADBase.so
FreeCAD/lib/libFreeCADGui.so
@@ -1159,6 +1392,19 @@ FreeCAD/lib/libSMESHDS.so
FreeCAD/lib/libStdMeshers.so
FreeCAD/lib/libarea-native.so
FreeCAD/share/3Dconnexion/3DConnexion.xml
+FreeCAD/share/Gui/PreferencePackTemplates/Arch_Colors.cfg
+FreeCAD/share/Gui/PreferencePackTemplates/Console_Colors.cfg
+FreeCAD/share/Gui/PreferencePackTemplates/Draft_Colors.cfg
+FreeCAD/share/Gui/PreferencePackTemplates/Editor_Colors.cfg
+FreeCAD/share/Gui/PreferencePackTemplates/Editor_Font.cfg
+FreeCAD/share/Gui/PreferencePackTemplates/Main_window_layout.cfg
+FreeCAD/share/Gui/PreferencePackTemplates/Path_Colors.cfg
+FreeCAD/share/Gui/PreferencePackTemplates/Sketcher_Colors.cfg
+FreeCAD/share/Gui/PreferencePackTemplates/Start_Colors.cfg
+FreeCAD/share/Gui/PreferencePackTemplates/TechDraw_Colors.cfg
+FreeCAD/share/Gui/PreferencePackTemplates/Window_Colors.cfg
+FreeCAD/share/Gui/PreferencePacks/FreeCAD Classic Colors/FreeCAD Classic Colors.cfg
+FreeCAD/share/Gui/PreferencePacks/package.xml
FreeCAD/share/Gui/Stylesheets/Behave-dark.qss
FreeCAD/share/Gui/Stylesheets/Dark-blue.qss
FreeCAD/share/Gui/Stylesheets/Dark-contrast.qss
@@ -1312,6 +1558,8 @@ FreeCAD/share/Mod/Import/DxfPlate/tables212.rub
FreeCAD/share/Mod/Import/DxfPlate/tables214.rub
FreeCAD/share/Mod/Inspection/Resources/icons/InspectionWorkbench.svg
FreeCAD/share/Mod/Material/FluidMaterial/Air.FCMat
+FreeCAD/share/Mod/Material/FluidMaterial/Argon.FCMat
+FreeCAD/share/Mod/Material/FluidMaterial/Nitrogen.FCMat
FreeCAD/share/Mod/Material/FluidMaterial/None.FCMat
FreeCAD/share/Mod/Material/FluidMaterial/Water.FCMat
FreeCAD/share/Mod/Material/StandardMaterial/ABS-Generic.FCMat
@@ -1326,6 +1574,7 @@ FreeCAD/share/Mod/Material/StandardMaterial/Concrete-Generic.FCMat
FreeCAD/share/Mod/Material/StandardMaterial/Glass-E-GlassFibre.FCMat
FreeCAD/share/Mod/Material/StandardMaterial/Glass-Generic.FCMat
FreeCAD/share/Mod/Material/StandardMaterial/Glass-S2-GlassFibre.FCMat
+FreeCAD/share/Mod/Material/StandardMaterial/Graphite.FCMat
FreeCAD/share/Mod/Material/StandardMaterial/None.FCMat
FreeCAD/share/Mod/Material/StandardMaterial/PA6-Generic.FCMat
FreeCAD/share/Mod/Material/StandardMaterial/PET-Generic.FCMat
@@ -1565,6 +1814,49 @@ FreeCAD/share/Mod/TechDraw/Symbols/gd-and-t/profile-tolerance-of-plane.svg
FreeCAD/share/Mod/TechDraw/Symbols/gd-and-t/roundness.svg
FreeCAD/share/Mod/TechDraw/Symbols/gd-and-t/symmetry.svg
FreeCAD/share/Mod/TechDraw/Symbols/gd-and-t/totalrunout.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/1st_Angle_Projection.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/3rd_Angle_Projection.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Arrow_Long_Filled.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Arrow_Long_Open.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Arrow_Medium_Filled.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Arrow_Medium_Open.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Arrow_Short_Filled.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Arrow_Short_Open.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Balloon_Editable_Text.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Balloon_Long.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Balloon_Medium.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Balloon_Short.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/CallOut.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/CallOut_Left.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/CallOut_Right.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Centre_Justified_Text_10_Lines.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Cloud.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Long.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Medium.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Cosmetic_Break_Small.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_End.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_End_Large.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_Middle.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Cosmetic_Round_Section_Middle_Large.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Datum_Left.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Datum_Point.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Datum_Right.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Datum_Target_Left.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Datum_Target_Plain.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Datum_Target_Right.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Datum_Target_Up.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Datum_Up.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Feature_Left.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Feature_Right.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Feature_Up.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Left_Justified_Text_10_Lines.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/North.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Revision_Triangle.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Right_Justified_Text_10_Lines.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Long.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Medium.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Whiteout_Rectangle_Short.svg
+FreeCAD/share/Mod/TechDraw/Symbols/misc/Whiteout_Square.svg
FreeCAD/share/Mod/TechDraw/Symbols/other/CutLine.svg
FreeCAD/share/Mod/TechDraw/Symbols/other/Diameter.svg
FreeCAD/share/Mod/TechDraw/Symbols/other/Envelope.svg
@@ -1599,6 +1891,7 @@ FreeCAD/share/Mod/TechDraw/Templates/A3_Landscape_ISO7200TD.svg
FreeCAD/share/Mod/TechDraw/Templates/A3_Landscape_ISO7200_Pep.svg
FreeCAD/share/Mod/TechDraw/Templates/A3_Landscape_IT_m52.svg
FreeCAD/share/Mod/TechDraw/Templates/A3_Landscape_blank.svg
+FreeCAD/share/Mod/TechDraw/Templates/A4_IRAM4504.svg
FreeCAD/share/Mod/TechDraw/Templates/A4_LandscapeTD.svg
FreeCAD/share/Mod/TechDraw/Templates/A4_Landscape_ISO7200TD.svg
FreeCAD/share/Mod/TechDraw/Templates/A4_Landscape_ISO7200_Pep.svg