Hi, Jean.

Thank you for helping. On your suggestion, I tried removing the Fetch, but then I was getting empty objects. From googling around a bit, I realized that I needed to call wake_out.UpdatePipeline() before moving on.

Because this is pretty ad-hoc, I'd prefer to avoid creating a filter, and just keep the macro self-contained. I'm having difficulty finding how to connect inputs and outputs. I've spent a lot of time with google, and with the dir() command, but still don't see how to get at the data.

Thanks for your contiuned help.   Below is what I currently have.

Greg

##########################
# this part seems good

filename = '/raid/schussma/work2/ace3p/paraview/macros/wakeplot/wake.out'
wake_out = CSVReader(FileName=filename,
                     FieldDelimiterCharacters = ' ',
                     HaveHeaders = 0)
wake_out.UpdatePipeline()  # this is necessary!  blank objects otherwise...

##########################
# here is the mystery

di = wake_out.GetDataInformation()
ri = di.GetRowDataInformation()

scale = 1.0/ri.GetArrayInformation(2).GetComponentRange(0)[1]

input = ???  # what goes here?

import vtk
newcol0 = vtk.vtkDoubleArray()
newcol0.DeepCopy(input.GetColumn(1))

for i in range(newcol0.GetNumberOfTuples()):
  newcol0.SetValue(i, scale * newcol0.GetValue(i))  # rescale

  output = ???.GetOutputDataObject(0)
  output.AddColumn(newcol0)

##########################
# this was good without the scaling

pd = PlotData(???)   # is no longer wake_out, correct?
dr = Show(pd,
          XArrayName = 'Field 0',
          AttributeType = 'Row Data',
          SeriesVisibility = ['vtkOriginalIndices', '0'])

Render()



On 09/15/2011 02:05 AM, Favre Jean wrote:
Greg,

I would not use Fetch to do what you need. Here is something that should work:

# reuse your wake_out proxy

di = wake_out.GetDataInformation()
rowInfo = di.GetRowDataInformation()

# get largest magnitude value from column 2

rowInfo.GetArrayInformation(1).GetComponentRange(0)[1]

#You then use a programmable filter with the following copy op.
#one deepcopy to get your initial array, and then you scale it the way you want
# you may discard the old array later


import vtk

input = self.GetInput()

newcol0 = vtk.vtkDoubleArray()

newcol0.DeepCopy(input.GetColumn(0))

for i in range(newcol0.GetNumberOfTuples()):

newcol0.SetValue(i, 2.0 * newcol0.GetValue(i)) # rescale by a factor of 2


output = self.GetOutputDataObject(0)

output.AddColumn(newcol0)

print output.GetNumberOfColumns()

-----------------
Jean M. Favre
Swiss National Supercomputing Center



_______________________________________________
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

Reply via email to