[vtkusers] Re: get data values at line
Fabian Braennstroem
f.braennstroem at gmx.de
Wed Oct 19 14:38:54 EDT 2005
Hi,
* On 19 Oct 2005 * Fabian Braennstroem wrote:
> Hi,
>
> I read my EnSight Case with the 'vtkGenericEnSightReader'
> and I am able to find the max velocity with:
>
> maxVelocity=reader.GetOutput().GetPointData().GetVectors().GetMaxNorm();
>
> Now, I would like to read the actual velocity at certain
> points and/or lines and write them to an external file. Can
> I do this using the probe filter or is there anything
> similar to 'GetActualValue(x1,y1,z1,x2,y2,z2)', where I
> define the point/line and get the values!? Afterwards I would
> use a simple 'print' in Cxx/Python/Tcl.
I found something, which could work... I am actually trying
to implement a probe filter into the python-officeTube
example. I got the probe filter from the xyPlot.py example:
#!/usr/bin/env python
# This example demonstrates the use of a single streamline and the
# tube filter to create a streamtube.
import vtk
from vtk.util.misc import vtkGetDataRoot
from vtk.util.colors import *
VTK_DATA_ROOT = vtkGetDataRoot()
# We read a data file the is a CFD analysis of airflow in an office
# (with ventilation and a burning cigarette). We force an update so
# that we can query the output for its length, i.e., the length of the
# diagonal of the bounding box. This is useful for normalizing the
# data.
reader = vtk.vtkStructuredGridReader()
reader.SetFileName(VTK_DATA_ROOT + "/Data/office.binary.vtk")
reader.Update()
length = reader.GetOutput().GetLength()
maxVelocity =reader.GetOutput().GetPointData().GetVectors().GetMaxNorm()
maxTime = 35.0*length/maxVelocity
# Create three the line source to use for the probe lines.
line = vtk.vtkLineSource()
line.SetResolution(1)
# Move the line into place and create the probe filter. For
# vtkProbeFilter, the probe line is the input, and the underlying data
# set is the source.
transL1 = vtk.vtkTransform()
transL1.Translate(0.0, 0.0, 0.37)
transL1.Scale(1, 1, 1)
#transL1.RotateY(90)
tf = vtk.vtkTransformPolyDataFilter()
tf.SetInput(line.GetOutput())
tf.SetTransform(transL1)
probe = vtk.vtkProbeFilter()
probe.SetInput(tf.GetOutput())
probe.SetSource(reader.GetOutput())
wertreader = reader.GetOutput().GetPointData().GetScalars().GetTuple1(1)
print 'line', line
print 'transL1', transL1
print 'tf', tf
print 'probe', probe
print 'wertreader', wertreader
wert = probe.GetOutput().GetPointData().GetScalars().GetTuple1(1)
print 'wert', wert
The variable wertreader prints the scalar value at (1) by
using 'reader' as input. Afterwards I tried to use the
defined 'probe' as input, but that does not work. I get:
Traceback (most recent call last):
File "Tube.py", line 51, in ?
wert =
probe.GetOutput().GetPointData().GetScalars().GetTuple1(1)
AttributeError: 'NoneType' object has no attribute
'GetTuple1'
Does anybody have an idea what I am doing wrong?
I would use the 'reader' as input when I would know, how I
can easyly get the values at a line in the domain...
Best Greetings!
Fabian
More information about the vtkusers
mailing list