meshio 是一个开源的网格格式输入/输出转换工具,其可以将一种网格格式转换为另一种网格格式。
仓库地址:https://github.com/nschloe/meshio
”
meshio 可读取和写入以下格式,并能实现格式间的无缝转换:
-
Abaqus ( .inp) -
ANSYS msh ( .msh) -
AVS-UCD ( .avs) -
CGNS ( .cgns) -
DOLFIN XML ( .xml) -
Exodus ( .e, .exo) -
FLAC3D ( .f3grid) -
H5M ( .h5m) -
Kratos/MDPA ( .mdpa) -
Medit ( .mesh, .meshb) -
MED/Salome ( .med) -
Nastran ( bulk data, .bdf, .fem, .nas) -
Netgen ( .vol, .vol.gz) -
Neuroglancer precomputed format -
Gmsh ( format versions 2.2, 4.0, and 4.1, .msh) -
OBJ ( .obj), OFF (.off) -
PERMAS ( .post, .post.gz, .dato, .dato.gz) -
PLY ( .ply), STL (.stl) -
Tecplot .dat -
TetGen .node/.ele -
SVG ( 2D output only) (.svg) -
SU2 ( .su2) -
UGRID ( .ugrid) -
VTK ( .vtk) -
VTU ( .vtu) -
WKT ( TIN) (.wkt) -
XDMF ( .xdmf, .xmf)
1 meshio安装
meshio基于python,可以使用pip或conda进行安装。输入下面的命令可以进行安装:
pip install meshio[all]
conda install -c conda-forge meshio
[all] 选项会引入所有可选依赖项。默认情况下,meshio 仅使用 numpy。随后可以使用命令行工具。
2 meshio应用
在meshio安装完毕后,可以在命令行中输入命令进行网格格式转换,如下面的命令:
meshio convert input.msh output.vtk # 在两种格式之间转换
meshio info input.xdmf # 显示有关网格的一些信息
meshio compress input.vtu # 压缩网格文件
meshio decompress input.vtu # 解压缩网格文件
meshio binary input.msh # 转换为二进制格式
meshio ascii input.msh # 转换为ASCII格式
也可以使用python进行调用。
import meshio
mesh = meshio.read(
filename, # 字符串、os.PathLike 或缓冲区/打开的文件
# file_format="stl", # 若文件名为路径,则为可选项;从扩展名推断
# 所有可能的格式请参见 meshio-convert -h
)
# mesh.points、mesh.cells、mesh.cells_dict、...
# 也可以使用 mesh.vtk.read()
mesh.write(
"foo.vtk", # str、os.PathLike 或缓冲区/打开的文件
# file_format="vtk", # 如果第一个参数为路径,则为可选参数;从扩展名推断
)
如下面的简单程序可以将当前目录下的所有stl文件转换成vtu文件。
import meshio
import os
# 获取当前目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 遍历目录中的所有文件
for filename in os.listdir(current_dir):
# 检查文件扩展名是否为.stl
if filename.endswith('.stl'):
# 构造完整的文件路径
stl_path = os.path.join(current_dir, filename)
# 构造输出文件名(将.stl替换为.vtu)
vtu_filename = os.path.splitext(filename)[0] + '.vtu'
vtu_path = os.path.join(current_dir, vtu_filename)
try:
# 读取STL文件
mesh = meshio.read(stl_path, file_format='stl')
# 写入VTU文件
mesh.write(vtu_path, file_format='vtu')
print(f"成功转换: {filename} -> {vtu_filename}")
except Exception as e:
print(f"转换 {filename} 时出错: {str(e)}")
print("所有STL文件转换完成!")
(完)

本篇文章来源于微信公众号: CFD之道








评论前必须登录!
注册