7 from vtk.util import numpy_support as npvtk
8 # do I need to kill the pipeline?
10 def Extract_VTK_data_over_line_to_numpyArray(inputFileName, point1, point2, resolution):
12 reader = vtk.vtkXMLUnstructuredGridReader()
13 reader.SetFileName(inputFileName)
16 probeLine = vtk.vtkLineSource()
17 probeLine.SetPoint1(point1)
18 probeLine.SetPoint2(point2)
19 probeLine.SetResolution(resolution)
21 probe = vtk.vtkProbeFilter()
22 probe.SetInputConnection(probeLine.GetOutputPort())
23 probe.SetSourceData(reader.GetOutput())
26 vtkarray = probe.GetOutput().GetPointData().GetArray(0) # or Slice1.GetCellData() # or Clip1.GetCellData()
27 numpy_array = npvtk.vtk_to_numpy(vtkarray)
31 def Extract_VTK_data_over_line_to_txt_file(inputFileName, outputFileName, point1, point2, resolution):
33 numpy_array = Extract_VTK_data_over_line_to_numpyArray(inputFileName, point1, point2, resolution)
35 np.savetxt(outputFileName, numpy_array, delimiter=" ")
37 def Extract_field_data_over_line_to_numpyArray(field, point1, point2, resolution):
39 inputFileName = field.getName()#os.getcwd()+field.get_name()
40 field.writeVTK(inputFileName)
42 numpy_array = Extract_VTK_data_over_line_to_numpyArray(inputFileName+"_0.vtu", point1, point2, resolution)
44 os.remove(inputFileName+"_0.vtu")
47 def Extract_field_data_over_line_to_txt_file(field, point1, point2, resolution, outputFileName):
49 numpy_array = Extract_field_data_over_line_to_numpyArray(field, point1, point2, resolution)
51 np.savetxt(outputFileName, numpy_array, delimiter=" ")
53 def Slice_VTK_data_to_numpyArray(inputFileName,
57 reader = vtk.vtkXMLUnstructuredGridReader()
58 reader.SetFileName(inputFileName)
61 plane = vtk.vtkPlane()
62 plane.SetOrigin(point)
63 plane.SetNormal(normal)
65 cutter = vtk.vtkFiltersCorePython.vtkCutter()
66 cutter.SetCutFunction(plane)
67 cutter.SetInputConnection(reader.GetOutputPort())
70 vtkarray = cutter.GetOutput().GetPointData().GetArray(0)
71 numpy_array = npvtk.vtk_to_numpy(vtkarray)
76 def Slice_VTK_data_to_txt_file(inputFileName, outputFileName,
80 numpy_array = Slice_VTK_data_to_numpyArray(inputFileName, point, normal, resolution )
82 np.savetxt(outputFileName, numpy_array, delimiter=" ")
85 def Slice_field_data_to_numpyArray(field,
89 inputFileName = field.getName()
90 field.writeVTK(inputFileName)
92 numpy_array = Slice_VTK_data_to_numpyArray(inputFileName+"_0.vtu", point, normal, resolution)
94 os.remove(inputFileName+"_0.vtu")
97 def Slice_field_data_to_txt_file(field, outputFileName,
100 numpy_array = Slice_field_data_to_numpyArray(field, point, normal, resolution)
102 np.savetxt(outputFileName, numpy_array, delimiter=" ")
104 def Slice_VTK_data_to_VTK(inputFileName,
109 reader = vtk.vtkXMLUnstructuredGridReader()
110 reader.SetFileName(inputFileName)
113 plane = vtk.vtkPlane()
114 plane.SetOrigin(point)
115 plane.SetNormal(normal)
117 cutter = vtk.vtkFiltersCorePython.vtkCutter()
118 cutter.SetCutFunction(plane)
119 cutter.SetInputConnection(reader.GetOutputPort())
122 #Convert tht polydata structure générated by cutter into unstructured grid by triangulation
123 triFilter = vtk.vtkDataSetTriangleFilter()
124 triFilter.SetInputConnection(cutter.GetOutputPort())
127 writer = vtk.vtkXMLUnstructuredGridWriter()
128 writer.SetInputData(triFilter.GetOutput())
129 writer.SetFileName(outputFileName)
132 def Clip_VTK_data_to_VTK(inputFileName,
137 reader = vtk.vtkXMLUnstructuredGridReader()
138 reader.SetFileName(inputFileName)
141 plane = vtk.vtkPlane()
142 plane.SetOrigin(point)
143 plane.SetNormal(normal)
145 clipper = vtk.vtkClipDataSet()
146 clipper.SetClipFunction(plane)
147 clipper.SetInputConnection(reader.GetOutputPort())
150 writer = vtk.vtkXMLUnstructuredGridWriter()
151 writer.SetInputData(clipper.GetOutput())
152 writer.SetFileName(outputFileName)
155 def Save_VTK_data_to_picture_file(inputFileName, field_name,
156 node_or_cell, outputFileName
158 reader = vtk.vtkXMLUnstructuredGridReader()
159 reader.SetFileName(inputFileName)
162 if node_or_cell== 'CELLS':
163 reader.CellArrayStatus = [field_name]
164 reader.GetOutput().GetCellData().SetActiveScalars(field_name)
165 elif node_or_cell== 'NODES':
166 reader.PointArrayStatus = [field_name]
167 reader.GetOutput().GetPointData().SetActiveScalars(field_name)
169 raise ValueError("unknown type : should be CELLS or NODES")
171 #-------------------------------------------------------------------------------
172 mapper = vtk.vtkDataSetMapper()
173 mapper.SetInputConnection(reader.GetOutputPort())
174 actor = vtk.vtkActor()
175 actor.SetMapper(mapper)
177 scalarBar=vtk.vtkScalarBarActor()
178 scalarBar.SetLookupTable(mapper.GetLookupTable())
179 scalarBar.SetTitle(field_name)
181 mapper.SetScalarRange(reader.GetOutput().GetScalarRange())
183 ren = vtk.vtkRenderer()
184 renWin = vtk.vtkRenderWindow()
185 renWin.AddRenderer(ren)
187 ren.AddViewProp(actor)
188 ren.AddActor2D(scalarBar);
192 image = vtk.vtkWindowToImageFilter()
193 image.SetInput(renWin)
194 image.ReadFrontBufferOff()
196 writer = vtk.vtkPNGWriter()
197 writer.SetFileName(outputFileName+".png")
198 writer.SetInputConnection(image.GetOutputPort())