2014-10-22 4 views
2

로 파일 읽기 I가 OpenFOAM에 의해 생성되는 다음 VTK 파일 :VTK 파이썬

# vtk DataFile Version 2.0 
sampleSurface 
ASCII 
DATASET POLYDATA 
POINTS 4 float 
0.0 0.0 0.0 
1.0 0.0 0.0 
0.0 1.0 0.0 
1.0 1.0 0.0 

POLYGONS 2 8 
3 0 1 2 
3 2 1 3 

POINT_DATA 4 
FIELD attributes 1 
U 3 4 float 
1.0 2.0 3.0 
1.0 2.0 3.0 
1.0 2.0 3.0 
1.0 2.0 3.0 

그것은 3D 도메인의 평면 절단면이다. 두 개의 삼각형을 만드는 4 개의 점이 있습니다. 각 점에서 벡터 U가 정의됩니다. 나는 점의 수와 다음 코드로 포인트를 얻을 수 있습니다 : 불행하게도

import vtk 
reader = vtk.vtkPolyDataReader() 
reader.SetFileName('myVTKfile.vtk') 
reader.ReadAllScalarsOn() 
reader.ReadAllVectorsOn() 
reader.ReadAllTensorsOn() 
reader.Update() 
vtkdata = reader.GetOutput() 

print vtkdata.GetNumberOfPoints() 
print vtkdata.GetPoint(0) 

을, 나는 삼각형의 목록 (다각형) 및 데이터 목록 (벡터 U를 얻을 수있는 가능성을 발견하지 않았습니다). 누군가이 문제에 대해 나를 도울 수 있습니까?

마르셀 (예 : 스칼라와 벡터 등) 점별 데이터에 대한

답변

2

, 당신은을 통해 액세스 할 수 있습니다

pointData = vtkdata.GetPointData() 
vectorData = pointData.GetVectors() 

vectorData 그런 다음 작업 할 수 vtkDataArray 포함됩니다.

지오메트리 데이터의 경우 GetVerts, GetLines, GetPolys (삼각형, 쿼드 및 기타 polys) 및 가능한 경우 GetStrips (삼각형 스트립의 경우) 메서드를 사용합니다. 삼각형 스트립에 함께 glommed되지 않은 삼각형, 당신이 데이터에 액세스 할 수 있습니다 경우 : 파이썬 내에서 (포인트 인덱스 단지 목록 인) 셀 데이터에 액세스

polyCells = vtkdata.GetPolys() 
numPolys = polyCells.GetNumberOfCells() #Number of polygons (triangles in your case) 

의 약간은 나는 VTK로 무엇인가를 마지막으로 쓴 이후 분명히 바뀌 었습니다. (VTK 5.x의 뒷면). 적어도 다음과 같이 셀 배열을 가져 와서 스캔 할 수 있습니다. http://vtk.1045678.n5.nabble.com/vtkCellArray-in-python-td3348424.html