[Paraview] custom filter doesn't update property in the Paraview UI

corinna reuter corinnareuter75 at gmail.com
Mon Aug 8 14:14:47 EDT 2016


Dear Cory,
I wonder, if you still have an idea how to implement a filter that
initializes its properties from upstream objects and updates these
properties when those objects change.
Isn't the whole ParaView designed such that changes are propagated along
the pipeline? Why is it so complicated to render propagated changes in the
filter parameters visible?


Thank you
Corinna


On Tue, Aug 2, 2016 at 4:55 PM, corinna reuter <corinnareuter75 at gmail.com>
wrote:

> Dear Cory, dear all,
> sorry for not getting back to this topic earlier. Your solution works
> perfectly for the described problem. When I create e.g. a SphereSource and
> attach the TestProperty filter with its NPoints property, this property is
> initialized with the correct number of points in the sphere.
>
> However, I have another requirement which is that the property should also
> be updated, when the input changes. I thought the same mechanism for
> initializing the property would also take care of updating the property
> upon modified input.
>
> If I modify the SphereSource from above by changing the ThetaResolution or
> PhiResolution, then vtkTestProperty::RequestInformation is called as
> expected, and the included print statements show the new number of points,
> but the NPoints property won't reflect this new value. Do you know of
> another short trick, how to fix this? You mentioned that you found the need
> for a domain element in the ParaView source code. Where exactly? If I
> understand what prevented the property initialization, I might be able to
> find out what prevents the update.
>
> The complete filter sources, updated to include your corrections, are
> attached.
>
> Thank you
> Corinna
>
> On Fri, Jul 15, 2016 at 6:02 PM, Cory Quammen <cory.quammen at kitware.com>
> wrote:
>
>> Corinna,
>>
>> Looking at the ParaView source code, I believe that vector properties
>> with information properties must have a domain associated with them.
>> In your case, you can add an IntRangeDomain with only a minimum
>> defined:
>>
>> <IntVectorProperty name="NPoints"
>>                         command="SetNPoints"
>>                         information_property="NPointsInfo"
>>                         number_of_elements="1"
>>                         default_values="42">
>>     <IntRangeDomain name="range" min="0" />
>> </IntVectorProperty>
>>
>> 0 seems like a reasonable minimum in your case.
>>
>> Keep your information_only property as it is. You'll need to change
>> where your NPoints is set, though - moving this to the
>> RequestInformation() member function should work.
>>
>> Cory
>>
>>
>> On Fri, Jul 15, 2016 at 3:46 AM, corinna reuter
>> <corinnareuter75 at gmail.com> wrote:
>> > Cory, thanks for mentioning the TIFFReader proxy. I tried to modify my
>> > previously attached code such that the NPoints property links to a
>> > NPointsInfo property. Plus, I have removed the call
>> > "this->SetNPoints(nset);" inside vtkTestProperty::RequestData as
>> suggested
>> > by Utkarsh. The NPoints property is still showing the default "42",
>> though,
>> > and not initialized or updated from the number of points of the input
>> > dataset. I am obviously missing another important step in addition to
>> > changing the xml definitions, but which one?
>> >
>> > Here is the detailed modification of TestProperty.xml compared to the
>> > earlier attachment:
>> > replace
>> > "<IntVectorProperty name="NPoints"
>> >                         command="SetNPoints"
>> >                         number_of_elements="1"
>> >                         default_values="42">
>> >   </IntVectorProperty>"
>> > with:
>> > "<IntVectorProperty name="NPoints"
>> >                         command="SetNPoints"
>> >                         information_property="NPointsInfo"
>> >                         number_of_elements="1"
>> >                         default_values="42">
>> >   </IntVectorProperty>
>> >   <IntVectorProperty name="NPointsInfo"
>> >                         command="GetNPoints"
>> >                         information_only="1">
>> >     <SimpleIntInformationHelper />
>> >   </IntVectorProperty>"
>> >
>> > Thank you
>> > Corinna
>> >
>> >
>> > On Thu, Jul 14, 2016 at 5:24 PM, Cory Quammen <cory.quammen at kitware.com
>> >
>> > wrote:
>> >>
>> >> Corinna,
>> >>
>> >> Take a look at the TIFFReader SourceProxy in
>> >> ParaViewCore/ServerManager/SMApplication/Resources/readers.xml. It has
>> >> a CustomDataSpacing property that enables you to set voxel spacing,
>> >> and has an associated information property CustomDataSpacingInfo that
>> >> should initially populate the spacing property when the reader is
>> >> created.
>> >>
>> >> HTH,
>> >> Cory
>> >>
>> >> On Thu, Jul 14, 2016 at 11:17 AM, Utkarsh Ayachit
>> >> <utkarsh.ayachit at kitware.com> wrote:
>> >> >> I'll check the meaning of MTime.
>> >> >
>> >> > See the implementation of vtkSetMacro() in vtkSetGet.h. Every time
>> the
>> >> > value changes, it call this->Modified() which updates the MTime.
>> Since
>> >> > VTK is a demand-driven pipeline, changes to MTime is what tells the
>> >> > pipeline that the algorithm has been modified and needs reexecution.
>> >> > If one modifies the MTime in RequestData() (the method called by the
>> >> > pipeline to process the input to produce output), the pipeline thinks
>> >> > the filter is always dirty and that can cause unexpected side
>> effects.
>> >> >
>> >> >
>> >> >> I'd need something similar to an image resize filter. The output
>> size
>> >> >> should
>> >> >> be identical to the input size, when the filter is first attached to
>> >> >> the
>> >> >> input. The output size should be shown in the UI and the user
>> should be
>> >> >> able
>> >> >> to enter a different output size.
>> >> >
>> >> > This is possible. Let me see if I can find you a simple example for
>> >> > the same. I'll get back to you.
>> >> > _______________________________________________
>> >> > 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
>> >> >
>> >> > Search the list archives at: http://markmail.org/search/?q=ParaView
>> >> >
>> >> > Follow this link to subscribe/unsubscribe:
>> >> > http://public.kitware.com/mailman/listinfo/paraview
>> >>
>> >>
>> >>
>> >> --
>> >> Cory Quammen
>> >> R&D Engineer
>> >> Kitware, Inc.
>> >
>> >
>>
>>
>>
>> --
>> Cory Quammen
>> R&D Engineer
>> Kitware, Inc.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20160808/5d6bed2b/attachment.html>


More information about the ParaView mailing list