2026.1.6随笔:实习第十二天(学VTK文件结构,写转换函数)
今天上午主要是把昨天说的导入文件函数给重新写了一下(重构),然后解决了点击按钮属性面板消失的bug
下午mentor先让我看一下VTK相关的知识,然后给了我两个将其他文件内容转换为VTK文件的函数,然后估计是要我把之前导入的mesh.txt文件转换为VTK文件
果然,mentor下午在我看得差不多了之后,开了个会给我讲了一下VTK文件,然后就让我先写一个txt转vtk文件的接口。
然后本来是应该直接注册到DataManaer里面的成员变量的,现在打算直接从函数返回,现在在搞这个
然后搞完了就一直在看这个渲染不出来的问题:
vtk头文件没包含vtk文件格式错误
1
2
3 auto *pGridWidget = new CFDApplicationUnStructGridWidget();
pGridWidget->setUnstructuredGrid(pGrid);
emit ACFEASigsCenter::getInstance() -> sig_addMainWindowRightTabWidget(u8"网格数据", pGridWidget);
- 中间那一行代码相当于是注册的,缺了渲染不出来

然后这个mesh.txt文件分两个部分,相当于有两个矩阵,第一个矩阵描述空间里面的点,第二个矩阵描述的是点之间的连接关系

vtk文件里面主要就是以下部分,第一个部分就是描述点的三维坐标,第二部分就是表示这些点的连接情况,第三部分表示这几个点连成的形状是啥
1 | # vtk DataFile Version 4.0 |
下面是AI生成的对VTK文件的描述:
根据你提供的
mesh.vtk文件内容和 VTK 官方标准,一个传统的 VTK (Legacy) 文件通常由 5 个核心部分组成。前三个部分是必须的,后两个部分根据数据内容可选。以下是针对你上传的文件的详细拆解:
1. 文件版本与标识 (File Version and Identifier)
- 内容:
# vtk DataFile Version 4.0- 作用:这是文件的第一行,指明该文件符合 VTK 4.0 版本的格式规范。
2. 标题/描述行 (Header/Title)
- 内容:
Unstructured Grid- 作用:这是一个长度限制在 256 字符以内的字符串,用于描述该文件的内容(如模型名称或生成时间)。在你的文件中,它简单地写成了“非结构化网格”。
3. 文件格式 (File Format)
- 内容:
ASCII- 作用:指定后续数据是以 ASCII(纯文本) 还是 BINARY(二进制) 格式存储。ASCII 格式的好处是可以用记事本直接读取和修改。
4. 数据集结构 (Dataset Structure)
这一部分定义了网格的几何形状和拓扑连接,是 VTK 文件最核心的部分。你的文件包含以下三个子块:
- ==类型声明:
DATASET UNSTRUCTURED_GRID。表明这是一个非结构化网格,可以包含任意形状的单元。==- ==几何坐标 (POINTS):
POINTS 247 float后接 247 组三维坐标。定义了空间中所有点的位置。==- ==拓扑连接 (CELLS & CELL_TYPES):==
- ==
CELLS 216 1080:定义了 216 个单元(块),每行记录一个单元由哪些点组成。==- ==
CELL_TYPES 216:定义了这 216 个单元的形状(例如 9 代表四边形)。==5. 数据属性 (Dataset Attributes) —— 注:你的文件中暂未显示此项
- 作用:通常以
POINT_DATA或CELL_DATA开头,用于存储具体的物理量(如温度、压力、颜色等)。- 示例:如果在你的
mesh.vtk后面加上每个点的温度值,就会出现在这个部分。