<HTML>
<HEAD>
<TITLE>Re: [Paraview] Filter Plugin w/ multiple connections</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>There are two parts to making this work. &nbsp;The first part is supporting multiple ports and/or connections in the filter itself. &nbsp;To set the number of input ports, you call this-&gt;SetNumberOfInputPorts() in the filter&#8217;s constructor. &nbsp;To set the number of connections allowed on each port, you override the FillInputPortInformation method and add the appropriate flags to the information object. &nbsp;The specifics are documented at the beginning of Chapter 13 (How to Write an Algorithm for VTK) in the latest <I>VTK User&#8217;s Guide</I> book.<BR>
<BR>
The second part is to announce the input ports and/or connections in the server manager XML. &nbsp;To set multiple ports, provide multiple InputProperty elements, one for each input. &nbsp;These are easiest to set up if you provide convenience methods for each port in your filter that call SetInputConnection with the appropriate port number. &nbsp;The arguments for the InputProperty tag provide information about ports that support multiple connections and optional ports. &nbsp;<I>The ParaView Guide</I> book provides some documentation on the XML structure and the ParaView3/Servers/ServerManager/Resources/filters.xml source file provides plenty of examples. &nbsp;The ArbitrarySourceStreamTracer, labeled &#8220;Stream Tracer (Custom Source)&#8221;, provides good examples of both multiple ports and ports that support multiple connections.<BR>
<BR>
-Ken<BR>
<BR>
<BR>
On 5/5/09 5:08 PM, &quot;David Fuentes&quot; &lt;<a href="fuentesdt@gmail.com">fuentesdt@gmail.com</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>Hello,<BR>
<BR>
<BR>
What is the proper way to write a filter plugin for paraview w/ multiple<BR>
connections and access the data from each connection?<BR>
<BR>
<BR>
I have been trying to use the vtkProgrammableFilter,<BR>
vtkPythonProgrammableFilter, vtkMultiBlockDataGroupFilter, and<BR>
vtkTemporalStaticsFilter as examples.<BR>
<BR>
<BR>
int vtkMyFilterPlugin::RequestData(<BR>
&nbsp;&nbsp;&nbsp;vtkInformation *vtkNotUsed(request),<BR>
&nbsp;&nbsp;&nbsp;vtkInformationVector **inputVector,<BR>
&nbsp;&nbsp;&nbsp;vtkInformationVector *outputVector)<BR>
{<BR>
<BR>
&nbsp;&nbsp;&nbsp;int numInputs = inputVector[0]-&gt;GetNumberOfInformationObjects();<BR>
&nbsp;&nbsp;&nbsp;for (int idx = 0; idx &lt; numInputs; ++idx)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkInformation *inInfo = inputVector[0]-&gt;GetInformationObject(idx);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkDataObject *input = vtkDataObject::GetData(inInfo);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkDataSet *inputDataSet &nbsp;= vtkDataSet::SafeDownCast( input) ;<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<BR>
}<BR>
<BR>
where numInputs = the number of connections to my Filter.<BR>
vtkDataSet::SafeDownCast(input) returns a NULL pointer when I have<BR>
multiple connections to the filter but works for ONE connection.<BR>
How do I get the pointer(s) that will let me access the vtkDataArray<BR>
for each connection to my filter? ie<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkPointData *pd=inputDataSet-&gt;GetPointData();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int numArrays = pd-&gt;GetNumberOfArrays();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; numArrays; i++)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkDataArray *array = pd-&gt;GetArray(i);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
<BR>
thanks,<BR>
df<BR>
_______________________________________________<BR>
Powered by www.kitware.com<BR>
<BR>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><BR>
<BR>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a><BR>
<BR>
Follow this link to subscribe/unsubscribe:<BR>
<a href="http://www.paraview.org/mailman/listinfo/paraview">http://www.paraview.org/mailman/listinfo/paraview</a><BR>
<BR>
<BR>
</SPAN></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'><BR>
&nbsp;&nbsp;&nbsp;**** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kenneth Moreland<BR>
&nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sandia National Laboratories<BR>
*********** &nbsp;<BR>
*** *** *** &nbsp;email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a><BR>
** &nbsp;*** &nbsp;** &nbsp;phone: (505) 844-8919<BR>
&nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;web: &nbsp;&nbsp;<a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a><BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT>
</BODY>
</HTML>