2016-06-23 9 views
1

私はちょうどPythonには新しく、問題は解決していないようです。 paraviewにジオメトリがあり、vtkファイルとして保存しています。ボリュームを計算するためにPythonを使用しようとしています。vtkファイルの容量を計算する方法

これは私が使用しているコードです:私は、データの方法イムlodingに問題があるかもしれないと思う、と私はAttributeError: GetOutputを得る

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() 

を。

あなたは何が起こっているのか、私が間違っていることを知っていますか? ありがとうございます。

+1

あなたが 'print vtk .__ version__'をお持ちの場合、どのバージョンのvtkパッケージがありますか? – SAAD

答えて

1

reader.GetOutput()polydataに割り当てました。

Mass.SetInput(polydata.GetOutput()); 

そうでない場合は、実際の構文は次のとおりです。polydataから、私はあなたが5 = <バージョン場合は、次の構文をテストしたいことがあり

+1

こんにちはtdka、あなたの答えをありがとう。私はそれを試して、同じエラーが 'AttributeError:GetOutputPort'の – Paula

+1

の行を' Mass.SetInputConnection(polydata.GetOutput()) 'を' Mass.SetInput(polydata) 'に置き換えるとプログラムは実行されますが、 'vtkMassProperties'は三角形しか処理しないので、あなたが望むことができるかどうかはわかりません – MrPedru22

2

polydata.GetOutputPort()vtkパッケージのバージョンに応じて、あなたがする必要があると考えています:

Mass.SetInputData(polydata.GetOutputPort()); 

PS:あなたが実行してのpython-ラップvtkバージョンを確認することができます

import vtk 
print vtk.vtkVersion.GetVTKSourceVersion() 
0

私はあなたがVTK 6持っていると思います、あなたは、フィルタのいずれかのフィルタやvtkDataObjectの出力ポートへの入力として提供することができます。aを更新するときに、これらの方法は等価ではない理由を理解するための

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

パイプライン、そして以前のバージョンとの比較のために、http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Removal_of_GetProducerPorthttp://www.vtk.org/Wiki/VTK/VTK_6_Migration/Replacement_of_SetInput

関連する問題