如何计算vtk文件的音量

时间:2016-06-23 19:39:36

标签: python 3d vtk

我刚接触python,我似乎无法找到问题的解决方案,因为它看起来非常简单。我有一个paraview的几何,我将它保存为vtk文件,我试图用python来计算它的音量。

这是我使用的代码:

import vtk
reader = vtk.vtkPolyDataReader()
reader.SetFileName("C:\Users\Pauuu\Google Drive\2016-01\SURF\Sim Vascular\Modelos\apoE183 Day 14 3D\AAA.vtk")
reader.Update()
polydata = reader.GetOutput()

Mass = vtk.vtkMassProperties()
Mass.SetInputConnection(polydata.GetOutput())
Mass.Update() 

print "Volume = ", Mass.GetVolume() 
print "Surface = ", Mass.GetSurfaceArea()

我认为可能存在编码数据的方式存在问题,我得到了AttributeError: GetOutput

你知道可能发生的事情或我做错了什么吗? 提前谢谢。

3 个答案:

答案 0 :(得分:2)

根据您的vtk软件包版本,如果您的版本为< = 5,则可能需要测试以下语法:

  Mass.SetInput(polydata.GetOutput());

否则,实际语法为:

  Mass.SetInputData(polydata.GetOutputPort());

PS:你可以通过运行:

来检查python包装的vtk版本
import vtk
print vtk.vtkVersion.GetVTKSourceVersion()

答案 1 :(得分:1)

您已在name中分配了reader.GetOutput()。来自polydata,我相信你需要这样做,polydata

答案 2 :(得分:0)

我猜你有VTK 6,你可以提供过滤器的输出端口或vtkDataObject作为过滤器的输入:

Mass.SetInputConnection(reader.GetOutputPort())
Mass.SetInputData(polydata) #that is Mass.SetInputData(reader.GetOutput()) 

要了解更新管道时这些方法不相同的原因,并与以前的版本进行比较,请参阅http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Removal_of_GetProducerPort http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Replacement_of_SetInput