<div dir="ltr">Hi Ben,<div><br></div><div>The filter has to be set up the same way regardless of whether you</div><div>intend to use SetInputConnection() or SetInputData().   After all,</div><div>SetInputData() always calls SetInputConnection() under the hood.</div><div>So the example that you linked is the way to go.</div><div><br></div><div>It looks like you want the second input to be optional.  Since the</div><div>port exists whether or not an input has been connected to it, what</div><div>you need to do is check whether someone has connected an input</div><div>to the port.  This works regardless of whether the connection was</div><div>done with SetInputConnection() or with SetInputData():</div><div><br></div><div>  if (this->GetNumberOfInputConnections(1) != 0) { ... }</div><div><br></div><div><br></div><div>The filter itself must set the second port as "optional" when it sets</div><div>up the properties of the ports:</div><div><br></div><div><div>  int vtkMyMultiInputFilter::FillInputPortInformation(int port, vtkInformation* info)</div><div>  {</div><div>    if (port == 0)</div><div>    {</div><div>      info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkPolyData");</div><div>    }</div><div>    else if (port == 1)</div><div>    {</div><div>      info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkPolyData");</div><div>      info->Set(vtkAlgorithm::INPUT_IS_OPTIONAL(), true);</div><div>    }</div><div>    return 1;</div><div>  }</div></div><div><br></div><div> - David</div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 27, 2018 at 10:59 AM, BBerco <span dir="ltr"><<a href="mailto:bebe0705@colorado.edu" target="_blank">bebe0705@colorado.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello all, <br>
I'm working on a filter that produces luminosity curves from shape models.<br>
I'm trying to extend its capability to the case of multiple-body systems,<br>
for instance that of a binary asteroid featuring a primary around which<br>
orbits a secondary object.<br>
<br>
To this end, I would need to allow my filter (inheriting from<br>
vtkPolyDataAlgorithm) to take in multiple polydata inputs (one for each<br>
body, with the first one being the primary, the second one the secondary (if<br>
any),...).<br>
<br>
I naively tried <br>
*<br>
myfilter-> SetInputData(0,primary_<wbr>polydata)<br>
myfilter-> SetInputData(1,secondary_<wbr>polydata)<br>
*<br>
<br>
but the method which I think should return the number of inputs<br>
(GetNumberOfInputPorts()) still returns 1. Obviously I'm being confused<br>
between the number of inputs and the number of input ports. <br>
<br>
This example<br>
<<a href="https://www.vtk.org/Wiki/VTK/Examples/Cxx/Developers/MultipleInputPorts" rel="noreferrer" target="_blank">https://www.vtk.org/Wiki/VTK/<wbr>Examples/Cxx/Developers/<wbr>MultipleInputPorts</a>>  <br>
presents another approach that is not as flexible as I would like because it<br>
relies on* SetInputConnection* and not * SetInputData*.<br>
<br>
Any advice?<br>
</blockquote></div><br></div></div></div>