From 7bd5016c6d3597281464889cf4a47dbad8d09170 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 5 Apr 2017 21:14:31 +0200 Subject: [PATCH] bglize and add property maps. polyhedral domain with features works almost for Surface_mesh --- ...esh_polyhedral_domain_with_features_sm.cpp | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features_sm.cpp diff --git a/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features_sm.cpp b/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features_sm.cpp new file mode 100644 index 00000000000..78463d685f9 --- /dev/null +++ b/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features_sm.cpp @@ -0,0 +1,67 @@ +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +// Domain +typedef CGAL::Exact_predicates_inexact_constructions_kernel K; +typedef CGAL::Surface_mesh Surface_mesh; +typedef CGAL::Graph_with_descriptor_with_graph Polyhedron; + +typedef CGAL::Polyhedral_mesh_domain_with_features_3 Mesh_domain; + + +#ifdef CGAL_CONCURRENT_MESH_3 +typedef CGAL::Parallel_tag Concurrency_tag; +#else +typedef CGAL::Sequential_tag Concurrency_tag; +#endif + +// Triangulation +typedef CGAL::Mesh_triangulation_3::type Tr; + +typedef CGAL::Mesh_complex_3_in_triangulation_3< + Tr,Mesh_domain::Corner_index,Mesh_domain::Curve_segment_index> C3t3; + +// Criteria +typedef CGAL::Mesh_criteria_3 Mesh_criteria; + +// To avoid verbose function and named parameters call +using namespace CGAL::parameters; + +int main(int argc, char*argv[]) +{ + const char* fname = (argc>1)?argv[1]:"data/fandisk.off"; + std::ifstream input(fname); + Surface_mesh sm; + input >> sm; + Polyhedron polyhedron(sm); + if(input.fail()){ + std::cerr << "Error: Cannot read file " << fname << std::endl; + return EXIT_FAILURE; + } + // Create domain + Mesh_domain domain(polyhedron); + + // Get sharp features + domain.detect_features(); + + // Mesh criteria + Mesh_criteria criteria(edge_size = 0.025, + facet_angle = 25, facet_size = 0.05, facet_distance = 0.005, + cell_radius_edge_ratio = 3, cell_size = 0.05); + + // Mesh generation + C3t3 c3t3 = CGAL::make_mesh_3(domain, criteria); + + // Output + std::ofstream medit_file("out.mesh"); + c3t3.output_to_medit(medit_file); +}