首页/文章/ 详情

开源网格转换工具:meshio

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家
平台推荐
内容稀缺
9月前浏览603

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之道
NastranAbaqusUGpythonUM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-11-09
最近编辑:9月前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2718粉丝 12620文章 946课程 27
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈