1package require vtk
2package require vtkinteraction
3
4set file0 sgFile0.vts
5set file1 sgFile1.vts
6set file2 sgFile2.vts
7
8# Create a reader and write out the field
9vtkMultiBlockPLOT3DReader combReader
10  combReader SetXYZFileName "$VTK_DATA_ROOT/Data/combxyz.bin"
11  combReader SetQFileName "$VTK_DATA_ROOT/Data/combq.bin"
12  combReader SetScalarFunctionNumber 100
13  combReader Update
14  set output [[combReader GetOutput] GetBlock 0]
15
16# extract to reduce extents of grid
17vtkExtractGrid extract
18  extract SetInputData $output
19  extract SetVOI 0 28 0 32 0 24
20  extract Update
21
22# write just a piece (extracted piece) as well as the whole thing
23vtkXMLStructuredGridWriter gridWriter
24  gridWriter SetFileName $file0
25  gridWriter SetInputConnection [extract GetOutputPort]
26  gridWriter SetDataModeToAscii
27  gridWriter Write
28
29  gridWriter SetInputData $output
30  gridWriter SetFileName $file1
31  gridWriter SetDataModeToAppended
32  gridWriter SetNumberOfPieces 2
33  gridWriter Write
34
35  gridWriter SetFileName $file2
36  gridWriter SetDataModeToBinary
37  gridWriter SetWriteExtent 8 56 4 16 1 24
38  gridWriter Write
39
40# read the extracted grid
41vtkXMLStructuredGridReader reader
42  reader SetFileName $file0
43  reader WholeSlicesOff
44  reader Update
45
46vtkStructuredGrid sg
47  sg DeepCopy [reader GetOutput]
48
49vtkContourFilter cF0
50  cF0 SetInputData sg
51  cF0 SetValue 0 0.38
52
53vtkPolyDataMapper mapper0
54  mapper0 SetInputConnection [cF0 GetOutputPort]
55  mapper0 ScalarVisibilityOff
56
57vtkActor actor0
58  actor0 SetMapper mapper0
59
60
61# read the whole image
62reader SetFileName $file1
63reader WholeSlicesOn
64reader Update
65
66vtkStructuredGrid sg1
67  sg1 DeepCopy [reader GetOutput]
68
69vtkContourFilter cF1
70  cF1 SetInputData sg1
71  cF1 SetValue 0 0.38
72
73vtkPolyDataMapper mapper1
74  mapper1 SetInputConnection [cF1 GetOutputPort]
75  mapper1 ScalarVisibilityOff
76
77vtkActor actor1
78  actor1 SetMapper mapper1
79  actor1 SetPosition 0 -10 0
80
81
82# read the partially written grid
83reader SetFileName $file2
84reader Update
85
86vtkContourFilter cF2
87  cF2 SetInputConnection [reader GetOutputPort]
88  cF2 SetValue 0 0.38
89
90vtkPolyDataMapper mapper2
91  mapper2 SetInputConnection [cF2 GetOutputPort]
92  mapper2 ScalarVisibilityOff
93
94vtkActor actor2
95  actor2 SetMapper mapper2
96  actor2 SetPosition 0 10 0
97
98# Create the RenderWindow, Renderer and both Actors
99#
100vtkRenderer ren1
101vtkRenderWindow renWin
102    renWin AddRenderer ren1
103vtkRenderWindowInteractor iren
104    iren SetRenderWindow renWin
105
106# Add the actors to the renderer, set the background and size
107#
108ren1 AddActor actor0
109ren1 AddActor actor1
110ren1 AddActor actor2
111
112renWin SetSize 300 300
113iren Initialize
114renWin Render
115
116iren AddObserver UserEvent {wm deiconify .vtkInteract}
117
118# prevent the tk window from showing up then start the event loop
119wm withdraw .
120
121
122file delete -force $file0
123file delete -force $file1
124file delete -force $file2
125