如何将CGAL::Linear_cell_complex_for_combinatorial_map导出为.off/.obj格式
CGAL Linear_cell_complex_for_combinatorial_map 导出文件解决方案
一、导出表面网格(.off/.obj格式)
.off和.obj属于表面网格格式,默认仅存储点、面信息,你可以直接用CGAL内置的IO函数导出LCC的边界表面:
- 依赖头文件:
#include <CGAL/Linear_cell_complex_for_combinatorial_map.h> #include <CGAL/IO/write_off.h> #include <CGAL/IO/write_obj.h>
- 代码示例:
// 你的LCC类型定义,此处替换为你实际使用的模板参数 using LCC = CGAL::Linear_cell_complex_for_combinatorial_map<3, 3, CGAL::Linear_cell_complex_traits<3, CGAL::Simple_cartesian<double>>>; LCC lcc; // 已存储四面体化结果的LCC实例 // 导出为OFF格式 bool write_ok = CGAL::write_off("result.off", lcc); // 导出为OBJ格式可替换为 // bool write_ok = CGAL::write_obj("result.obj", lcc); if (!write_ok) { std::cerr << "网格写入失败" << std::endl; }
注:CGAL 5.2及以上版本已原生支持直接传入LCC实例调用上述导出函数,旧版本需要先手动提取边界三角面存入
CGAL::Surface_mesh再导出。
二、导出完整四面体体网格
如果需要保留全部四面体单元信息,可导出为支持体单元的格式,比如MEDIT的.mesh格式:
- 依赖头文件:
#include <CGAL/IO/write_mesh.h>
- 代码示例:
bool write_ok = CGAL::write_mesh("tet_result.mesh", lcc);
导出后的.mesh文件可以被MeshLab、Gmsh等多数网格处理工具识别读取。
内容的提问来源于stack exchange,提问作者Davide
相关产品推荐
相关产品推荐

