<div dir="ltr"><div><div>Hi everybody, maybe this is a trivial question, but I don't know how to select a StructuredGrid's cell data (insead of its points dada) in order to map these values  onto a vtkPlaneWidget. I have modified the ProbingWithPlaneWidget.py script in order to  test this feature. I build a StructuredGrid with 12 points and only two cells, then I set the CellData (two values which are correctly rendered as two colors by  the StructuredGrid's mapper). If I build point data for the 12 points the probe works fine, but if I remove the pointdata code and try to use the celldata one, the probe is shown as white, with no color associated to the cell data.<br></div>Thanks in advance for any help.<br>  <br></div>  Luca Pallozzi Lavorante<br><div><div><br>


        
        
        
        


<pre class="gmail-western">#!/usr/bin/env python

# This example demonstrates how to use the vtkPlaneWidget to probe
# a dataset and then generate contours on the probed data.

import vtk
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

structuredGrid = vtk.vtkStructuredGrid()
points = vtk.vtkPoints()
for k in range(2):
  for j in range(3):
    for i in range(2):
       points.InsertNextPoint(i, j, k) 

structuredGrid.SetDimensions(2, 3, 2)
structuredGrid.SetPoints(points)

# Insert cell data into StructuredGrid
cellData = vtk.vtkFloatArray()
cellData.SetNumberOfComponents(1)
cellData.InsertNextValue(10)
cellData.InsertNextValue(20)
cellData.SetName("CellData")
structuredGrid.GetCellData().SetScalars(cellData)

# Insert cell data into StructuredGrid
pointData = vtk.vtkFloatArray()
pointData.SetNumberOfComponents(1)
for i in range(12):
  pointData.InsertNextValue(i*10)
pointData.SetName("PointData")
structuredGrid.GetPointData().SetScalars(pointData)

# The plane widget is used probe the dataset.
planeWidget = vtk.vtkPlaneWidget()
planeWidget.SetInputData(structuredGrid)
planeWidget.NormalToXAxisOn()
planeWidget.SetResolution(20)
planeWidget.SetRepresentationToOutline()
planeWidget.PlaceWidget()
plane = vtk.vtkPolyData()
planeWidget.GetPolyData(plane)

probe = vtk.vtkProbeFilter()
probe.SetInputData(plane)
probe.SetSourceData(structuredGrid)

contourMapper = vtk.vtkPolyDataMapper()
contourMapper.SetInputConnection(probe.GetOutputPort())
contourMapper.SetScalarRange(structuredGrid.GetScalarRange())
contourActor = vtk.vtkActor()
contourActor.SetMapper(contourMapper)
contourActor.VisibilityOff()

# An outline is shown for context.
outline = vtk.vtkStructuredGridOutlineFilter()
outline.SetInputData(structuredGrid)
outlineMapper = vtk.vtkPolyDataMapper()
outlineMapper.SetInputConnection(outline.GetOutputPort())
outlineActor = vtk.vtkActor()
outlineActor.SetMapper(outlineMapper)

mapper = vtk.vtkDataSetMapper()
mapper.SetInputData(structuredGrid)
mapper.SetScalarRange(structuredGrid.GetScalarRange())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
# Create the RenderWindow, Renderer and both Actors
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)

# Actually generate contour lines.
def BeginInteraction(obj, event):
    global plane, contourActor
    obj.GetPolyData(plane)
    contourActor.VisibilityOn()

def ProbeData(obj, event):
    global plane
    obj.GetPolyData(plane)


# Associate the widget with the interactor
planeWidget.SetInteractor(iren)
# Handle the events.
planeWidget.AddObserver("EnableEvent", BeginInteraction)
planeWidget.AddObserver("StartInteractionEvent", BeginInteraction)
planeWidget.AddObserver("InteractionEvent", ProbeData)

# Add the actors to the renderer, set the background and size
#ren.AddActor(outlineActor)
ren.AddActor(actor)
ren.AddActor(contourActor)

ren.SetBackground(1, 1, 1)
renWin.SetSize(300, 300)
ren.SetBackground(0.1, 0.2, 0.4)

iren.Initialize()
renWin.Render()
iren.Start()</pre>

<br></div></div></div>