#include #include #include #include /* DOMAIN */ typedef CGAL::Mesh_3::Robust_intersection_traits_3 Geom_traits; // exact constructions here typedef CGAL::Polyhedron_3 Polyhedron; typedef CGAL::Polyhedral_mesh_domain_3 Polyhedral_domain; /* TRIANGULATION */ typedef CGAL::Mesh_triangulation_3::type Tr_polyhedron; typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3_polyhedron; /* MESHING CRITERIA */ typedef CGAL::Mesh_criteria_3 Mesh_criteria_polyhedron; /** Builds the polyhedron domain from the off file name */ template <> class Domain_builder { typedef Polyhedral_domain Domain; public: Domain_builder(const std::string& str) : domain_(NULL) { std::ifstream input(str.c_str()); input >> polyhedron_; domain_ = new Domain(polyhedron_); } ~Domain_builder() { delete domain_; } Domain& domain() { return *domain_; } Polyhedron::Point_iterator points_begin() { return polyhedron_.points_begin(); } Polyhedron::Point_iterator points_end() { return polyhedron_.points_end(); } C3t3_polyhedron::Index points_index() { return domain_->index_from_surface_index(domain_->make_surface_index()); } private: Domain* domain_; Polyhedron polyhedron_; }; int main(int argc, char** argv) { int nb_threads; std::string outdir; std::string datadir; // options po::options_description generic("Options"); generic.add_options() ("help", "Produce help message") ("threads", po::value(&nb_threads)->default_value(2), "Run threads") ("outdir", po::value(&outdir)->default_value("tester_output"), "Output directory. is location") ("datadir", po::value(&datadir)->default_value("data/Polyhedra"), "Data directory. is location"); po::options_description cmdline_options("Usage", 1); cmdline_options.add(generic); po::variables_map vm; po::store(po::parse_command_line(argc, argv, cmdline_options), vm); po::notify(vm); if(vm.count("help")) { std::cout << cmdline_options << std::endl; std::cout << "* Polyhedron: .off files should be in data/Polyhedra\n"; std::cout << " Note: for each file toto.off, add a toto.txt file with meshing parameters\n\n"; return 1; } if ( datadir[datadir.size()-1] != '/' ) datadir.push_back('/'); // iterate on data files mesh(datadir,outdir,nb_threads); return 0; }