gpt4 book ai didi

python - 在 Python 中将标量添加到 vtk 文件(vtk 3.0 旧版)

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:07 25 4
gpt4 key购买 nike

我正在尝试将计算标量添加到现有 VTK 文件中。

我的代码的简化版本如下

import vtk
import os
import numpy as np

reader = vtk.vtkDataSetReader()
reader.SetFileName(vtk_file_name)
reader.ReadAllScalarsOn()
reader.Update()
data = reader.GetOutput() #This contains all data from the VTK
cell_data = data.GetCellData() #This contains just the cells data
scalar_data1 = cell_data.GetArray('scalar1')
scalar_data2 = cell_data.GetArray('scalar2')

scalar1 = np.array([scalar_data1.GetValue(i) for i in range(data.GetNumberOfCells())])
scalar2 = np.array([scalar_data2.GetValue(i) for i in range(data.GetNumberOfCells())])

scalar3 = scalar1 - scalar2

writer = vtk.vtkDataSetWriter()

此时我假设我需要使用 data.SetCell 向数据添加一个 vtkArray

问题是 SetCell 要求 vtkCellArray,而我还没有设法将我的数组 scalar3 转换为 vtkCellArray。

这是正确的方法吗?有什么建议吗?

最佳答案

您实际上需要使用 cell_data.AddArray() 来添加您的数组。 SetCell() 实际上会修改数据集的拓扑结构。

Rojj 关于使用 vtk.numpy_support 在 vtkArrays 和 numpy 数组之间来回转换的说法是正确的。您可以使用如下内容:

import vtk
from vtk.util import numpy_support
...
scalar3_array = numpy_support.numpy_to_vtk(scalar3)
scalar3_array.SetName('scalar3')
cell_data.AddArray(scalar3)

关于python - 在 Python 中将标量添加到 vtk 文件(vtk 3.0 旧版),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com