[Paraview] Accessing a specific variable in Python Programmable Filter

Burlen Loring bloring at lbl.gov
Fri May 16 16:23:58 EDT 2014


> =============================
> input  =self.GetPolyDataInput();
> output =self.GetPolyDataOutput();
>   
> colors = vtk.vtkUnsignedCharArray();
> colors.SetNumberOfComponents(3);
> colors.SetName("Colors");
>   
> numPoints =input.GetNumberOfPoints()
> for  iin  range(0, numPoints):
>      colors.InsertNextTuple3(255,0,0);
>   
> output=input
> output.GetPointData().AddArray(colors)
> ===============================
Not sure how this got on the wiki but this is an example of what *not* 
to do!!

In a VTK filter one's never supposed to modify the input.
> output=input
> output.GetPointData().AddArray(colors)
This is exactly what's done here. Of course you're not going to find the 
array in the filter's output if you're adding it to the input!

This code can be fixed by removing the output=input line. With that 
change you should be able to see the array in downstream filters. note, 
in python 2 range actually generates a list with all the values in it, 
while xrange creates an iterator which is far more efficient. To 
actually use the colors you'll also have to uncheck the map scalars 
check box in the display properties.

input = self.GetPolyDataInput();

output = self.GetPolyDataOutput();

colors = vtk.vtkUnsignedCharArray();

colors.SetNumberOfComponents(3);

colors.SetName("Colors");

numPoints = input.GetNumberOfPoints()

for i in xrange(0, numPoints):

colors.InsertNextTuple3(0,255,0);

output.GetPointData().AddArray(colors)

del colors



On 05/16/2014 12:46 PM, Su, Simon M CTR USARMY ARL (US) wrote:
> Hello,
>
> After staring at 
> http://www.paraview.org/Wiki/Python_Programmable_Filter 
> <http://www.paraview.org/Wiki/Python_Programmable_Filter> for a while, 
> the way to access the data for a specific variable name still eludes 
> me. This is the python code from the wiki on Add the Colors variable 
> to a PolyData
>
> =============================
> input  =self.GetPolyDataInput();
> output =self.GetPolyDataOutput();
>   
> colors = vtk.vtkUnsignedCharArray();
> colors.SetNumberOfComponents(3);
> colors.SetName("Colors");
>   
> numPoints =input.GetNumberOfPoints()
> for  iin  range(0, numPoints):
>      colors.InsertNextTuple3(255,0,0);
>   
> output=input
> output.GetPointData().AddArray(colors)
> ===============================
>
> How do I from the next filter, access the variable name "Colors" that 
> I created?
>
> Any help is much appreciated.
>
> thanks
> -simon
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20140516/b0443df0/attachment-0001.html>


More information about the ParaView mailing list