Pipeline compatibility

Dear devs,

I have two C++ plugins, A (source) and B (filter). However B uses additional data that only source A can provide. Therefore, in a pipeline, A-B is perfectly fine, while A-C-B (where C is some other filter) should not be possible.

Also I noticed that unavailable filters are gray and cannot be selected in PV.

My questions are:

  1. How does PV decides what filters can be used?
  2. How can I reproduce this effect for my source and filter?

Thanks a ton,
Art

Hi,

each filter have a corresponding XML which define its inputs data type

eg: vtkAppendArcLength : input restricted to vtkPolyData , therefore this filter won’t be able to select a vtkUnstructured data

vtkAppendArcLength will be gray

        <DataTypeDomain name="input_type">
          <DataType value="vtkPolyData" />
        </DataTypeDomain>

Hello, thank you for your reply.

I was hoping for something more sensitive. In our case, the source always comes with a certain variable. And if the variable is not present, the filter should not be available.

I could still have a vtkPolyData without this variable, and yet ParaView will fail.

Sincerely,
Art

That’s not currently possible. One could extend vtkSMInputArrayDomain to add an XML attribute that specifies which array names must be present, then add an InputArrayDomain entry to the InputProperty element in your filter XML definition.

Doesn’t sound like something a plugin can do.

Either way, DataTypes is the answer.

Thank you very much for your help,
Art