[Paraview] Question on Multiple Ports in Custom Reader (repost from developer list)

Biddiscombe, John A. biddisco at cscs.ch
Fri Jul 6 14:26:25 EDT 2012


You've used 
  switch(port)
    {
    case 0:
      info->Set(vtkDataObject::DATA_TYPE_NAME(), "vtkStructuredGrid");
      break;

    case 1:
      info->Set(vtkDataObject::DATA_TYPE_NAME(), "vtkTable");
      break;
    }

But I always use
  if (port==0) {
    info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkPointSet");
  }
  else if (port==1) {
    info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkPointSet");
  }

Does that fix it?


-----Original Message-----
From: paraview-bounces at paraview.org [mailto:paraview-bounces at paraview.org] On Behalf Of Joshua Murphy
Sent: 06 July 2012 18:53
To: Utkarsh Ayachit
Cc: paraview at paraview.org
Subject: Re: [Paraview] Question on Multiple Ports in Custom Reader (repost from developer list)

Hi Utkarsh,

Here is the generic reader I am experimenting withŠ I haven't ported anything into my actual reader yet, as I am just trying to get the second port to work before messing with my actual reader.

Thanks for helping!

-Josh


On 7/6/12 10:46 AM, "Utkarsh Ayachit" <utkarsh.ayachit at kitware.com> wrote:

>Can you post you reader's code? It might make things easier.
>
>Utkarsh
>
>On Fri, Jul 6, 2012 at 12:15 PM, Joshua Murphy 
><Joshua.Murphy at lasp.colorado.edu> wrote:
>> Hello all,
>>
>> I am still struggling with this problem, so I figured I would re-post 
>>the  question to the general list in hopes of getting a wider 
>>audience!
>>
>> Thanks in advance for any help you may provide!
>>
>> For Completeness, I have verified that I am setting the number of 
>> output ports in my constructor.
>>
>> Thanks again for any help!
>>
>> -Joshua Murphy
>>
>> Laboratory for Atmospheric and Space Physics
>>
>> University of Colorado, Boulder
>>
>>
>>
>>
>> Hello,
>>
>>
>>
>> I am attempting to write a reader that handles both structured grids 
>>and  meta-data.  It was recommended to me that I use multiple ports, 
>>and populate  a vtkTable with the meta-data.
>>
>>
>>
>> I think I am having some conceptual problems with how this is 
>>supposed to  work.
>>
>>
>>
>> I have written a dummy reader in an attempt to get the meta-data 
>> working prior to porting it to my real reader, but I am having 
>> troubleŠ
>>
>>
>>
>> My understanding is that I need to
>>
>>
>>
>> specify the number of output ports with 
>> this->SetNumberOfOutputPorts(2) Populate the output port information
>>
>> int vtkGenericReader::FillOutputPortInformation(int port,
>>vtkInformation*
>> info)
>>
>> {
>>
>>   switch(port)
>>
>>     {
>>
>>     case 0:
>>
>>       info->Set(vtkDataObject::DATA_TYPE_NAME(), 
>> "vtkStructuredGrid");
>>
>>       break;
>>
>>     case 1:
>>
>>       info->Set(vtkDataObject::DATA_TYPE_NAME(), "vtkTable");
>>
>>       break;
>>
>>     }
>>
>>   return 1;
>>
>> }
>>
>>
>>
>> 3. Get the informationObject from the outputVector
>>
>>    outputvector->GetInformationObject(1);
>>
>>
>>
>> 4. Get the table data
>>
>>      this->MetaData = dynamic_cast<vtkTable*>
>>
>>       (this->MetaDataOutInfo->Get(vtkDataObject::DATA_OBJECT()));
>>
>>
>>
>> 5. Add string to the table
>>
>>
>>
>>   vtkStringArray *MetaString = vtkStringArray::New();
>>
>>   MetaString->SetName("Meta Data");
>>
>>   MetaString->SetNumberOfComponents(1);
>>
>>   MetaString->InsertNextValue("This is a Test");
>>
>>   MetaString->InsertNextValue("Test 2");
>>
>>   MetaString->InsertNextValue("Test 3");
>>
>>   this->MetaData->AddColumn(MetaString);
>>
>>
>>
>>
>>
>> It is my understanding that this information should then be available 
>>in the  ParaView GUI.
>>
>>
>>
>>
>>
>> The problems I am having are this:
>>
>>
>>
>> 1.  When attempting to get both port information objects on the first 
>>call  to RequestInformation(), port 1 returns a NULL object.  On the 
>>SECOND call  to GetInformation(), both ports are available.
>>
>>
>>
>> 2.  All calls to RequestData() only provide access to port 0 in the 
>>Output  information Vector.  I can access port 1 if I utilize
>> this->getExecutive()->getOutputInformation(1)
>>
>>
>>
>> 3.  When using #2 to get the information, I populate, but I am unsure 
>> where/how things are supposed to be accessible in the GUI.
>>
>>
>>
>>
>>
>> What I am trying to do is be able to access the meta-data values from 
>>within  ParaView so that I can utilize data values, units, model run 
>>data, etc.
>>
>>
>>
>> If anyone can help me understand what is supposed to be going on, or 
>>if I am  completely doing something wrong, I would be grateful!  Am I 
>>missing some  steps? Do I need to have XML code to access the 
>>vtkTable?
>>
>>
>>
>>
>>
>> Thanks,
>>
>>
>>
>> Joshua Murphy
>>
>> Laboratory for Atmospheric and Space Physics
>>
>> University of Colorado, Boulder
>>
>>
>>
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at 
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the ParaView Wiki at:
>> http://paraview.org/Wiki/ParaView
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.paraview.org/mailman/listinfo/paraview
>>



More information about the ParaView mailing list