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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
package require vtk
package require vtkinteraction
# Create the RenderWindow, Renderer and both Actors
#
vtkRenderer ren1
vtkRenderWindow renWin
renWin AddRenderer ren1
vtkRenderWindowInteractor iren
iren SetRenderWindow renWin
#
# If the current directory is writable, then test the witers
#
if {[catch {set channel [open "test.tmp" "w"]}] == 0 } {
close $channel
file delete -force "test.tmp"
# ====== Structured Grid ======
# First save out a grid in parallel form.
vtkPLOT3DReader reader
reader SetXYZFileName "$VTK_DATA_ROOT/Data/combxyz.bin"
reader SetQFileName "$VTK_DATA_ROOT/Data/combq.bin"
vtkPDataSetWriter writer
writer SetFileName "comb.pvtk"
writer SetInputConnection [reader GetOutputPort]
writer SetNumberOfPieces 4
writer Write
vtkPDataSetReader pReader
pReader SetFileName "comb.pvtk"
vtkDataSetSurfaceFilter surface
surface SetInputConnection [pReader GetOutputPort]
vtkPolyDataMapper mapper
mapper SetInputConnection [surface GetOutputPort]
mapper SetNumberOfPieces 2
mapper SetPiece 0
mapper SetGhostLevel 1
mapper Update
file delete -force "comb.pvtk"
file delete -force "comb.0.vtk"
file delete -force "comb.1.vtk"
file delete -force "comb.2.vtk"
file delete -force "comb.3.vtk"
vtkActor actor
actor SetMapper mapper
actor SetPosition -5 0 -29
# Add the actors to the renderer, set the background and size
#
ren1 AddActor actor
# ====== ImageData ======
# First save out a grid in parallel form.
vtkImageMandelbrotSource fractal
fractal SetWholeExtent 0 9 0 9 0 9
fractal SetSampleCX 0.1 0.1 0.1 0.1
fractal SetMaximumNumberOfIterations 10
vtkPDataSetWriter writer2
writer SetFileName "fractal.pvtk"
writer SetInputConnection [fractal GetOutputPort]
writer SetNumberOfPieces 4
writer Write
vtkPDataSetReader pReader2
pReader2 SetFileName "fractal.pvtk"
vtkContourFilter iso
iso SetInputConnection [pReader2 GetOutputPort]
iso SetValue 0 4
vtkPolyDataMapper mapper2
mapper2 SetInputConnection [iso GetOutputPort]
mapper2 SetNumberOfPieces 3
mapper2 SetPiece 0
mapper2 SetGhostLevel 0
mapper2 Update
file delete -force "fractal.pvtk"
file delete -force "fractal.0.vtk"
file delete -force "fractal.1.vtk"
file delete -force "fractal.2.vtk"
file delete -force "fractal.3.vtk"
vtkActor actor2
actor2 SetMapper mapper2
actor2 SetScale 5 5 5
actor2 SetPosition 6 6 6
# Add the actors to the renderer, set the background and size
#
ren1 AddActor actor2
# ====== PolyData ======
# First save out a grid in parallel form.
vtkSphereSource sphere
sphere SetRadius 2
vtkPDataSetWriter writer3
writer3 SetFileName "sphere.pvtk"
writer3 SetInputConnection [sphere GetOutputPort]
writer3 SetNumberOfPieces 4
writer3 Write
vtkPDataSetReader pReader3
pReader3 SetFileName "sphere.pvtk"
vtkPolyDataMapper mapper3
mapper3 SetInputConnection [pReader3 GetOutputPort]
mapper3 SetNumberOfPieces 2
mapper3 SetPiece 0
mapper3 SetGhostLevel 1
mapper3 Update
file delete -force "sphere.pvtk"
file delete -force "sphere.0.vtk"
file delete -force "sphere.1.vtk"
file delete -force "sphere.2.vtk"
file delete -force "sphere.3.vtk"
vtkActor actor3
actor3 SetMapper mapper3
actor3 SetPosition 6 6 6
# Add the actors to the renderer, set the background and size
#
ren1 AddActor actor3
}
ren1 SetBackground 0.1 0.2 0.4
renWin SetSize 300 300
# render the image
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}
set cam1 [ren1 GetActiveCamera]
$cam1 Azimuth 20
$cam1 Elevation 40
ren1 ResetCamera
$cam1 Zoom 1.2
iren Initialize
# prevent the tk window from showing up then start the event loop
wm withdraw .
|