[Paraview] How to pass array from Server to Client with as 'Information Helper"
Utkarsh Ayachit
utkarsh.ayachit at kitware.com
Fri Mar 26 16:40:09 EDT 2010
Try returning a vtkIntArray from your reader instead and use
<IntArrayInformationHelper /> as the information helper. (Look at it's
use in readers.xml).
Utkarsh
On Fri, Mar 26, 2010 at 4:36 PM, Michael Jackson
<mike.jackson at bluequartz.net> wrote:
> The problem is down in a generated file on the server side.
>
> if (!strcmp("GetNeighborList",method) && msg.GetNumberOfArguments(0) == 3)
> {
> vtkClientServerStreamDataArg<int > temp0(msg, 0, 2);
> if(temp0)
> {
> op->GetNeighborList(temp0);
> return 1;
> }
> }
>
> The problem is that msg.GetNumberOfArguments(0) returns 2 and NOT 3. I have
> no idea of the internals of the msg object to try and figure out what is
> trying to be passed. Is the client sending in a index also? 2 pointers? no
> idea.
>
> I'll just assume from this that it is basically impossible to pass an array
> from the server to the Client in an "Information Only" fashion. I guess I
> can encode the values to a string and send that. Seems odd to have to encode
> the data into a string...
>
> If anyone else has a better Idea I would much appreciate it.
> ___________________________________________________________
> Mike Jackson www.bluequartz.net
> Principal Software Engineer mike.jackson at bluequartz.net
> BlueQuartz Software Dayton, Ohio
>
>
> On Mar 26, 2010, at 3:23 PM, Michael Jackson wrote:
>
>> I have a custom reader. Part of the reader is getting a "NeighborList"
>> which is an vtkIntArray object although I have declared the following
>> methods in my "reader" class:
>>
>> int* GetNeighborList();
>> void GetNeighborList(int* list);
>> vtkIdType GetNumberOfNeighbors();
>>
>> And in my ServerManagerXML file I have the following:
>> <IntVectorProperty name="NeighborList"
>> command="GetNeighborList"
>> argument_is_array="1"
>> number_of_elements="0"
>> repeat_command="0"
>> number_of_elements_per_command="1"
>> use_index="0" >
>> <SimpleIntInformationHelper />
>> <Documentation>
>> This property lists the neighbors of the grain
>> </Documentation>
>> </IntVectorProperty>
>>
>> On the Client side I have the following bit of code to populate a
>> QListWidget:
>>
>> void pqH5TiDataReaderPanel::updateNeighborList(QListWidget* qListWidget,
>> QString property)
>> {
>> vtkSMProperty* smProperty =
>> this->proxy()->GetProperty(property.toAscii());
>> if (NULL == smProperty)
>> {
>> std::string msg = "SMProperty [int] was NULL for ";
>> msg.append(property.toAscii() );
>> DebugTrace(<< msg.c_str() );
>> return;
>> }
>> vtkSMIntVectorProperty* intProperty
>> = vtkSMIntVectorProperty::SafeDownCast(smProperty);
>> if (NULL == intProperty)
>> {
>> std::string msg = "Could not SafeDownCase to vtkSMIntVectorProperty for
>> property ";
>> msg.append(property.toAscii() );
>> DebugTrace(<< msg.c_str() );
>> return;
>> }
>> //intProperty->GetArgumentIsArray();
>> int* elements = intProperty->GetElements();
>> int nElements = intProperty->GetNumberOfElements(); //<== ALWAYS 0
>> qListWidget->clear(); // Remove all the content
>>
>> for (int i = 0; i < nElements; ++i)
>> {
>> qListWidget->addItem(QString::number(elements[i])); //<==== NEVER GETS
>> HERE
>> }
>> }
>>
>> So, what am I doing wrong? I have tried reading through the relevant
>> sections of the "ParaView Guide" but nothing is really jumping out. Also
>> went looking for examples somewhere in the ParaView source code but came up
>> empty. The ContourWidget is close but it "sends" its array, it never
>> receives one from the server.
>>
>> Any pointers would be great and much appreciated.
>> ___________________________________________________________
>> Mike Jackson www.bluequartz.net
>> Principal Software Engineer mike.jackson at bluequartz.net
>> BlueQuartz Software Dayton, Ohio
>>
>>
>
> _______________________________________________
> 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