/usr/share/vtk/GUI/Tcl/StreamlinesWithLineWidget.tcl is in vtk-examples 5.8.0-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | package require vtk
package require vtkinteraction
package require vtktesting
# This example demonstrates how to use the vtkLineWidget to seed
# and manipulate streamlines. Two line widgets are created. One is
# invoked by pressing 'W', the other by pressing 'L'. Both can exist
# together.
# Start by loading some data.
#
vtkPLOT3DReader pl3d
pl3d SetXYZFileName "$VTK_DATA_ROOT/Data/combxyz.bin"
pl3d SetQFileName "$VTK_DATA_ROOT/Data/combq.bin"
pl3d SetScalarFunctionNumber 100
pl3d SetVectorFunctionNumber 202
pl3d Update
# The line widget is used seed the streamlines.
#
vtkLineWidget lineWidget
vtkPolyData seeds
lineWidget SetInput [pl3d GetOutput]
lineWidget SetAlignToYAxis
lineWidget PlaceWidget
lineWidget GetPolyData seeds
lineWidget ClampToBoundsOn
vtkRungeKutta4 rk4
vtkStreamLine streamer
streamer SetInputConnection [pl3d GetOutputPort]
streamer SetSource seeds
streamer SetMaximumPropagationTime 100
streamer SetIntegrationStepLength .2
streamer SetStepLength .001
streamer SetNumberOfThreads 1
streamer SetIntegrationDirectionToForward
streamer VorticityOn
streamer SetIntegrator rk4
vtkRibbonFilter rf
rf SetInputConnection [streamer GetOutputPort]
rf SetWidth 0.1
rf SetWidthFactor 5
vtkPolyDataMapper streamMapper
streamMapper SetInputConnection [rf GetOutputPort]
eval streamMapper SetScalarRange [[pl3d GetOutput] GetScalarRange]
vtkActor streamline
streamline SetMapper streamMapper
streamline VisibilityOff
# The second line widget is used seed more streamlines.
#
vtkLineWidget lineWidget2
vtkPolyData seeds2
lineWidget2 SetInput [pl3d GetOutput]
lineWidget2 PlaceWidget
lineWidget2 GetPolyData seeds2
lineWidget2 SetKeyPressActivationValue L
vtkStreamLine streamer2
streamer2 SetInputConnection [pl3d GetOutputPort]
streamer2 SetSource seeds2
streamer2 SetMaximumPropagationTime 100
streamer2 SetIntegrationStepLength .2
streamer2 SetStepLength .001
streamer2 SetNumberOfThreads 1
streamer2 SetIntegrationDirectionToForward
streamer2 VorticityOn
streamer2 SetIntegrator rk4
vtkRibbonFilter rf2
rf2 SetInputConnection [streamer2 GetOutputPort]
rf2 SetWidth 0.1
rf2 SetWidthFactor 5
vtkPolyDataMapper streamMapper2
streamMapper2 SetInputConnection [rf2 GetOutputPort]
eval streamMapper2 SetScalarRange [[pl3d GetOutput] GetScalarRange]
vtkActor streamline2
streamline2 SetMapper streamMapper2
streamline2 VisibilityOff
vtkStructuredGridOutlineFilter outline
outline SetInputConnection [pl3d GetOutputPort]
vtkPolyDataMapper outlineMapper
outlineMapper SetInputConnection [outline GetOutputPort]
vtkActor outlineActor
outlineActor SetMapper outlineMapper
# Create the RenderWindow, Renderer and both Actors
#
vtkRenderer ren1
vtkRenderWindow renWin
renWin AddRenderer ren1
vtkRenderWindowInteractor iren
iren SetRenderWindow renWin
# Associate the line widget with the interactor
lineWidget SetInteractor iren
lineWidget AddObserver StartInteractionEvent BeginInteraction
lineWidget AddObserver InteractionEvent GenerateStreamlines
lineWidget2 SetInteractor iren
lineWidget2 AddObserver StartInteractionEvent BeginInteraction2
lineWidget2 AddObserver EndInteractionEvent GenerateStreamlines2
# Add the actors to the renderer, set the background and size
#
ren1 AddActor outlineActor
ren1 AddActor streamline
ren1 AddActor streamline2
ren1 SetBackground 1 1 1
renWin SetSize 300 300
ren1 SetBackground 0.1 0.2 0.4
set cam1 [ren1 GetActiveCamera]
$cam1 SetClippingRange 3.95297 50
$cam1 SetFocalPoint 9.71821 0.458166 29.3999
$cam1 SetPosition 2.7439 -37.3196 38.7167
$cam1 SetViewUp -0.16123 0.264271 0.950876
# render the image
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}
renWin Render
# Prevent the tk window from showing up then start the event loop.
wm withdraw .
# Actually generate streamlines.
proc BeginInteraction {} {
streamline VisibilityOn
}
proc GenerateStreamlines {} {
lineWidget GetPolyData seeds
}
proc BeginInteraction2 {} {
streamline2 VisibilityOn
}
proc GenerateStreamlines2 {} {
lineWidget2 GetPolyData seeds2
}
|