[Paraview-developers] bug in pqPipelineFilter

Maxim Torgonskiy kriolog at gmail.com
Mon Jan 29 16:57:48 EST 2018


Hi Utkarsh,

> There's was never meant to be any order matching between the VTK port
numbers and input ports provided by pqPipelineFilter... If there's a
convincing reason to preserve it, we can surely fix it, however.
I finally found one. :) When I wrap my filter in a Paraview Custom filter,
if I use a default wizard's name 'Input' it changes the input name and I
can't search by name with pqPipelineFilter anymore.

Regards,
Maxim

2017-08-04 9:52 GMT-04:00 Maxim Torgonskiy <kriolog at gmail.com>:

> Sounds convincing, I'll switch to named access. Thank you for the
> clarification!
>
> Le 3 août 2017 11:14, "Utkarsh Ayachit" <utkarsh.ayachit at kitware.com> a
> écrit :
>
> While the mismatch may be confusing, ParaView deliberately opted for
> "named" access to the inputs since the proxy mechanism does provide ability
> to hide/ignore/change input ports. For example, proxy may not even have
> input properties for all input ports if some of them are optional.
>
> On Wed, Aug 2, 2017 at 6:19 PM, Maxim Torgonskiy <kriolog at gmail.com>
> wrote:
>
>> Ok, I see. I just supposed that the order of ports is the same. Before,
>> in my paraview plugin I used everywhere access by index (for both VTK and pqPipeline*
>> parts) and now I should mix it with access by input name which is less
>> consistent.
>>
>> Thanks,
>> Maxim
>>
>>
>>
>> 2017-08-02 17:39 GMT-04:00 Utkarsh Ayachit <utkarsh.ayachit at kitware.com>:
>>
>>> There's was never meant to be any order matching between the VTK port
>>> numbers and input ports provided by pqPipelineFilter. The latter indeed
>>> used a map internally using the property  name as the key for the map
>>> (hence the change in order).
>>>
>>> If there's a convincing reason to preserve it, we can surely fix it,
>>> however.
>>>
>>> Utkarsh
>>>
>>> On Wed, Aug 2, 2017 at 4:08 PM, Maxim Torgonskiy <kriolog at gmail.com>
>>> wrote:
>>>
>>>> Hello,
>>>>
>>>> It seems that there's a bug in pqPipelineFilter::getInputPortName(int).
>>>> I have a vtk filter which has 3 inputs and when I try to access the inputs
>>>> with pqPipelineFilter the function getInputPortName doesn't respect their
>>>> order:
>>>>
>>>> .xml :
>>>> <?xml version="1.0"?>
>>>> <ServerManagerConfiguration>
>>>>   <ProxyGroup name="filters">
>>>>     <SourceProxy class="Dummy" name="Dummy">
>>>>       <InputProperty
>>>>         name="Zero"
>>>>         port_index="0"
>>>>         command="SetInputConnection">
>>>>         <ProxyGroupDomain name="groups">
>>>>           <Group name="sources"/>
>>>>           <Group name="filters"/>
>>>>         </ProxyGroupDomain>
>>>>         <DataTypeDomain name="input_type">
>>>>           <DataType value="vtkPolyData"/>
>>>>         </DataTypeDomain>
>>>>       </InputProperty>
>>>>       <InputProperty
>>>>         name="One"
>>>>         port_index="1"
>>>>         optional="1"
>>>>         command="SetInputConnection">
>>>>         <ProxyGroupDomain name="groups">
>>>>           <Group name="sources"/>
>>>>           <Group name="filters"/>
>>>>         </ProxyGroupDomain>
>>>>         <DataTypeDomain name="input_type">
>>>>           <DataType value="vtkPointSet"/>
>>>>         </DataTypeDomain>
>>>>       </InputProperty>
>>>>       <InputProperty
>>>>         name="Two"
>>>>         port_index="2"
>>>>         optional="1"
>>>>         command="SetInputConnection">
>>>>         <ProxyGroupDomain name="groups">
>>>>           <Group name="sources"/>
>>>>           <Group name="filters"/>
>>>>         </ProxyGroupDomain>
>>>>         <DataTypeDomain name="input_type">
>>>>           <DataType value="vtkPolyData"/>
>>>>         </DataTypeDomain>
>>>>       </InputProperty>
>>>>     </SourceProxy>
>>>>   </ProxyGroup>
>>>> </ServerManagerConfiguration>
>>>>
>>>> .cxx :
>>>> int Dummy::RequestData(
>>>>   vtkInformation *vtkNotUsed(info),
>>>>   vtkInformationVector **inputVector,
>>>>   vtkInformationVector *outputVector)
>>>> {
>>>>   pqPipelineFilter* self_pqfilter = qobject_cast<pqPipelineFilter*
>>>> >(pqActiveObjects::instance().activeSource());
>>>>   Q_ASSERT(self_pqfilter);
>>>>
>>>>   for(int i = 0; i < GetNumberOfInputPorts(); ++i)
>>>>     qDebug() << self_pqfilter->getInputPortName(i);
>>>>
>>>>   return 1;
>>>> }
>>>>
>>>> output :
>>>> "One"
>>>> "Two"
>>>> "Zero"
>>>>
>>>>
>>>> A minimal reproducible example is attached.
>>>>
>>>> Regards,
>>>> Maxim
>>>>
>>>>
>>>> _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Search the list archives at: http://markmail.org/search/?q=
>>>> Paraview-developers
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://public.kitware.com/mailman/listinfo/paraview-developers
>>>>
>>>>
>>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://paraview.org/pipermail/paraview-developers/attachments/20180129/728c01fe/attachment.html>


More information about the Paraview-developers mailing list