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.
118 lines
3.2 KiB
118 lines
3.2 KiB
package require vtk
|
|
package require vtkinteraction
|
|
package require vtktesting
|
|
|
|
# Demonstrate the generation of a structured grid from field data. The output
|
|
# should be similar to combIso.tcl.
|
|
#
|
|
# NOTE: This test only works if the current directory is writable
|
|
#
|
|
|
|
if {[catch {set channel [open "test.tmp" "w"]}] == 0 } {
|
|
close $channel
|
|
file delete -force "test.tmp"
|
|
|
|
# get the interactor ui
|
|
|
|
# Create a reader and write out the field
|
|
vtkPLOT3DReader comb
|
|
comb SetXYZFileName "$VTK_DATA_ROOT/Data/combxyz.bin"
|
|
comb SetQFileName "$VTK_DATA_ROOT/Data/combq.bin"
|
|
comb SetScalarFunctionNumber 100
|
|
|
|
vtkStructuredGridWriter wsg
|
|
wsg SetInputConnection [comb GetOutputPort]
|
|
wsg SetFileTypeToBinary
|
|
wsg SetFileName "combsg.vtk"
|
|
wsg Write
|
|
|
|
vtkStructuredGridReader pl3d
|
|
pl3d SetFileName "combsg.vtk"
|
|
|
|
vtkDataSetToDataObjectFilter ds2do
|
|
ds2do SetInputConnection [pl3d GetOutputPort]
|
|
|
|
vtkDataObjectWriter writer
|
|
writer SetInputConnection [ds2do GetOutputPort]
|
|
writer SetFileName "SGridField.vtk"
|
|
writer Write
|
|
|
|
# read the field
|
|
vtkDataObjectReader dor
|
|
dor SetFileName "SGridField.vtk"
|
|
vtkDataObjectToDataSetFilter do2ds
|
|
do2ds SetInputConnection [dor GetOutputPort]
|
|
do2ds SetDataSetTypeToStructuredGrid
|
|
do2ds SetDimensionsComponent "Dimensions" 0
|
|
do2ds SetPointComponent 0 "Points" 0
|
|
do2ds SetPointComponent 1 "Points" 1
|
|
do2ds SetPointComponent 2 "Points" 2
|
|
vtkFieldDataToAttributeDataFilter fd2ad
|
|
fd2ad SetInput [do2ds GetStructuredGridOutput]
|
|
fd2ad SetInputFieldToDataObjectField
|
|
fd2ad SetOutputAttributeDataToPointData
|
|
fd2ad SetVectorComponent 0 "Momentum" 0
|
|
fd2ad SetVectorComponent 1 "Momentum" 1
|
|
fd2ad SetVectorComponent 2 "Momentum" 2
|
|
fd2ad SetScalarComponent 0 "Density" 0
|
|
|
|
# create pipeline
|
|
#
|
|
vtkContourFilter iso
|
|
iso SetInputConnection [fd2ad GetOutputPort]
|
|
iso SetValue 0 .38
|
|
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
|
|
|
|
vtkStructuredGridOutlineFilter outline
|
|
outline SetInput [fd2ad GetStructuredGridOutput]
|
|
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
|
|
|
|
# Add the actors to the renderer, set the background and size
|
|
#
|
|
ren1 AddActor outlineActor
|
|
ren1 AddActor isoActor
|
|
ren1 SetBackground 1 1 1
|
|
renWin SetSize 250 250
|
|
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
|
|
|
|
#
|
|
# cleanup
|
|
file delete -force "combsg.vtk"
|
|
file delete -force "SGridField.vtk"
|
|
|
|
# prevent the tk window from showing up then start the event loop
|
|
wm withdraw .
|
|
}
|
|
|
|
|
|
|