1#!/usr/bin/env python
2
3# This shows how to probe a dataset with a plane. The probed data is
4# then contoured.
5
6import vtk
7from vtk.util.misc import vtkGetDataRoot
8VTK_DATA_ROOT = vtkGetDataRoot()
9
10# Read data.
11pl3d = vtk.vtkMultiBlockPLOT3DReader()
12pl3d.SetXYZFileName(VTK_DATA_ROOT + "/Data/combxyz.bin")
13pl3d.SetQFileName(VTK_DATA_ROOT + "/Data/combq.bin")
14pl3d.SetScalarFunctionNumber(100)
15pl3d.SetVectorFunctionNumber(202)
16pl3d.Update()
17pl3d_output = pl3d.GetOutput().GetBlock(0)
18
19# We create three planes and position them in the correct position
20# using transform filters. They are then appended together and used as
21# a probe.
22plane = vtk.vtkPlaneSource()
23plane.SetResolution(50, 50)
24transP1 = vtk.vtkTransform()
25transP1.Translate(3.7, 0.0, 28.37)
26transP1.Scale(5, 5, 5)
27transP1.RotateY(90)
28tpd1 = vtk.vtkTransformPolyDataFilter()
29tpd1.SetInputConnection(plane.GetOutputPort())
30tpd1.SetTransform(transP1)
31outTpd1 = vtk.vtkOutlineFilter()
32outTpd1.SetInputConnection(tpd1.GetOutputPort())
33mapTpd1 = vtk.vtkPolyDataMapper()
34mapTpd1.SetInputConnection(outTpd1.GetOutputPort())
35tpd1Actor = vtk.vtkActor()
36tpd1Actor.SetMapper(mapTpd1)
37tpd1Actor.GetProperty().SetColor(0, 0, 0)
38
39transP2 = vtk.vtkTransform()
40transP2.Translate(9.2, 0.0, 31.20)
41transP2.Scale(5, 5, 5)
42transP2.RotateY(90)
43tpd2 = vtk.vtkTransformPolyDataFilter()
44tpd2.SetInputConnection(plane.GetOutputPort())
45tpd2.SetTransform(transP2)
46outTpd2 = vtk.vtkOutlineFilter()
47outTpd2.SetInputConnection(tpd2.GetOutputPort())
48mapTpd2 = vtk.vtkPolyDataMapper()
49mapTpd2.SetInputConnection(outTpd2.GetOutputPort())
50tpd2Actor = vtk.vtkActor()
51tpd2Actor.SetMapper(mapTpd2)
52tpd2Actor.GetProperty().SetColor(0, 0, 0)
53
54transP3 = vtk.vtkTransform()
55transP3.Translate(13.27, 0.0, 33.30)
56transP3.Scale(5, 5, 5)
57transP3.RotateY(90)
58tpd3 = vtk.vtkTransformPolyDataFilter()
59tpd3.SetInputConnection(plane.GetOutputPort())
60tpd3.SetTransform(transP3)
61outTpd3 = vtk.vtkOutlineFilter()
62outTpd3.SetInputConnection(tpd3.GetOutputPort())
63mapTpd3 = vtk.vtkPolyDataMapper()
64mapTpd3.SetInputConnection(outTpd3.GetOutputPort())
65tpd3Actor = vtk.vtkActor()
66tpd3Actor.SetMapper(mapTpd3)
67tpd3Actor.GetProperty().SetColor(0, 0, 0)
68
69appendF = vtk.vtkAppendPolyData()
70appendF.AddInputConnection(tpd1.GetOutputPort())
71appendF.AddInputConnection(tpd2.GetOutputPort())
72appendF.AddInputConnection(tpd3.GetOutputPort())
73
74# The vtkProbeFilter takes two inputs. One is a dataset to use as the
75# probe geometry (SetInput); the other is the data to probe
76# (SetSource). The output dataset structure (geometry and topology) of
77# the probe is the same as the structure of the input. The probing
78# process generates new data values resampled from the source.
79probe = vtk.vtkProbeFilter()
80probe.SetInputConnection(appendF.GetOutputPort())
81probe.SetSourceData(pl3d_output)
82
83contour = vtk.vtkContourFilter()
84contour.SetInputConnection(probe.GetOutputPort())
85contour.GenerateValues(50, pl3d_output.GetScalarRange())
86contourMapper = vtk.vtkPolyDataMapper()
87contourMapper.SetInputConnection(contour.GetOutputPort())
88contourMapper.SetScalarRange(pl3d_output.GetScalarRange())
89planeActor = vtk.vtkActor()
90planeActor.SetMapper(contourMapper)
91
92outline = vtk.vtkStructuredGridOutlineFilter()
93outline.SetInputData(pl3d_output)
94outlineMapper = vtk.vtkPolyDataMapper()
95outlineMapper.SetInputConnection(outline.GetOutputPort())
96outlineActor = vtk.vtkActor()
97outlineActor.SetMapper(outlineMapper)
98outlineActor.GetProperty().SetColor(0, 0, 0)
99
100# Create the RenderWindow, Renderer and both Actors
101ren = vtk.vtkRenderer()
102renWin = vtk.vtkRenderWindow()
103renWin.AddRenderer(ren)
104iren = vtk.vtkRenderWindowInteractor()
105iren.SetRenderWindow(renWin)
106
107ren.AddActor(outlineActor)
108ren.AddActor(planeActor)
109ren.AddActor(tpd1Actor)
110ren.AddActor(tpd2Actor)
111ren.AddActor(tpd3Actor)
112ren.SetBackground(1, 1, 1)
113renWin.SetSize(400, 400)
114
115ren.ResetCamera()
116cam1 = ren.GetActiveCamera()
117cam1.SetClippingRange(3.95297, 50)
118cam1.SetFocalPoint(8.88908, 0.595038, 29.3342)
119cam1.SetPosition(-12.3332, 31.7479, 41.2387)
120cam1.SetViewUp(0.060772, -0.319905, 0.945498)
121
122iren.Initialize()
123renWin.Render()
124iren.Start()
125