三角面片(.obj,.ply,.stl)生成四面体网格(tetgen格式)

文章介绍了如何在Windows10环境下,使用VisualStudio2019编译Tetgen源码,解决编译过程中遇到的_CRT_SECURE_NO_WARNINGS和SDL检查报错。之后,将模型从.obj格式转换为.ply或.stl,通过Tetgen生成四面体网格,并利用-q参数控制网格质量。同时提到了Tetview作为可视化工具以及环境变量设置的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Windows下编译Tetgen

Tetgen官网:WIAS-Software

官网下载不了,但可以下载用户手册。

源码只能找别的途径下载:GitHub - ufz/tetgen: This is a clone of "A Quality Tetrahedral Mesh Generator and a 3D Delaunay Triangulator" tetgen; Official website:

我使用的环境win10+visual studio 2019

1. 新建C++控制台项目,并命名为“tetgen”

2. 添加源码文件(tetgen.h, tetgen.cxx, 和 predicates.cxx)到工程

3. 生成工程,我生成的是x86+release(其他的应该也行)

    注意这里直接生成会有两种报错:

    报错1:

    报错2:

 对于报错1:项目属性->配置属性->C/C++->命令行,其他选项中,输入:

 /D"_CRT_SECURE_NO_WARNINGS" 注意引号中无空格

 对于报错2:项目属性->配置属性->C/C++->常规->SDL检查,选测是或者否。

 4. 编译成功

 5. 为了方便再命令行中使用tetgen命令,我把它加到系统的环境变量了,否则每次都要转到tetgen.exe目录下很麻烦

二、 使用Tetgen将mesh生成四面体网格

我的三角网格模型是.obj格式,tetgen不支持。因此,首先将.obj的模型转换成.ply或者.stl格式(可以用Blender)。

接着就可以在命令行中输入命令:

tetgen -p xxx.ply

就可以生成tetgen格式的文件了,分别是.node,.ele,.face,.edge和.smesh

 如果对生成的四面体网格质量有要求(对应官方文档的4.2.3 Quality mesh generation),则需要使用-q命令,例如:

tetgen -pq thepart.smesh

tetgen -pq1.4/0 thepart.smesh

关于文件和命令的介绍,可参考官方文档或博客:

Using TetGen (wias-berlin.de)

Tetgen软件学习和使用_VincentFu2017的博客-CSDN博客

如果想可视化,可以使用Tetview,下载地址:TetView: A Tetrahedral Mesh and Piecewise Linear Complex Viewer

注意:tetview-win.exe的路径不能有中文

参考:【疑难杂症系列】API编译报C4996'strncpy'...To disable deprecation, use _CRT_ - 哔哩哔哩

 Tetgen软件学习和使用_VincentFu2017的博客-CSDNzh

### 关于 TetGen 的使用教程和下载 #### 1. **TetGen 软件简介** TetGen 是一款用于三维 Delaunay 四面体化以及高质量四面体网格生成的开源软件。它支持多种功能,包括体积网格划分、表面重构、边界约束等[^1]。 --- #### 2. **TetGen 安装指南** ##### (1) **Windows 系统下的安装** - 需要先从官方网站或其他可信资源下载 TetGen 源代码。 - 使用 CMake 工具配置项目并生成 Visual Studio 解决方案文件(`.sln`),随后通过 VS 编译生成 `tetgen.exe` 可执行文件[^3]。 - 将编译好的可执行文件放置在目标工作目录中以便调用。 ##### (2) **Ubuntu 系统下的安装** - 在 Linux 平台上可以直接解压源码包并通过命令行完成编译过程。 ```bash tar -xvzf tetgen.tar.gz cd tetgen/ make ``` - 成功编译后会在当前目录下生成 `tetgen` 执行文件。 --- #### 3. **TetGen 文件格式详解** 为了更好地理解和应用 TetGen,熟悉其常用文件格式至关重要: | 文件扩展名 | 描述 | |------------|----------------------------------------------------------------------| | `.node` | 存储节点坐标及其属性 | | `.poly` | 表示多边形或曲面模型的信息 | | `.smesh` | 初始三角形网格数据 | | `.ele` | 输出的四面体单元列表 | | `.face` | 边界面上的三角形单元 | | `.edge` | 边缘信息 | | `.vol` | 给定区域内的体积限制条件 | | `.mtr` | 自适应质量度量矩阵 | | `.var` | 属性变量定义 | | `.neigh` | 四面体相邻关系 | 具体每种文件的作用可以参见官方文档或者相关参考资料。 --- #### 4. **TetGen 命令行参数** TetGen 支持丰富的命令选项来控制网格生成功能。例如: ```bash tetgen -pq1.4 a.node ``` 上述命令表示基于 `a.node` 输入文件创建一个高质量 (`q`) 和一致边界 (`p`)四面体网格,并设置最小角度为 1.4 度。 更多高级选项可以通过阅读帮助手册获取: ```bash tetgen -h ``` --- #### 5. **可视化工具 TetView** 对于生成的结果文件,推荐使用 TetView 来查看和验证网格的质量。此工具通常随 TetGen 提供,在 Windows 下需确保将其路径加入环境变量或将对应 exe 文件拷贝至同一目录。 --- #### 6. **编程接口与实例** 如果希望集成 TetGen 功能到自己的应用程序中,则可通过链接静态库的方式实现。下面是一个简单的 Python 调用案例演示如何利用子进程运行 TetGen: ```python import subprocess def run_tetgen(input_file, output_prefix): command = f"tetgen -pq {input_file} -o{output_prefix}" result = subprocess.run(command.split(), capture_output=True, text=True) if result.returncode != 0: raise RuntimeError(f"TetGen failed with error:\n{result.stderr}") return result.stdout print(run_tetgen("example.poly", "out")) ``` 此外还有其他语言绑定可用,比如 C++ 接口直接嵌入开发流程[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值