Add obj IO for soups in demo

This commit is contained in:
Maxime Gimeno 2020-10-19 09:56:05 +02:00
parent 4b28101397
commit 12c5fbe719
2 changed files with 16 additions and 4 deletions

View File

@ -218,7 +218,16 @@ Polyhedron_demo_off_plugin::load_obj(QFileInfo fileinfo) {
item->setName(fileinfo.baseName());
if(item->load_obj(in))
return item;
return 0;
//if not polygonmesh load in soup
std::vector<Point_3> points;
std::vector<std::vector<std::size_t> > polygons;
if(CGAL::read_OBJ(in, points, polygons))
{
Scene_polygon_soup_item* soup_item = new Scene_polygon_soup_item();
soup_item->load(points, polygons);
return soup_item;
}
return nullptr;
}
bool Polyhedron_demo_off_plugin::canSave(const CGAL::Three::Scene_item* item)
@ -262,7 +271,8 @@ save(QFileInfo fileinfo,QList<CGAL::Three::Scene_item*>& items)
}
}
if(fileinfo.suffix().toLower() == "obj"){
bool res = (sm_item && sm_item->save_obj(out));
bool res = (sm_item && sm_item->save_obj(out))
|| (soup_item && CGAL::write_OBJ(out, soup_item->points(), soup_item->polygons()));
if(res)
{
items.pop_front();

View File

@ -23,13 +23,15 @@ struct Polygon_soup
typedef std::vector<CGAL::Color> Colors;
typedef std::set<Edge> Edges;
typedef Polygons::size_type size_type;
Points points;
Polygons polygons;
Edges_map edges;
Colors fcolors;
Colors vcolors;
Edges non_manifold_edges;
bool display_non_manifold_edges;
Points points;
Polygons polygons;
Polygon_soup():
display_non_manifold_edges(false){}