diff --git a/src/Mod/Mesh/.gitattributes b/src/Mod/Mesh/.gitattributes
deleted file mode 100644
index b53efa0b73..0000000000
--- a/src/Mod/Mesh/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-GTSAlgos.cpp export-ignore
-GTSAlgos.h export-ignore
diff --git a/src/Mod/Mesh/App/MeshPy.xml b/src/Mod/Mesh/App/MeshPy.xml
index 1c955f5079..f565f11ab8 100644
--- a/src/Mod/Mesh/App/MeshPy.xml
+++ b/src/Mod/Mesh/App/MeshPy.xml
@@ -98,11 +98,6 @@ lines = mesh.section(mesh2, [ConnectLines=True, MinDist=0.0001])
-
-
- Coarse the mesh
-
-
Apply a translation to the mesh
diff --git a/src/Mod/Mesh/App/MeshPyImp.cpp b/src/Mod/Mesh/App/MeshPyImp.cpp
index 1f4422e008..0045de4c49 100644
--- a/src/Mod/Mesh/App/MeshPyImp.cpp
+++ b/src/Mod/Mesh/App/MeshPyImp.cpp
@@ -593,15 +593,6 @@ PyObject* MeshPy::section(PyObject* args, PyObject* kwds)
return Py::new_reference_to(outer);
}
-PyObject* MeshPy::coarsen(PyObject* args)
-{
- if (!PyArg_ParseTuple(args, "")) {
- return nullptr;
- }
- PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
- return nullptr;
-}
-
PyObject* MeshPy::translate(PyObject* args)
{
float x {};
diff --git a/src/Mod/Mesh/App/PreCompiled.h b/src/Mod/Mesh/App/PreCompiled.h
index b8f33e88c2..4d4317c9d0 100644
--- a/src/Mod/Mesh/App/PreCompiled.h
+++ b/src/Mod/Mesh/App/PreCompiled.h
@@ -46,9 +46,6 @@
#include
#include
-#ifdef FC_USE_GTS
-#include
-#endif
// STL
#include
#include
diff --git a/src/Mod/Mesh/Gui/PreCompiled.h b/src/Mod/Mesh/Gui/PreCompiled.h
index 6c31c3511c..57b27a3171 100644
--- a/src/Mod/Mesh/Gui/PreCompiled.h
+++ b/src/Mod/Mesh/Gui/PreCompiled.h
@@ -37,11 +37,6 @@
#ifdef _PreComp_
-// Gts
-#ifdef FC_USE_GTS
-#include
-#endif
-
// standard
#include
#include
diff --git a/src/Mod/MeshPart/App/CurveProjector.h b/src/Mod/MeshPart/App/CurveProjector.h
index e7d99100ed..f2c84e4c2b 100644
--- a/src/Mod/MeshPart/App/CurveProjector.h
+++ b/src/Mod/MeshPart/App/CurveProjector.h
@@ -23,10 +23,6 @@
#ifndef _CurveProjector_h_
#define _CurveProjector_h_
-#ifdef FC_USE_GTS
-#include
-#endif
-
#include
#include
diff --git a/src/Mod/MeshPart/App/MeshAlgos.cpp b/src/Mod/MeshPart/App/MeshAlgos.cpp
index 3309481dbf..96c5169d5e 100644
--- a/src/Mod/MeshPart/App/MeshAlgos.cpp
+++ b/src/Mod/MeshPart/App/MeshAlgos.cpp
@@ -144,250 +144,6 @@ void MeshAlgos::offsetSpecial(MeshCore::MeshKernel* Mesh, float fSize, float zma
}
}
-
-void MeshAlgos::coarsen(MeshCore::MeshKernel* /*Mesh*/, float /*f*/)
-{
-#ifdef FC_USE_GTS
- GtsSurface* surface;
-
- // create a GTS surface
- surface = MeshAlgos::createGTSSurface(Mesh);
-
- Mesh->Clear();
-
- guint stop_number = 100000;
- gdouble fold = 3.1415 / 180.;
-
- gts_surface_coarsen(surface,
- NULL,
- NULL,
- NULL,
- NULL,
- (GtsStopFunc)gts_coarsen_stop_number,
- &stop_number,
- fold);
-
- // get the standard mesh
- fillMeshFromGTSSurface(Mesh, surface);
-#endif
-}
-
-
-MeshCore::MeshKernel* MeshAlgos::boolean(MeshCore::MeshKernel* pMesh1,
- MeshCore::MeshKernel* /*pMesh2*/,
- MeshCore::MeshKernel* /*pResult*/,
- int /*Type*/)
-{
-#ifdef FC_USE_GTS
- GtsSurface *s1, *s2, *s3;
- GtsSurfaceInter* si;
- GNode *tree1, *tree2;
- gboolean check_self_intersection = false;
- gboolean closed = true, is_open1, is_open2;
-
-
- // create a GTS surface
- s1 = MeshAlgos::createGTSSurface(pMesh1);
- s2 = MeshAlgos::createGTSSurface(pMesh2);
-
- /* check that the surfaces are orientable manifolds */
- if (!gts_surface_is_orientable(s1)) {
- gts_object_destroy(GTS_OBJECT(s1));
- gts_object_destroy(GTS_OBJECT(s2));
- throw std::runtime_error("surface 1 is not an orientable manifold\n");
- }
- if (!gts_surface_is_orientable(s2)) {
- gts_object_destroy(GTS_OBJECT(s1));
- gts_object_destroy(GTS_OBJECT(s2));
- throw std::runtime_error("surface 2 is not an orientable manifold\n");
- }
-
- /* check that the surfaces are not self-intersecting */
- if (check_self_intersection) {
- GtsSurface* self_intersects;
-
- self_intersects = gts_surface_is_self_intersecting(s1);
- if (self_intersects != NULL) {
- gts_object_destroy(GTS_OBJECT(self_intersects));
- gts_object_destroy(GTS_OBJECT(s1));
- gts_object_destroy(GTS_OBJECT(s2));
- throw std::runtime_error("surface is self-intersecting\n");
- }
- self_intersects = gts_surface_is_self_intersecting(s2);
- if (self_intersects != NULL) {
- gts_object_destroy(GTS_OBJECT(self_intersects));
- gts_object_destroy(GTS_OBJECT(s1));
- gts_object_destroy(GTS_OBJECT(s2));
- throw std::runtime_error("surface is self-intersecting\n");
- }
- }
-
- /* build bounding box tree for first surface */
- tree1 = gts_bb_tree_surface(s1);
- is_open1 = gts_surface_volume(s1) < 0. ? true : false;
-
- /* build bounding box tree for second surface */
- tree2 = gts_bb_tree_surface(s2);
- is_open2 = gts_surface_volume(s2) < 0. ? true : false;
-
- si = gts_surface_inter_new(gts_surface_inter_class(), s1, s2, tree1, tree2, is_open1, is_open2);
- g_assert(gts_surface_inter_check(si, &closed));
- if (!closed) {
- gts_object_destroy(GTS_OBJECT(s1));
- gts_object_destroy(GTS_OBJECT(s2));
- gts_bb_tree_destroy(tree1, true);
- gts_bb_tree_destroy(tree2, true);
- throw "the intersection of 1 and 2 is not a closed curve\n";
- }
-
- s3 = gts_surface_new(gts_surface_class(),
- gts_face_class(),
- gts_edge_class(),
- gts_vertex_class());
- if (Type == 0) { // union
- gts_surface_inter_boolean(si, s3, GTS_1_OUT_2);
- gts_surface_inter_boolean(si, s3, GTS_2_OUT_1);
- }
- else if (Type == 1) { // inter
- gts_surface_inter_boolean(si, s3, GTS_1_IN_2);
- gts_surface_inter_boolean(si, s3, GTS_2_IN_1);
- }
- else if (Type == 2) { // diff
- gts_surface_inter_boolean(si, s3, GTS_1_OUT_2);
- gts_surface_inter_boolean(si, s3, GTS_2_IN_1);
- gts_surface_foreach_face(si->s2, (GtsFunc)gts_triangle_revert, NULL);
- gts_surface_foreach_face(s2, (GtsFunc)gts_triangle_revert, NULL);
- }
- else if (Type == 3) { // cut inner
- gts_surface_inter_boolean(si, s3, GTS_1_IN_2);
- }
- else if (Type == 4) { // cut outer
- gts_surface_inter_boolean(si, s3, GTS_1_OUT_2);
- }
-
- // check that the resulting surface is not self-intersecting
- if (check_self_intersection) {
- GtsSurface* self_intersects;
-
- self_intersects = gts_surface_is_self_intersecting(s3);
- if (self_intersects != NULL) {
- gts_object_destroy(GTS_OBJECT(self_intersects));
- gts_object_destroy(GTS_OBJECT(s1));
- gts_object_destroy(GTS_OBJECT(s2));
- gts_object_destroy(GTS_OBJECT(s3));
- gts_object_destroy(GTS_OBJECT(si));
- gts_bb_tree_destroy(tree1, true);
- gts_bb_tree_destroy(tree2, true);
- throw std::runtime_error("the resulting surface is self-intersecting\n");
- }
- }
- // display summary information about the resulting surface
- // if (verbose)
- // gts_surface_print_stats (s3, stderr);
- // write resulting surface to standard output
-
- // get the standard mesh
- fillMeshFromGTSSurface(pResult, s3);
-
-
- // destroy surfaces
- gts_object_destroy(GTS_OBJECT(s1));
- gts_object_destroy(GTS_OBJECT(s2));
-
-#endif
- return pMesh1;
-}
-
-
-#ifdef FC_USE_GTS
-
-
-/// helper function - construct a Edge out of two Vertexes if not already there
-static GtsEdge* new_edge(GtsVertex* v1, GtsVertex* v2)
-{
- GtsSegment* s = gts_vertices_are_connected(v1, v2);
- if (s == NULL) {
- return gts_edge_new(gts_edge_class(), v1, v2);
- }
- else {
- return GTS_EDGE(s);
- }
-}
-
-
-GtsSurface* MeshAlgos::createGTSSurface(MeshCore::MeshKernel* Mesh)
-{
- GtsSurface* Surf = gts_surface_new(gts_surface_class(),
- gts_face_class(),
- gts_edge_class(),
- gts_vertex_class());
-
- unsigned long p1, p2, p3;
- Base::Vector3f Vertex;
-
-
- // Getting all the points
- GtsVertex** aVertex = (GtsVertex**)malloc(Mesh->CountPoints() * sizeof(GtsVertex*));
- for (unsigned int PIter = 0; PIter < Mesh->CountPoints(); PIter++) {
- Vertex = Mesh->GetPoint(PIter);
- aVertex[PIter] = gts_vertex_new(gts_vertex_class(), Vertex.x, Vertex.y, Vertex.z);
- }
-
- // cycling through the facets
- for (unsigned int pFIter = 0; pFIter < Mesh->CountFacets(); pFIter++) {
- // getting the three points of the facet
- Mesh->GetFacetPoints(pFIter, p1, p2, p3);
-
- // creating the edges and add the face to the surface
- gts_surface_add_face(Surf,
- gts_face_new(Surf->face_class,
- new_edge(aVertex[p1], aVertex[p2]),
- new_edge(aVertex[p2], aVertex[p3]),
- new_edge(aVertex[p3], aVertex[p1])));
- }
-
- Base::Console().Log("GTS [%d faces, %d Points, %d Edges,%s ,%s]\n",
- gts_surface_face_number(Surf),
- gts_surface_vertex_number(Surf),
- gts_surface_edge_number(Surf),
- gts_surface_is_orientable(Surf) ? "orientable" : "not orientable",
- gts_surface_is_self_intersecting(Surf) ? "self-intersections"
- : "no self-intersection");
-
- return Surf;
-}
-
-/// helper function for the face (triangle iteration
-static void onFaces(GtsTriangle* t, std::vector* VAry)
-{
- GtsVertex *mv0, *mv1, *mv2;
-
- gts_triangle_vertices(t, &mv0, &mv1, &mv2);
-
- VAry->push_back(MeshGeomFacet(Base::Vector3f(mv0->p.x, mv0->p.y, mv0->p.z),
- Base::Vector3f(mv1->p.x, mv1->p.y, mv1->p.z),
- Base::Vector3f(mv2->p.x, mv2->p.y, mv2->p.z)));
-}
-
-
-void MeshAlgos::fillMeshFromGTSSurface(MeshCore::MeshKernel* pMesh, GtsSurface* pSurface)
-{
- std::vector VAry;
-
- // remove old mesh
- pMesh->Clear();
-
- gts_surface_foreach_face(pSurface, (GtsFunc)onFaces, &VAry);
-
- // destroy surfaces
- gts_object_destroy(GTS_OBJECT(pSurface));
-
- // put the facets the simple way in the mesh, totp is recalculated!
- (*pMesh) = VAry;
-}
-
-#endif
-
#include
#include
#include
diff --git a/src/Mod/MeshPart/App/MeshAlgos.h b/src/Mod/MeshPart/App/MeshAlgos.h
index 5a0412be20..cca7065c9a 100644
--- a/src/Mod/MeshPart/App/MeshAlgos.h
+++ b/src/Mod/MeshPart/App/MeshAlgos.h
@@ -23,10 +23,6 @@
#ifndef _MeshAlgos_h_
#define _MeshAlgos_h_
-#ifdef FC_USE_GTS
-#include
-#endif
-
#include
#include "CurveProjector.h"
@@ -56,10 +52,6 @@ public:
static void offsetSpecial2(MeshCore::MeshKernel* Mesh, float fSize);
static void offsetSpecial(MeshCore::MeshKernel* Mesh, float fSize, float zmax, float zmin);
- /** Coarsen the mesh
- */
- static void coarsen(MeshCore::MeshKernel* Mesh, float f);
-
/** makes a boolean add
* The int Type stears the boolean oberation: 0=add;1=intersection;2=diff
*/
@@ -68,18 +60,6 @@ public:
MeshCore::MeshKernel* pResult,
int Type = 0);
-#ifdef FC_USE_GTS
-
- /** Creates a GTS Surface from a MeshKernel
- */
- static GtsSurface* createGTSSurface(MeshCore::MeshKernel* Mesh);
-
- /** Creates a GTS Surface from a MeshKernel
- */
-
- static void fillMeshFromGTSSurface(MeshCore::MeshKernel* pMesh, GtsSurface* pSurface);
-#endif
-
static void cutByShape(const TopoDS_Shape& aShape,
const MeshCore::MeshKernel* pMesh,
MeshCore::MeshKernel* pToolMesh);