我刚接触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
。
你知道可能发生的事情或我做错了什么吗? 提前谢谢。
答案 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