<HTML>
<HEAD>
<TITLE>Re: [Paraview] Question about writing custom reader for paraview</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>InsertNextValue will work just fine so long as you are careful about inserting all the components for each tuple. &nbsp;Most of the time I would recommend using InsertNextTupleValue instead. &nbsp;However, in either case before filling the array I recommend calling Allocate first so that the memory will already be allocated. &nbsp;This will make InsertNextValue more efficient because it will not have to reallocate the array. &nbsp;Alternatively, you can call SetNumberOfComponents and then SetNumberOfTuples and then call SetTupleValue. &nbsp;The choice between the two approaches is based on how you are using them and your own coding style.<BR>
<BR>
-Ken<BR>
<BR>
On 3/26/09 7:49 PM, &quot;shenyanwen&quot; &lt;<a href="shenyanwen@gmail.com">shenyanwen@gmail.com</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>Thank you !<BR>
As you described, I can add more than one type of scalars by AddArray(type_name), and the ParaView will distinguish them by<BR>
the names I set to them. I've got it.<BR>
There is one more question. I use pressure-&gt;InsertNextValue(pressure[idx]) to add saclar value to each point . I do not know whether this method is right or there is another method to add the scalar value to each point ! <BR>
Thanks so much!<BR>
<BR>
-Seven<BR>
<BR>
<BR>
2009/3/27 Moreland, Kenneth &lt;<a href="kmorel@sandia.gov">kmorel@sandia.gov</a>&gt;<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>You can add more fields by simply adding them to the point data of the output data object.<BR>
<BR>
</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'>  output-&gt;GetPointData()-&gt;AddArray(pressure);<BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
Make sure that you set a name for the arrays (using the SetName method of vtkDataArray).  That is how ParaView/VTK differentiates the fields.<BR>
<BR>
-Ken<BR>
<BR>
<BR>
<BR>
On 3/23/09 12:40 AM, &quot;shenyanwen&quot; &lt;<a href="shenyanwen@gmail.com">shenyanwen@gmail.com</a> &lt;<a href="http://shenyanwen@gmail.com">http://shenyanwen@gmail.com</a>&gt; &gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>Hi, thanks so much for your help!<BR>
I have changed my code just like what you said.<BR>
Now, I should add more than one type scalar like pressure, vol1, vol2, vol3 and so on.<BR>
So, how can I add these scalars into my output Data? <BR>
I have already read these scalars into some variables like m_pressure[numPts], m_vol1[numPts],m_vol[numPts] and m_vol3[numPts], and how can I add these variables into my output Data?<BR>
Thanks so much!<BR>
<BR>
--Seven<BR>
<BR>
2009/3/20 Moreland, Kenneth &lt;<a href="kmorel@sandia.gov">kmorel@sandia.gov</a> &lt;<a href="http://kmorel@sandia.gov">http://kmorel@sandia.gov</a>&gt; &gt;<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>What you are using is not quite right.  First, it sounds like you really want to create a vtkImageData.  This data holds a 1D, 2D, or 3D grid of points with origin and uniform spacing on each axis.  Thus, you would inherit from vtkImageAlgorithm and cast your output to vtkImageData.<BR>
<BR>
Second, the only thing you directly set in the output information is the WHOLE_EXTENT().  You do this in RequestInformation so that the downstream pipeline can make decisions about what to load before the data is actually loaded.  So, the first line you have below is correct, assuming you put it in RequestInformation.<BR>
<BR>
Now, you don&#8217;t set UPDATE_EXTENT, you get it.  Someone downstream will set this the region of data in which it wants you to load.  You don&#8217;t actually have to get this directly from the output information; you can get it from the output object.  So in RequestData, you would have code like this:<BR>
<BR>
</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'>  vtkImageData *output = vtkImageData::GetData(outInfo);<BR>
  int *extent = output-&gt;GetUpdateExtent();<BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
Now you can set the actual extent, spacing, origin, and data itself directly into the data object.<BR>
<BR>
</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'>  output-&gt;SetExtent(extent);<BR>
  output-&gt;SetOrigin(origin);<BR>
  output-&gt;SetSpacing(ar);<BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
You can then set the data either by allocating and getting scalar data through the vtkImageData or by adding data to the image data&#8217;s point data structure (retrieved with GetPointData()).  More details are in <I>The VTK User&#8217;s Guide</I>.<BR>
<BR>
-Ken<BR>
<BR>
<BR>
<BR>
On 3/19/09 1:08 AM, &quot;shenyanwen&quot; &lt;<a href="shenyanwen@gmail.com">shenyanwen@gmail.com</a> &lt;<a href="http://shenyanwen@gmail.com">http://shenyanwen@gmail.com</a>&gt; &nbsp;&lt;<a href="http://shenyanwen@gmail.com">http://shenyanwen@gmail.com</a>&gt; &gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
<BR>
<BR>
<BR>
Hi, I am writing a custom reader for paraview to read my own data file which paraview hasn't have.<BR>
I have known that the most important method is RequestInformation and RequestData, and I just want to write a reader that can output the data type of StructuredPoints with Scalar and some vectors.I have already use :<BR>
outInfo-&gt;Set(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),<BR>
                 0,dim[1]-1,0,dim[1]-1,0,dim[2]-1);<BR>
    outInfo-&gt;Set(vtkStreamingDemandDrivenPipeline::UPDATE_EXTENT(),<BR>
                 0,dim[1]-1,0,dim[1]-1,0,dim[2]-1);<BR>
and:outInfo-&gt;Set(vtkDataObject::SPACING(), ar, 3);<BR>
outInfo-&gt;Set(vtkDataObject::ORIGIN(), origin, 3);<BR>
and how can I read the scalar data just like the file-format describes:<BR>
SCALAR dataName dataType numComp<BR>
LOOKUP_TABLE tableName<BR>
s0<BR>
s1<BR>
s2<BR>
...<BR>
s(n-1)<BR>
<BR>
which method or function can I use to read the s0,s1,...,s(n-1) into the variable and set to the outInfo.<BR>
Thanks so much!<BR>
<FONT COLOR="#888888"><BR>
</FONT><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>
   ****      Kenneth Moreland<BR>
    ***      Sandia National Laboratories<BR>
***********  <BR>
*** *** ***  email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a> &lt;<a href="http://kmorel@sandia.gov">http://kmorel@sandia.gov</a>&gt; &nbsp;&lt;<a href="http://kmorel@sandia.gov">http://kmorel@sandia.gov</a>&gt; <BR>
**  ***  **  phone: (505) 844-8919<BR>
    ***      web:   <a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a> &lt;<a href="http://www.cs.unm.edu/%7Ekmorel">http://www.cs.unm.edu/%7Ekmorel</a>&gt; &nbsp;&lt;<a href="http://www.cs.unm.edu/%7Ekmorel">http://www.cs.unm.edu/%7Ekmorel</a>&gt; <BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
<BR>
</SPAN></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT><FONT SIZE="1"><FONT FACE="Monaco, Courier New"><SPAN STYLE='font-size:7pt'><BR>
   ****      Kenneth Moreland<BR>
    ***      Sandia National Laboratories<BR>
***********  <BR>
*** *** ***  email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a> &lt;<a href="http://kmorel@sandia.gov">http://kmorel@sandia.gov</a>&gt; <BR>
**  ***  **  phone: (505) 844-8919<BR>
    ***      web:   <a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a> &lt;<a href="http://www.cs.unm.edu/%7Ekmorel">http://www.cs.unm.edu/%7Ekmorel</a>&gt; <BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><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>