1#!/usr/bin/env python
2
3import os
4import vtk
5from vtk.util.misc import vtkGetDataRoot
6from vtk.util.misc import vtkGetTempDir
7
8VTK_DATA_ROOT = vtkGetDataRoot()
9VTK_TEMP_DIR = vtkGetTempDir()
10
11file0 = VTK_TEMP_DIR + '/ugFile0.vtu'
12file1 = VTK_TEMP_DIR + '/ugFile1.vtu'
13file2 = VTK_TEMP_DIR + '/ugFile2.vtu'
14
15# read in some unstructured grid data
16ugReader = vtk.vtkUnstructuredGridReader()
17ugReader.SetFileName(VTK_DATA_ROOT + "/Data/blow.vtk")
18ugReader.SetScalarsName("thickness9")
19ugReader.SetVectorsName("displacement9")
20
21extract = vtk.vtkExtractUnstructuredGridPiece()
22extract.SetInputConnection(ugReader.GetOutputPort())
23
24# write various versions
25ugWriter = vtk.vtkXMLUnstructuredGridWriter()
26ugWriter.SetFileName(file0)
27ugWriter.SetDataModeToAscii()
28ugWriter.SetInputConnection(ugReader.GetOutputPort())
29ugWriter.Write()
30
31ugWriter.SetFileName(file1)
32ugWriter.SetInputConnection(extract.GetOutputPort())
33ugWriter.SetDataModeToAppended()
34ugWriter.SetNumberOfPieces(2)
35ugWriter.Write()
36
37ugWriter.SetFileName(file2)
38ugWriter.SetDataModeToBinary()
39ugWriter.SetGhostLevel(2)
40ugWriter.Write()
41
42
43# read the ASCII version
44reader = vtk.vtkXMLUnstructuredGridReader()
45reader.SetFileName(file0)
46reader.Update()
47
48ug0 = vtk.vtkUnstructuredGrid()
49ug0.DeepCopy(reader.GetOutput())
50sF = vtk.vtkDataSetSurfaceFilter()
51sF.SetInputData(ug0)
52
53mapper0 = vtk.vtkPolyDataMapper()
54mapper0.SetInputConnection(sF.GetOutputPort())
55
56actor0 = vtk.vtkActor()
57actor0.SetMapper(mapper0)
58actor0.SetPosition(0, 40, 20)
59
60
61# read appended piece 0
62reader.SetFileName(file1)
63
64sF1 = vtk.vtkDataSetSurfaceFilter()
65sF1.SetInputConnection(reader.GetOutputPort())
66
67mapper1 = vtk.vtkPolyDataMapper()
68mapper1.SetInputConnection(sF1.GetOutputPort())
69mapper1.SetPiece(1)
70mapper1.SetNumberOfPieces(2)
71
72actor1 = vtk.vtkActor()
73actor1.SetMapper(mapper1)
74
75
76# read binary piece 0 (with ghost level)
77reader2 = vtk.vtkXMLUnstructuredGridReader()
78reader2.SetFileName(file2)
79
80sF2 = vtk.vtkDataSetSurfaceFilter()
81sF2.SetInputConnection(reader2.GetOutputPort())
82
83mapper2 = vtk.vtkPolyDataMapper()
84mapper2.SetInputConnection(sF2.GetOutputPort())
85mapper2.SetPiece(1)
86mapper2.SetNumberOfPieces(2)
87mapper2.SetGhostLevel(2)
88
89actor2 = vtk.vtkActor()
90actor2.SetMapper(mapper2)
91actor2.SetPosition(0, 0, 30)
92
93# Create the RenderWindow, Renderer and both Actors
94#
95ren = vtk.vtkRenderer()
96renWin = vtk.vtkRenderWindow()
97renWin.AddRenderer(ren)
98iren = vtk.vtkRenderWindowInteractor()
99iren.SetRenderWindow(renWin)
100
101# Add the actors to the renderer, set the background and size
102#
103ren.AddActor(actor0)
104ren.AddActor(actor1)
105ren.AddActor(actor2)
106
107ren.ResetCamera()
108ren.GetActiveCamera().SetPosition(180, 55, 65)
109ren.GetActiveCamera().SetFocalPoint(3.5, 32, 15)
110renWin.SetSize(300, 300)
111renWin.Render()
112
113#os.remove(file0)
114#os.remove(file1)
115#os.remove(file2)
116