如何镜像.vtp文件中的VTK 3D网格并将处理结果导出为.vtp格式
无需自定义开发的快速解决方案
你不需要改用C++/Python API才能实现需求,Paraview自带的过滤器已经可以解决类型转换问题,单文件操作和批量处理分别对应下面两种方案:
单文件GUI操作方案
- 导入.vtp文件后添加
Reflection过滤器,完成X轴镜像的参数配置 - 选中
Reflection过滤器的输出,追加添加Extract Surface过滤器,无需修改任何默认参数,该过滤器会直接将输入的UnstructuredGrid转换为PolyData格式 - 选中
Extract Surface的输出节点,点击顶部菜单栏File→Save Data,选择.vtp格式即可正常导出,导出时可按需选择是否保留原始数据的点属性、单元属性
多文件批量处理Python方案
如果需要处理大量.vtp文件,可以直接用Paraview的Python API编写脚本批量执行,不需要编译C++代码,示例脚本如下:
from paraview.simple import * import os # 配置输入输出路径 input_folder = "/你的/vtp文件/所在目录" output_folder = "/镜像后/文件/保存目录" os.makedirs(output_folder, exist_ok=True) # 遍历处理所有vtp文件 for file_name in os.listdir(input_folder): if not file_name.lower().endswith(".vtp"): continue # 读取原始文件 input_path = os.path.join(input_folder, file_name) raw_data = XMLPolyDataReader(FileName=input_path) # 执行X轴镜像 mirror_filter = Reflection(Input=raw_data) mirror_filter.ReflectionType = "X Axis" # 转换为PolyData格式 poly_data = ExtractSurface(Input=mirror_filter) # 导出结果 output_path = os.path.join(output_folder, f"mirrored_{file_name}") SaveData(output_path, proxy=poly_data)
脚本可以直接在Paraview内置的Python Shell中运行,也可以通过Paraview配套的pvpython命令行工具后台执行。
内容的提问来源于stack exchange,提问作者joaocandre
相关产品推荐
相关产品推荐

