2013-12-14 103 views
0

我通過PYTHON腳本讀取了格式爲vtk的unstructuredGrid。我想抵消這個UGrid的每一點。我的意思是我有一個x,y和z偏移量,我想將其應用於UGrid,以便我可以獲得兩個不同網格的相同原點。由於座標是元組,所以我不能直接分配這個偏移量。任何建議welcolmed。VTK UnstructuredGrid偏移量座標

THX,

阿爾諾

+0

剛剛讀過一個vtk文件,想要在再次寫入文件之前抵消這些點,還是讀取要直接插入到vtk管道中的UG數據?對於後者,您可以使用vtkTransformFilter(例如,修改以下http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/TransformFilter) – Jakob

+0

是的。事實上,我想在寫入文件之前先抵消這些要點!任何想法 ? – ArnaudT

+0

那麼,如果你有一個ascii vtk文件,你可以簡單地逐行讀取文件,並在再次寫入文件之前抵消這些點。這應該沒問題。 – Jakob

回答

0

我用的往往是下面的函數讀取一個ASCII VTK文件,處理點,並再次寫入到一個新文件。

def offsetVTK(infilename, outfilename, offset): 
    outfil = open(outfilename,'w') 
    with open(infilename,'r') as infil: 
     lin = 1 
     while lin: 
      lin = infil.readline() 
      if lin.lower().startswith('points'): 
       numpt = int(lin.split()[1]) 
       outfil.write(lin) 
       for i in xrange(numpt): 
        outfil.write('{0[0]} {0[1]} {0[2]}\n'.format(
         np.array(infil.readline().split(),dtype=float) + offset)) 
      else: 
       outfil.write(lin) 
    outfil.close() 

offsetVTK('ray.vtk','ray_off.vtk', np.array([100,0,0])) 

最初,我用它來旋轉和剪切網格,但是應用偏移更容易。