[Paraview] [EXT] Re: More Customization of Python programmable Filter Panel

Cory Quammen cory.quammen at kitware.com
Thu Sep 24 16:54:32 EDT 2015


Oops, copying the list in to my last response.

On Thu, Sep 24, 2015 at 4:53 PM, Cory Quammen <cory.quammen at kitware.com>
wrote:

>
>
> On Thu, Sep 24, 2015 at 4:47 PM, Dennis Conklin <
> dennis_conklin at goodyear.com> wrote:
>
>> Cory,
>>
>>
>>
>> I applied to bake.e, which is a vtkMultiblockDataSet (I believe!).
>>
>
> Yes. You can confirm in the Information tab next to the Properties tab.
>
>
>> I tried both “B” and “b” without success.
>>
>
> It should indeed be capital B.
>
>
>> I just now changed the input_type to vtkDataSet, which I guessed was more
>> general and now it works.   I have no idea why vtkMultiblockDataSet didn’t
>> work, but I have a workaround.
>>
>
> Hmm, I'm not sure why that would be.
>
>
>> Thanks again for slogging thru this with me.
>>
>
> No problem!
>
> Cory
>
>
>>
>>
>> Dennis
>>
>>
>>
>> *From:* Cory Quammen [mailto:cory.quammen at kitware.com]
>> *Sent:* Thursday, September 24, 2015 4:42 PM
>>
>> *To:* Dennis Conklin <dennis_conklin at goodyear.com>
>> *Cc:* Paraview (paraview at paraview.org) <paraview at paraview.org>
>> *Subject:* Re: [EXT] Re: [Paraview] More Customization of Python
>> programmable Filter Panel
>>
>>
>>
>> Hi Dennis,
>>
>>
>>
>> What is your input to the Test Filter? I can apply it to a Sphere source
>> input.
>>
>>
>>
>> For your custom filter, the XML file should contain the following:
>>
>>
>>
>>       <InputProperty
>>
>>         name="Input"
>>
>>         command="SetInputConnection">
>>
>>           <ProxyGroupDomain name="groups">
>>
>>             <Group name="sources"/>
>>
>>             <Group name="filters"/>
>>
>>           </ProxyGroupDomain>
>>
>>
>>
>>           <DataTypeDomain name="input_type">
>>
>>             <DataType value="vtkMultiBlockDataSet"/>
>>
>>           </DataTypeDomain>
>>
>>       </InputProperty>
>>
>>
>>
>> This tells ParaView to enable your filter when a multi-block data set is
>> selected in the Pipeline browser. If it doesn't have this, then I believe
>> the filter is not enabled for any input.
>>
>>
>>
>> Hope that helps,
>>
>> Cory
>>
>>
>>
>> On Thu, Sep 24, 2015 at 4:30 PM, Dennis Conklin <
>> dennis_conklin at goodyear.com> wrote:
>>
>> All,
>>
>>
>>
>> So, I can load the xml plugin but the filter is grayed out on the Filters
>> menu.   I have tried removing the InputDataSetType so that it should accept
>> any type of input, but still gray.   I am not sure how Paraview decides
>> which filters are inappropriate (greyed-out) so I don’t have many ideas on
>> how to overcome this.
>>
>>
>>
>> I loaded the  TestFilter.xml from the blog and that is also
>> greyed-out.    I loaded the DoubleHelixSource.xml and that is available in
>> the Sources menu and runs.
>>
>>
>>
>> Thanks
>>
>>
>>
>> Dennis
>>
>>
>>
>> *From:* Dennis Conklin
>> *Sent:* Thursday, September 24, 2015 3:18 PM
>> *To:* 'Cory Quammen' <cory.quammen at kitware.com>
>> *Cc:* Paraview (paraview at paraview.org) <paraview at paraview.org>
>> *Subject:* RE: [EXT] Re: [Paraview] More Customization of Python
>> programmable Filter Panel
>>
>>
>>
>> Cory,
>>
>>
>>
>> I had just thought of this and tried it (successfully) about when your
>> note came in.
>>
>>
>>
>> I hate to quibble, but I would suggest that in the typeMap in the
>> python_filter_generator.py vtkMultiBlockDataSet is listed as
>> vtkMultiblockDataSet and I had to figure this out and use a small ‘b’
>> before it would work – so if you are going to publish this routine
>> anywhere, you might want to edit that!
>>
>>
>>
>> Thanks again – as soon as I figure out why it is grayed out on the Filter
>> list I am going to test this thing out.
>>
>>
>>
>> Dennis
>>
>>
>>
>> *From:* Cory Quammen [mailto:cory.quammen at kitware.com
>> <cory.quammen at kitware.com>]
>> *Sent:* Thursday, September 24, 2015 3:13 PM
>>
>>
>> *To:* Dennis Conklin <dennis_conklin at goodyear.com>
>> *Cc:* Paraview (paraview at paraview.org) <paraview at paraview.org>
>> *Subject:* Re: [EXT] Re: [Paraview] More Customization of Python
>> programmable Filter Panel
>>
>>
>>
>> Hi Dennis,
>>
>>
>>
>> The converter evaluates your Python script and then uses some Python
>> reflection features to extract the code in your RequestData function. But
>> it does this only for the RequestData function (as well as a
>> RequestInformation and RequestUpdateExtent functions, but these aren't
>> always needed). The converter is simply ignoring your other functions.
>>
>>
>>
>> To get around this, try defining your sub* functions as inner functions
>> in RequestData(), e.g.,
>>
>>
>>
>> Def RequestData():
>>
>>    Def sub1:
>>
>>       Do some stuff
>>
>>       Return var
>>
>>
>>
>>    Def sub2(var):
>>
>>       Do some stuff
>>
>>       Return newVar
>>
>>
>>
>>    Def sub3(var):
>>
>>       Do some stuff
>>
>>       Return newVar
>>
>>
>>
>>    X=sub1()
>>
>>    Y=sub2(X)
>>
>>    Z=sub3(Y)
>>
>>    Do something with Z
>>
>>
>>
>> Best regards,
>> Cory
>>
>>
>>
>> On Thu, Sep 24, 2015 at 2:39 PM, Dennis Conklin <
>> dennis_conklin at goodyear.com> wrote:
>>
>> Cory,
>>
>>
>>
>> I’m pretending to be a real programmer, so my Programmable Filter script
>> looks something like this:
>>
>>
>>
>> Def sub1:
>>
>>    Do some stuff
>>
>>    Return var
>>
>>
>>
>> Def sub2(var):
>>
>>    Do some stuff
>>
>>    Return newVar
>>
>>
>>
>> Def sub3(var):
>>
>>    Do some stuff
>>
>>    Return newVar
>>
>>
>>
>> Def RequestData():
>>
>>        X=sub1()
>>
>>        Y=sub2(X)
>>
>>        Z=sub3(Y)
>>
>>       Do something with Z
>>
>>
>>
>> Everything except RequestData gets lost – should I just manually break
>> everything down and insert at the beginning of the default_values in
>> StringVectorProperty, or is there some way to trick it into reading the
>> entire script?
>>
>>
>>
>> Thanks
>>
>>
>>
>> Dennis
>>
>>
>>
>> *From:* Cory Quammen [mailto:cory.quammen at kitware.com]
>> *Sent:* Thursday, September 24, 2015 1:02 PM
>> *To:* Dennis Conklin <dennis_conklin at goodyear.com>
>> *Cc:* Paraview (paraview at paraview.org) <paraview at paraview.org>
>> *Subject:* Re: [EXT] Re: [Paraview] More Customization of Python
>> programmable Filter Panel
>>
>>
>>
>> Dennis,
>>
>>
>>
>> Great! I'm glad it's what you are looking for.
>>
>>
>>
>> You can hide any property by editing the XML file. In the property
>> element, add an attribute called "panel_visibility" and set this to
>> "never". This will hide the property from view. You can also set it to
>> "advanced" so that it shows up only when the advanced option is enabled.
>>
>>
>>
>> Here's an example:
>>
>>
>>
>>       <StringVectorProperty
>>
>>         panel_visibility="never"
>>
>>         name="Script"
>>
>>         command="SetScript"
>>
>>         number_of_elements="1"
>>
>>         default_values="my python script">
>>
>>       <Documentation>This property contains the text of a python program
>> that
>>
>>       the programmable source runs.</Documentation>
>>
>>       </StringVectorProperty>
>>
>>
>>
>> Cheers,
>>
>> Cory
>>
>>
>>
>> On Thu, Sep 24, 2015 at 12:47 PM, Dennis Conklin <
>> dennis_conklin at goodyear.com> wrote:
>>
>> One more question – the original article says that
>>
>>
>>
>> Alternatively, the Script properties can be hidden completely from the
>> properties panel.
>>
>>
>>
>> How is this accomplished?
>>
>>
>>
>> Thanks again
>>
>>
>>
>> Dennis
>>
>>
>>
>> *From:* Dennis Conklin
>> *Sent:* Thursday, September 24, 2015 12:20 PM
>> *To:* 'Cory Quammen' <cory.quammen at kitware.com>
>> *Cc:* Paraview (paraview at paraview.org) <paraview at paraview.org>
>> *Subject:* RE: [EXT] Re: [Paraview] More Customization of Python
>> programmable Filter Panel
>>
>>
>>
>> Cory,
>>
>>
>>
>> Wow, that’s exactly what I need – now I just need to get some time to
>> re-implement my filters using this!
>>
>>
>>
>> Thanks again
>>
>>
>>
>> Dennis
>>
>>
>>
>> *From:* Cory Quammen [mailto:cory.quammen at kitware.com
>> <cory.quammen at kitware.com>]
>> *Sent:* Thursday, September 24, 2015 11:07 AM
>> *To:* Dennis Conklin <dennis_conklin at goodyear.com>
>> *Cc:* Paraview (paraview at paraview.org) <paraview at paraview.org>
>> *Subject:* [EXT] Re: [Paraview] More Customization of Python
>> programmable Filter Panel
>>
>>
>>
>> Hi Dennis,
>>
>>
>>
>> Answers inlined below.
>>
>>
>>
>> On Wed, Sep 23, 2015 at 2:39 PM, Dennis Conklin <
>> dennis_conklin at goodyear.com> wrote:
>>
>> All,
>>
>>
>>
>> Pat Marion discussed adding interactive Properties for a Programmable
>> Filter here:
>>
>> http://www.kitware.com/blog/home/post/534
>>
>>
>>
>> I have a few questions about this:
>>
>> 1.       Is this still valid for v4.4 with the original
>> python_filter_generator.py?
>>
>> Yes, I just tested it.
>>
>> 2.      Have we added any other capability.  For instance,  I would love
>> to present a list of variables to be calculated and let my user select or
>> unselect each to decide exactly what he wants as output.   With a numeric
>> field with 0 as unselect and 1 as select, people will always manage to type
>> something else in there.    If this interface could have a checklist, or if
>> fields could have a drop down list (Yes/No, etc) then this would greatly
>> expand the utility of this technique.
>>
>> You can do this if you have a fixed number of variables. Just list each
>> variable option as a IntVectorProperty with a BooleanDomain in the XML. In
>> the input file for the filter generator, just express these options with
>> the default values, .e.g,
>>
>>
>>
>> Properties = dict(
>>
>>   generate_var1 = True,
>>
>>   generate_var2 = False,
>>
>>   generate_var3 = False
>>
>>   )
>>
>>
>>
>> The filter generator will convert each of these lines into XML of the
>> following form:
>>
>>
>>
>>       <IntVectorProperty
>>
>>         name="generate_var1"
>>
>>         label="generate var1"
>>
>>         initial_string="generate_var1"
>>
>>         command="SetParameter"
>>
>>         animateable="1"
>>
>>         default_values="1"
>>
>>         number_of_elements="1">
>>
>>         <BooleanDomain name="bool" />
>>
>>         <Documentation></Documentation>
>>
>>       </IntVectorProperty>
>>
>>
>>
>>
>>
>> These properties will appear as checkboxes in the UI of your filter.
>>
>>
>>
>> Of course, you can tweak the XML files that are generated if it doesn't
>> get the label attribute for the property right, for instance.
>>
>>
>>
>> I hope that helps.
>>
>> Cory
>>
>>
>>
>>
>>
>> So, is anyone using this and perhaps knows how to do these extended
>> things?
>>
>>
>>
>> Thanks for any hints
>>
>>
>>
>> Dennis
>>
>>
>> _______________________________________________
>> 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.
>>
>>
>>
>>
>>
>> --
>>
>> Cory Quammen
>> R&D Engineer
>> Kitware, Inc.
>>
>>
>>
>>
>>
>> --
>>
>> Cory Quammen
>> R&D Engineer
>> Kitware, Inc.
>>
>
>
>
> --
> 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/20150924/a17dfb7d/attachment.html>


More information about the ParaView mailing list