Make cgal no-crash when fail
parent
cac5c2094c
commit
9892d1bc2c
|
@ -30,6 +30,7 @@
|
||||||
#include <CGAL/Polygon_mesh_processing/corefinement.h>
|
#include <CGAL/Polygon_mesh_processing/corefinement.h>
|
||||||
#include <CGAL/Polygon_mesh_processing/triangulate_faces.h>
|
#include <CGAL/Polygon_mesh_processing/triangulate_faces.h>
|
||||||
#include <CGAL/boost/graph/iterator.h>
|
#include <CGAL/boost/graph/iterator.h>
|
||||||
|
#include <CGAL/assertions_behaviour.h>
|
||||||
|
|
||||||
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
|
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
|
||||||
typedef CGAL::Surface_mesh<Kernel::Point_3> CgalMesh;
|
typedef CGAL::Surface_mesh<Kernel::Point_3> CgalMesh;
|
||||||
|
@ -297,6 +298,9 @@ void SkeletonToMesh::process()
|
||||||
|
|
||||||
if (meshIds.size() > 0) {
|
if (meshIds.size() > 0) {
|
||||||
#if USE_EXTERNAL
|
#if USE_EXTERNAL
|
||||||
|
# if USE_CGAL
|
||||||
|
CGAL::set_error_behaviour(CGAL::THROW_EXCEPTION);
|
||||||
|
# endif
|
||||||
std::vector<ExternalMesh *> externalMeshs;
|
std::vector<ExternalMesh *> externalMeshs;
|
||||||
for (size_t i = 0; i < meshIds.size(); i++) {
|
for (size_t i = 0; i < meshIds.size(); i++) {
|
||||||
int triangledMeshId = meshlite_triangulate(meshliteContext, meshIds[i]);
|
int triangledMeshId = meshlite_triangulate(meshliteContext, meshIds[i]);
|
||||||
|
@ -308,7 +312,12 @@ void SkeletonToMesh::process()
|
||||||
for (size_t i = 1; i < externalMeshs.size(); i++) {
|
for (size_t i = 1; i < externalMeshs.size(); i++) {
|
||||||
if (!mergedExternalMesh)
|
if (!mergedExternalMesh)
|
||||||
break;
|
break;
|
||||||
ExternalMesh *unionedExternalMesh = unionExternalMeshs(mergedExternalMesh, externalMeshs[i]);
|
ExternalMesh *unionedExternalMesh = NULL;
|
||||||
|
try {
|
||||||
|
unionedExternalMesh = unionExternalMeshs(mergedExternalMesh, externalMeshs[i]);
|
||||||
|
} catch (...) {
|
||||||
|
// ignore;
|
||||||
|
}
|
||||||
delete mergedExternalMesh;
|
delete mergedExternalMesh;
|
||||||
delete externalMeshs[i];
|
delete externalMeshs[i];
|
||||||
mergedExternalMesh = unionedExternalMesh;
|
mergedExternalMesh = unionedExternalMesh;
|
||||||
|
|
Loading…
Reference in New Issue