Чтение координат положения узлов / ячеек / точек из файлов VTK - PullRequest
0 голосов
/ 05 ноября 2019

Я хочу прочитать пространственные координаты точек из файла 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 всех точек были указаны в виде массива. Я посмотрел в документации и не смог найти это.

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Две точки:

  • скобки отсутствуют в последней строке. Должно быть

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

И аналогичный пост на форуме ВТК: https://discourse.vtk.org/t/how-to-print-a-list-of-vertices-location-and-ids-using-python/965

0 голосов
/ 05 ноября 2019

Итак, я нашел сторонний инструмент под названием meshio, который можно использовать для этой цели

, вы можете установить его с помощью

pip install meshio --user

, который мы можем использоватьэто выглядит следующим образом

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

ps: я все еще ищу способ сделать это с помощью библиотеки vVTK по умолчанию.

...