[Paraview] Python Programmable Filter

Jacques Papper jacques.papper at gmail.com
Thu Nov 13 11:18:42 EST 2008


Indeed the VTK online doxygen is very useful. Is there any way in python of
getting the name of the class of the object I'm dealing with ? That way I
can find the class documentation in the Doxygen ?
Thanks again,
Jacques

2008/11/13 David E DeMarle <dave.demarle at kitware.com>

> There is probably a python way to get help more easily, but one way to
> figure it out is to look at the VTK doxygen documentation for
> vtkDataObject and it's subclasses, and realize that all (or almost
> all) of the public C++ methods are wrapped into python and therefore
> available to use.
>
> cheers,
> Dave
>
> On 11/13/08, Jacques Papper <jacques.papper at gmail.com> wrote:
> > Thanks a lot Utkarsh !
> >
> > It works. I was almost there, but I couldn't figure out a way to expose
> the
> > available interface for each object!
> > Where am I supposed to look to figure out that CopyStructure(), and
> > NewInstance(), SetBlock() etc ... are functions available ?
> >
> > Kind regards,
> > Jacques Papper
> >
> >
> > 2008/11/13 Utkarsh Ayachit <utkarsh.ayachit at kitware.com>
> >
> > > Jacques,
> > >
> > > Couple of ways to solve your problem:
> > >
> > > * Solution One:
> > > If you don't want to deal with the fact that your data is a
> > vtkMultiblockDataSet, apply the "Merge Blocks" filter after each of the
> > "Extract Block" filters and then connect to the "Programmable Filter" to
> to
> > the output from the "Merge Blocks" and then your current script should
> work
> > just fine. The "Merge Blocks" will convert the vtkMultiBlockDataSet to a
> > vtkUnstructuredGrid on which your script is applicable.
> > >
> > > * Solution Two:
> > >
> > > input0 = self.GetInputDataObject(0,0)
> > > input1 = self.GetInputDataObject(0,1)
> > > output = self.GetOutputDataObject(0)
> > >
> > > input0Block0 = input0.GetBlock(0)
> > > input1Block0 = input1.GetBlock(0)
> > >
> > > output.CopyStructure(input0)
> > > outputBlock0 = input0Block0.NewInstance()
> > > outputBlock0.CopyStructure(input0Block0)
> > > output.SetBlock(0, outputBlock0)
> > >
> > >
> >
> outputBlock0.GetPointData().AddArray(input0Block0.GetPointData().GetArray("pressure1"))
> > >
> >
> outputBlock0.GetPointData().AddArray(input1Block0.GetPointData().GetArray("pressure2"))
> > >
> > > The above script will work if you are extracting a single block using
> the
> > Extract Block filter. If you want to merge arrays for all the blocks in
> the
> > input you'll have to iterate over the datasets in the
> vtkMultiblockDataset.
> > Take a look at
> > >
> >
> http://www.paraview.org/Wiki/Python_Programmable_Filter#Dealing_with_Composite_Datasets
> > >
> > > Utkarsh
> > >
> > >
> > > Jacques Papper wrote:
> > >
> > > >
> > > > Here is what I am doing at the moment.
> > > > -Load geometry 1
> > > > -Extract wing block
> > > >
> > > > -Load geometry 2
> > > > -Extract wing block
> > > >
> > > > Then use the resample filter with wing1 as input and wing2 as source
> > > > (this works)
> > > >
> > > > The last bit is missing (that is merging the data from wing2 with the
> > resampled data)
> > > >
> > > > Jacques
> > > >
> > > > 2008/11/13 Berk Geveci <berk.geveci at kitware.com
> > <mailto:berk.geveci at kitware.com>>
> > > >
> > > >
> > > >    Programmable filter can still be made to work. Do the datasets
> have
> > > >    multiple parts? I am not sure how resampling would work with
> multiple
> > > >    parts. It is impossible to guess which parts map to which parts...
> > > >
> > > >    -berk
> > > >
> > > >    On Thu, Nov 13, 2008 at 8:28 AM, Jacques Papper
> > > >
> > > >    <jacques.papper at gmail.com
> > <mailto:jacques.papper at gmail.com>> wrote:
> > > >     > They are multi-block datasets from Ensight Reader.
> > > >     > Is there another way of dealing with this then ?
> > > >     > Jacques
> > > >     >
> > > >     > 2008/11/13 Berk Geveci <berk.geveci at kitware.com
> > > >    <mailto:berk.geveci at kitware.com>>
> > > >
> > > >     >>
> > > >     >> Are the inputs multi-block datasets by any chance?
> > > >     >>
> > > >     >>
> > > >     >> -berk
> > > >     >>
> > > >     >> On Thu, Nov 13, 2008 at 6:03 AM, Jacques Papper
> > > >
> > > >     >> <jacques.papper at gmail.com
> > <mailto:jacques.papper at gmail.com>> wrote:
> > > >     >> > Hi Berk,
> > > >     >> >
> > > >     >> > I am trying out your suggestion of merging arrays :
> > > >     >> >
> > > >     >> > input0 = self.GetInputDataObject(0,0)
> > > >     >> > input1 = self.GetInputDataObject(0,1)
> > > >     >> > output = self.GetOutputDataObject(0)
> > > >     >> >
> > > >     >> >
> > > >
> >
> output.GetPointData().AddArray(input0.GetPointData().GetArray("pressure1"))
> > > >     >> >
> > > >     >> >
> > > >
> >
> output.GetPointData().AddArray(input1.GetPointData().GetArray("pressure2"))
> > > >     >> >
> > > >     >> > but I get the following error message :
> > > >     >> >
> > > >     >> >   File "<string>", line 2, in <module>
> > > >     >> >   File "<string>", line 4, in RequestData
> > > >     >> > AttributeError: GetPointData
> > > >     >> >
> > > >     >> > I also tried just using the programmable filter on one
> source
> > > >    and with
> > > >     >> > the
> > > >     >> > following code, and  I get the same error :
> > > >     >> >
> > > >     >> > input0=self.GetInputDataObject(0,0)
> > > >     >> > input0.GetPointData()
> > > >     >> >
> > > >     >> > I am using version 3.4.0
> > > >     >> >
> > > >     >> >
> > _______________________________________________
> > > >     >> > ParaView mailing list
> > > >     >> > ParaView at paraview.org <mailto:ParaView at paraview.org>
> > > >
> > > >     >> >
> > http://www.paraview.org/mailman/listinfo/paraview
> > > >     >> >
> > > >     >> >
> > > >     >
> > > >     >
> > > >
> > > >
> > > >
> > > >
> > ------------------------------------------------------------------------
> > > >
> > > >
> > > > _______________________________________________
> > > > ParaView mailing list
> > > > ParaView at paraview.org
> > > > http://www.paraview.org/mailman/listinfo/paraview
> > > >
> > >
> >
> >
> > _______________________________________________
> > ParaView mailing list
> > ParaView at paraview.org
> > http://www.paraview.org/mailman/listinfo/paraview
> >
> >
>
>
> --
> David E DeMarle
> Kitware, Inc.
> R&D Engineer
> 28 Corporate Drive
> Clifton Park, NY 12065-8662
> Phone: 518-371-3971 x109
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20081113/8b43cffa/attachment.htm>


More information about the ParaView mailing list