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 inputFileName_removeSpaces=inputFileName.replace(" ", "")
41 field.writeVTK(inputFileName_removeSpaces)
43 numpy_array = Extract_VTK_data_over_line_to_numpyArray(inputFileName_removeSpaces+"_0.vtu", point1, point2, resolution)
45 os.remove(inputFileName_removeSpaces+"_0.vtu")
48 def Extract_field_data_over_line_to_txt_file(field, point1, point2, resolution, outputFileName):
50 numpy_array = Extract_field_data_over_line_to_numpyArray(field, point1, point2, resolution)
52 np.savetxt(outputFileName, numpy_array, delimiter=" ")
54 def Slice_VTK_data_to_numpyArray(inputFileName,
58 reader = vtk.vtkXMLUnstructuredGridReader()
59 reader.SetFileName(inputFileName)
62 plane = vtk.vtkPlane()
63 plane.SetOrigin(point)
64 plane.SetNormal(normal)
66 cutter = vtk.vtkCutter()
67 cutter.SetCutFunction(plane)
68 cutter.SetInputConnection(reader.GetOutputPort())
71 vtkarray = cutter.GetOutput().GetPointData().GetArray(0)
72 numpy_array = npvtk.vtk_to_numpy(vtkarray)
77 def Slice_VTK_data_to_txt_file(inputFileName, outputFileName,
81 numpy_array = Slice_VTK_data_to_numpyArray(inputFileName, point, normal, resolution )
83 np.savetxt(outputFileName, numpy_array, delimiter=" ")
86 def Slice_field_data_to_numpyArray(field,
90 inputFileName = field.getName()
91 field.writeVTK(inputFileName)
93 numpy_array = Slice_VTK_data_to_numpyArray(inputFileName+"_0.vtu", point, normal, resolution)
95 os.remove(inputFileName+"_0.vtu")
98 def Slice_field_data_to_txt_file(field, outputFileName,
101 numpy_array = Slice_field_data_to_numpyArray(field, point, normal, resolution)
103 np.savetxt(outputFileName, numpy_array, delimiter=" ")
105 def Slice_VTK_data_to_VTK(inputFileName,
110 reader = vtk.vtkXMLUnstructuredGridReader()
111 reader.SetFileName(inputFileName)
114 plane = vtk.vtkPlane()
115 plane.SetOrigin(point)
116 plane.SetNormal(normal)
118 cutter = vtk.vtkCutter()
119 cutter.SetCutFunction(plane)
120 cutter.SetInputConnection(reader.GetOutputPort())
123 #Convert tht polydata structure générated by cutter into unstructured grid by triangulation
124 triFilter = vtk.vtkDataSetTriangleFilter()
125 triFilter.SetInputConnection(cutter.GetOutputPort())
128 writer = vtk.vtkXMLUnstructuredGridWriter()
129 writer.SetInputData(triFilter.GetOutput())
130 writer.SetFileName(outputFileName)
133 def Clip_VTK_data_to_VTK(inputFileName,
138 reader = vtk.vtkXMLUnstructuredGridReader()
139 reader.SetFileName(inputFileName)
142 plane = vtk.vtkPlane()
143 plane.SetOrigin(point)
144 plane.SetNormal(normal)
146 clipper = vtk.vtkClipDataSet()
147 clipper.SetClipFunction(plane)
148 clipper.SetInputConnection(reader.GetOutputPort())
151 writer = vtk.vtkXMLUnstructuredGridWriter()
152 writer.SetInputData(clipper.GetOutput())
153 writer.SetFileName(outputFileName)
156 def Save_VTK_data_to_picture_file(inputFileName, field_name,
157 node_or_cell, outputFileName
159 reader = vtk.vtkXMLUnstructuredGridReader()
160 reader.SetFileName(inputFileName)
163 if node_or_cell== 'CELLS':
164 reader.CellArrayStatus = [field_name]
165 reader.GetOutput().GetCellData().SetActiveScalars(field_name)
166 elif node_or_cell== 'NODES':
167 reader.PointArrayStatus = [field_name]
168 reader.GetOutput().GetPointData().SetActiveScalars(field_name)
170 raise ValueError("unknown type : should be CELLS or NODES")
172 #-------------------------------------------------------------------------------
173 mapper = vtk.vtkDataSetMapper()
174 mapper.SetInputConnection(reader.GetOutputPort())
175 actor = vtk.vtkActor()
176 actor.SetMapper(mapper)
178 scalarBar=vtk.vtkScalarBarActor()
179 scalarBar.SetLookupTable(mapper.GetLookupTable())
180 scalarBar.SetTitle(field_name)
182 mapper.SetScalarRange(reader.GetOutput().GetScalarRange())
184 ren = vtk.vtkRenderer()
185 renWin = vtk.vtkRenderWindow()
186 renWin.AddRenderer(ren)
188 ren.AddViewProp(actor)
189 ren.AddActor2D(scalarBar);
193 image = vtk.vtkWindowToImageFilter()
194 image.SetInput(renWin)
195 image.ReadFrontBufferOff()
197 writer = vtk.vtkPNGWriter()
198 writer.SetFileName(outputFileName+".png")
199 writer.SetInputConnection(image.GetOutputPort())