从VTK文件中读取节点/单元/点的位置坐标

问题描述 投票:0回答:2

我想从VTK文件(非结构化网格-XML格式)中读取点的空间坐标。我正在使用python(V 2.7),这是我正在使用的代码的小版本。

import vtk
import numpy
from vtk.util.numpy_support import vtk_to_numpy

reader = vtk.vtkXMLUnstructuredGridReader()
reader.SetFileName( "MyFile.vtu" )
reader.Update()
field_array = reader.GetOutput().GetPointData().GetArray( "MyField" )
# this part will give the values of the "Field" in all points as an array

Point_cordinates = reader.GetOutput().GetPoints.GetData()
# this is not working

我想要的是将所有点的X,Y,Z坐标列为数组。我查看了文档,找不到此文件。

python vtk paraview
2个回答
0
投票

因此,我找到了可用于此目的的名为meshio的第三方工具

您可以通过以下方式安装

pip install meshio --user

我们可以如下使用它

import meshio
point_cordinates = meshio.read("YourFileName").points
# this will return a Nx3 array of xyz cordinates

ps:我仍在寻找使用默认vVTK库执行此操作的方法。


0
投票

两点:

  • 括号在最后一行中缺失。应该是

Point_cordinates = reader.GetOutput().GetPoints().GetData()

  • 然后您应该使用vtk_to_numpy:

numpy_coordinates = numpy_support.vtk_to_numpy(Point_cordinates)

在此处查看代码:https://gitlab.kitware.com/vtk/vtk/blob/master/Wrapping/Python/vtkmodules/util/numpy_support.py

以及VTK论坛上的类似帖子:https://discourse.vtk.org/t/how-to-print-a-list-of-vertices-location-and-ids-using-python/965

© www.soinside.com 2019 - 2024. All rights reserved.