Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.2 KiB

2 years ago
package require vtk
package require vtkinteraction
# create pipeline
#
# create sphere to color
vtkSphereSource sphere
sphere SetThetaResolution 20
sphere SetPhiResolution 40
proc colorCells {} {
vtkMath randomColorGenerator
set input [randomColors GetInput]
set output [randomColors GetOutput]
set numCells [$input GetNumberOfCells]
vtkFloatArray colors
colors SetNumberOfTuples $numCells
for {set i 0} {$i < $numCells} {incr i} {
colors SetValue $i [randomColorGenerator Random 0 1]
}
[$output GetCellData] CopyScalarsOff
[$output GetCellData] PassData [$input GetCellData]
[$output GetCellData] SetScalars colors
colors Delete; #reference counting - it's ok
randomColorGenerator Delete
}
# Compute random scalars (colors) for each cell
vtkProgrammableAttributeDataFilter randomColors
randomColors SetInputConnection [sphere GetOutputPort]
randomColors SetExecuteMethod colorCells
# mapper and actor
vtkPolyDataMapper mapper
mapper SetInput [randomColors GetPolyDataOutput]
eval mapper SetScalarRange [[randomColors GetPolyDataOutput] GetScalarRange]
vtkActor sphereActor
sphereActor SetMapper mapper
# Create a scalar bar
vtkScalarBarActor scalarBar
scalarBar SetLookupTable [mapper GetLookupTable]
scalarBar SetTitle "Temperature"
[scalarBar GetPositionCoordinate] SetCoordinateSystemToNormalizedViewport
[scalarBar GetPositionCoordinate] SetValue 0.1 0.01
scalarBar SetOrientationToHorizontal
scalarBar SetWidth 0.8
scalarBar SetHeight 0.17
# Test the Get/Set Position
eval scalarBar SetPosition [scalarBar GetPosition]
# Create graphics stuff
# Create the RenderWindow, Renderer and both Actors
#
vtkRenderer ren1
vtkRenderWindow renWin
renWin AddRenderer ren1
vtkRenderWindowInteractor iren
iren SetRenderWindow renWin
ren1 AddActor sphereActor
ren1 AddActor2D scalarBar
renWin SetSize 350 350
# render the image
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}
ren1 ResetCamera
[ren1 GetActiveCamera] Zoom 1.5
renWin Render
scalarBar SetNumberOfLabels 8
renWin Render
# prevent the tk window from showing up then start the event loop
wm withdraw .