吾生有涯 学海无涯
析模有界 知识无界

开源网格转换工具:meshio

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之道

赞(1) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《开源网格转换工具:meshio》
文章链接:https://www.topcfd.cn/41793/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册