File: TestXMLImageDataIO.tcl

package info (click to toggle)
vtk 5.0.4-1.1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 51,084 kB
  • ctags: 70,426
  • sloc: cpp: 524,166; ansic: 220,276; tcl: 43,377; python: 14,037; perl: 3,102; java: 1,436; yacc: 1,033; sh: 339; lex: 248; makefile: 197; asm: 154
file content (126 lines) | stat: -rw-r--r-- 2,844 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package require vtk
package require vtkinteraction

set file0 idFile0.vti
set file1 idFile1.vti
set file2 idFile2.vti

# read in some image data
vtkImageReader imageReader
  imageReader SetDataByteOrderToLittleEndian
  imageReader SetDataExtent 0 63 0 63 1 93
  imageReader SetDataSpacing 3.2 3.2 1.5
  imageReader SetFilePrefix "$VTK_DATA_ROOT/Data/headsq/quarter"
  imageReader Update

# extract to reduce extents of grid
vtkExtractVOI extract
  extract SetInputConnection [imageReader GetOutputPort]
  extract SetVOI 0 63 0 63 0 45
  extract Update

# write just a piece (extracted piece) as well as the whole thing  
vtkXMLImageDataWriter idWriter
  idWriter SetFileName $file0
  idWriter SetDataModeToAscii
  idWriter SetInputConnection [extract GetOutputPort]
  idWriter Write
  
  idWriter SetFileName $file1
  idWriter SetDataModeToAppended
  idWriter SetInputConnection [imageReader GetOutputPort]
  idWriter SetNumberOfPieces 2
  idWriter Write

  idWriter SetFileName $file2
  idWriter SetDataModeToBinary
  idWriter SetWriteExtent 1 31 4 63 12 92
  idWriter Write

# read the extracted grid
vtkXMLImageDataReader reader
  reader SetFileName $file0
  reader WholeSlicesOff
  reader Update

vtkImageData id0
  id0 DeepCopy [reader GetOutput]

vtkContourFilter cF0
  cF0 SetInput id0
  cF0 SetValue 0 500
  
vtkPolyDataMapper mapper0
  mapper0 SetInputConnection [cF0 GetOutputPort]
  mapper0 ScalarVisibilityOff

vtkActor actor0
  actor0 SetMapper mapper0
  actor0 SetPosition 180 -60 0


# read the whole image
reader SetFileName $file1
reader WholeSlicesOn
reader Update

vtkImageData id1
  id1 DeepCopy [reader GetOutput]

vtkContourFilter cF1
  cF1 SetInput id1
  cF1 SetValue 0 500

vtkPolyDataMapper mapper1
  mapper1 SetInputConnection [cF1 GetOutputPort]
  mapper1 ScalarVisibilityOff

vtkActor actor1
  actor1 SetMapper mapper1
  actor1 SetOrientation 90 0 0


# read the paritally written image
reader SetFileName $file2
reader Update

vtkContourFilter cF2
  cF2 SetInputConnection [reader GetOutputPort]
  cF2 SetValue 0 500

vtkPolyDataMapper mapper2
  mapper2 SetInputConnection [cF2 GetOutputPort]
  mapper2 ScalarVisibilityOff

vtkActor actor2
  actor2 SetMapper mapper2
  actor2 SetOrientation 0 -90 0
  actor2 SetPosition 180 -30 0

# Create the RenderWindow, Renderer and both Actors
#
vtkRenderer ren1
vtkRenderWindow renWin
    renWin AddRenderer ren1
vtkRenderWindowInteractor iren
    iren SetRenderWindow renWin

# Add the actors to the renderer, set the background and size
#
ren1 AddActor actor0
ren1 AddActor actor1
ren1 AddActor actor2

renWin SetSize 300 300
iren Initialize
renWin Render

iren AddObserver UserEvent {wm deiconify .vtkInteract}

# prevent the tk window from showing up then start the event loop
wm withdraw .


file delete -force $file0
file delete -force $file1
file delete -force $file2