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
|
package require vtk
package require vtkinteraction
package require vtktesting
set VTK_VARY_RADIUS_BY_VECTOR 2
# create pipeline
#
vtkGenericEnSightReader reader
# Make sure all algorithms use the composite data pipeline
vtkCompositeDataPipeline cdp
reader SetDefaultExecutivePrototype cdp
reader SetCaseFileName "$VTK_DATA_ROOT/Data/EnSight/RectGrid_ascii.case"
reader Update
vtkCastToConcrete toRectilinearGrid
# toRectilinearGrid SetInputConnection [reader GetOutputPort]
toRectilinearGrid SetInputData [[reader GetOutput] GetBlock 0]
toRectilinearGrid Update
vtkRectilinearGridGeometryFilter plane
plane SetInputData [toRectilinearGrid GetRectilinearGridOutput]
plane SetExtent 0 100 0 100 15 15
vtkTriangleFilter tri
tri SetInputConnection [plane GetOutputPort]
vtkWarpVector warper
warper SetInputConnection [tri GetOutputPort]
warper SetScaleFactor 0.05
vtkDataSetMapper planeMapper
planeMapper SetInputConnection [warper GetOutputPort]
planeMapper SetScalarRange 0.197813 0.710419
vtkActor planeActor
planeActor SetMapper planeMapper
vtkPlane cutPlane
# eval cutPlane SetOrigin [[reader GetOutput] GetCenter]
eval cutPlane SetOrigin [[[reader GetOutput] GetBlock 0] GetCenter]
cutPlane SetNormal 1 0 0
vtkCutter planeCut
planeCut SetInputData [toRectilinearGrid GetRectilinearGridOutput]
planeCut SetCutFunction cutPlane
vtkDataSetMapper cutMapper
cutMapper SetInputConnection [planeCut GetOutputPort]
eval cutMapper SetScalarRange \
[[[[[reader GetOutput] GetBlock 0] GetPointData] GetScalars] GetRange]
vtkActor cutActor
cutActor SetMapper cutMapper
vtkContourFilter iso
iso SetInputData [toRectilinearGrid GetRectilinearGridOutput]
iso SetValue 0 0.7
vtkPolyDataNormals normals
normals SetInputConnection [iso GetOutputPort]
normals SetFeatureAngle 45
vtkPolyDataMapper isoMapper
isoMapper SetInputConnection [normals GetOutputPort]
isoMapper ScalarVisibilityOff
vtkActor isoActor
isoActor SetMapper isoMapper
eval [isoActor GetProperty] SetColor $bisque
eval [isoActor GetProperty] SetRepresentationToWireframe
vtkStreamLine streamer
# streamer SetInputConnection [reader GetOutputPort]
streamer SetInputData [[reader GetOutput] GetBlock 0]
streamer SetStartPosition -1.2 -0.1 1.3
streamer SetMaximumPropagationTime 500
streamer SetStepLength 0.05
streamer SetIntegrationStepLength 0.05
streamer SetIntegrationDirectionToIntegrateBothDirections
vtkTubeFilter streamTube
streamTube SetInputConnection [streamer GetOutputPort]
streamTube SetRadius 0.025
streamTube SetNumberOfSides 6
streamTube SetVaryRadius $VTK_VARY_RADIUS_BY_VECTOR
vtkPolyDataMapper mapStreamTube
mapStreamTube SetInputConnection [streamTube GetOutputPort]
eval mapStreamTube SetScalarRange \
[[[[[reader GetOutput] GetBlock 0] GetPointData] GetScalars] GetRange]
# [[[[reader GetOutput] GetPointData] GetScalars] GetRange]
vtkActor streamTubeActor
streamTubeActor SetMapper mapStreamTube
[streamTubeActor GetProperty] BackfaceCullingOn
vtkOutlineFilter outline
outline SetInputData [toRectilinearGrid GetRectilinearGridOutput]
vtkPolyDataMapper outlineMapper
outlineMapper SetInputConnection [outline GetOutputPort]
vtkActor outlineActor
outlineActor SetMapper outlineMapper
eval [outlineActor GetProperty] SetColor $black
# Graphics stuff
# Create the RenderWindow, Renderer and both Actors
#
vtkRenderer ren1
vtkRenderWindow renWin
renWin SetMultiSamples 0
renWin AddRenderer ren1
vtkRenderWindowInteractor iren
iren SetRenderWindow renWin
# Add the actors to the renderer, set the background and size
#
ren1 AddActor outlineActor
ren1 AddActor planeActor
ren1 AddActor cutActor
ren1 AddActor isoActor
ren1 AddActor streamTubeActor
ren1 SetBackground 1 1 1
renWin SetSize 400 400
set cam1 [ren1 GetActiveCamera]
$cam1 SetClippingRange 3.76213 10.712
$cam1 SetFocalPoint -0.0842503 -0.136905 0.610234
$cam1 SetPosition 2.53813 2.2678 -5.22172
$cam1 SetViewUp -0.241047 0.930635 0.275343
iren Initialize
# render the image
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}
# prevent the tk window from showing up then start the event loop
wm withdraw .
reader SetDefaultExecutivePrototype {}
|