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.
 
 
 
 
 
 

153 lines
4.7 KiB

package require vtk
package require vtkinteraction
package require vtktesting
## Generate a rectilinear grid from a field.
##
# get the interactor ui
# Create a reader and write out the field
vtkDataSetReader reader
reader SetFileName "$VTK_DATA_ROOT/Data/RectGrid2.vtk"
vtkDataSetToDataObjectFilter ds2do
ds2do SetInputConnection [reader GetOutputPort]
if {[catch {set channel [open "RGridField.vtk" "w"]}] == 0 } {
close $channel
vtkDataObjectWriter writer
writer SetInputConnection [ds2do GetOutputPort]
writer SetFileName "RGridField.vtk"
writer Write
# Read the field
#
vtkDataObjectReader dor
dor SetFileName "RGridField.vtk"
vtkDataObjectToDataSetFilter do2ds
do2ds SetInputConnection [dor GetOutputPort]
do2ds SetDataSetTypeToRectilinearGrid
do2ds SetDimensionsComponent "Dimensions" 0
do2ds SetPointComponent 0 "XCoordinates" 0
do2ds SetPointComponent 1 "YCoordinates" 0
do2ds SetPointComponent 2 "ZCoordinates" 0
vtkFieldDataToAttributeDataFilter fd2ad
fd2ad SetInput [do2ds GetRectilinearGridOutput]
fd2ad SetInputFieldToDataObjectField
fd2ad SetOutputAttributeDataToPointData
fd2ad SetVectorComponent 0 "vectors" 0
fd2ad SetVectorComponent 1 "vectors" 1
fd2ad SetVectorComponent 2 "vectors" 2
fd2ad SetScalarComponent 0 "scalars" 0
fd2ad Update
# create pipeline
#
vtkRectilinearGridGeometryFilter plane
plane SetInput [fd2ad GetRectilinearGridOutput]
plane SetExtent 0 100 0 100 15 15
vtkWarpVector warper
warper SetInputConnection [plane 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 [[fd2ad GetOutput] GetCenter]
cutPlane SetNormal 1 0 0
vtkCutter planeCut
planeCut SetInput [fd2ad GetRectilinearGridOutput]
planeCut SetCutFunction cutPlane
vtkDataSetMapper cutMapper
cutMapper SetInputConnection [planeCut GetOutputPort]
eval cutMapper SetScalarRange \
[[[[fd2ad GetOutput] GetPointData] GetScalars] GetRange]
vtkActor cutActor
cutActor SetMapper cutMapper
vtkContourFilter iso
iso SetInput [fd2ad 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 [fd2ad GetOutputPort]
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 SetVaryRadiusToVaryRadiusByVector
vtkPolyDataMapper mapStreamTube
mapStreamTube SetInputConnection [streamTube GetOutputPort]
eval mapStreamTube SetScalarRange \
[[[[fd2ad GetOutput] GetPointData] GetScalars] GetRange]
vtkActor streamTubeActor
streamTubeActor SetMapper mapStreamTube
[streamTubeActor GetProperty] BackfaceCullingOn
vtkOutlineFilter outline
outline SetInput [fd2ad 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 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 300 300
[ren1 GetActiveCamera] SetPosition 0.0390893 0.184813 -3.94026
[ren1 GetActiveCamera] SetFocalPoint -0.00578326 0 0.701967
[ren1 GetActiveCamera] SetViewAngle 30
[ren1 GetActiveCamera] SetViewUp 0.00850257 0.999169 0.0398605
[ren1 GetActiveCamera] SetClippingRange 3.08127 6.62716
iren Initialize
# render the image
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}
if {[info commands "rtExMath"] != ""} {
file delete -force "RGridField.vtk"
}
}
# prevent the tk window from showing up then start the event loop
wm withdraw .