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 + '/idFile0.vtp'
12file1 = VTK_TEMP_DIR + '/idFile1.vtp'
13file2 = VTK_TEMP_DIR + '/idFile2.vtp'
14
15# read in some poly data
16pdReader = vtk.vtkPolyDataReader()
17pdReader.SetFileName(VTK_DATA_ROOT + "/Data/fran_cut.vtk")
18pdReader.Update()
19
20extract = vtk.vtkExtractPolyDataPiece()
21extract.SetInputConnection(pdReader.GetOutputPort())
22
23# write various versions
24pdWriter = vtk.vtkXMLPolyDataWriter()
25pdWriter.SetFileName(file0)
26pdWriter.SetDataModeToAscii()
27pdWriter.SetInputConnection(pdReader.GetOutputPort())
28pdWriter.Write()
29
30pdWriter.SetFileName(file1)
31pdWriter.SetInputConnection(extract.GetOutputPort())
32pdWriter.SetDataModeToAppended()
33pdWriter.SetNumberOfPieces(2)
34pdWriter.Write()
35
36pdWriter.SetFileName(file2)
37pdWriter.SetDataModeToBinary()
38pdWriter.SetGhostLevel(3)
39pdWriter.Write()
40
41
42# read the ASCII version
43reader = vtk.vtkXMLPolyDataReader()
44reader.SetFileName(file0)
45reader.Update()
46
47pd0 = vtk.vtkPolyData()
48pd0.DeepCopy(reader.GetOutput())
49mapper0 = vtk.vtkPolyDataMapper()
50mapper0.SetInputData(pd0)
51
52actor0 = vtk.vtkActor()
53actor0.SetMapper(mapper0)
54actor0.SetPosition(0, .15, 0)
55
56
57# read appended piece 0
58reader.SetFileName(file1)
59
60mapper1 = vtk.vtkPolyDataMapper()
61mapper1.SetInputConnection(reader.GetOutputPort())
62mapper1.SetPiece(0)
63mapper1.SetNumberOfPieces(2)
64
65actor1 = vtk.vtkActor()
66actor1.SetMapper(mapper1)
67
68
69# read binary piece 0 (with ghost level)
70reader2 = vtk.vtkXMLPolyDataReader()
71reader2.SetFileName(file2)
72
73mapper2 = vtk.vtkPolyDataMapper()
74mapper2.SetInputConnection(reader2.GetOutputPort())
75mapper2.SetPiece(0)
76mapper2.SetNumberOfPieces(2)
77
78actor2 = vtk.vtkActor()
79actor2.SetMapper(mapper2)
80actor2.SetPosition(0, 0, 0.1)
81
82# Create the RenderWindow, Renderer and both Actors
83#
84ren = vtk.vtkRenderer()
85renWin = vtk.vtkRenderWindow()
86renWin.AddRenderer(ren)
87iren = vtk.vtkRenderWindowInteractor()
88iren.SetRenderWindow(renWin)
89
90# Add the actors to the renderer, set the background and size
91#
92ren.AddActor(actor0)
93ren.AddActor(actor1)
94ren.AddActor(actor2)
95
96ren.GetActiveCamera().SetPosition(0.514096, -0.14323, -0.441177)
97ren.GetActiveCamera().SetFocalPoint(0.0528, -0.0780001, -0.0379661)
98renWin.SetSize(300, 300)
99renWin.Render()
100
101os.remove(file0)
102os.remove(file1)
103os.remove(file2)
104