Thanks Utkarsh,

I’ve decided to stick with my own solution for the time being – having to 
create extra vtkSMxxx classes for all the sources adds too much maintenance to 
the code, whereas just adding an #include seems cleaner. When my immediate 
deadline has passed I’ll look again at it.

Thanks

JB

From: Utkarsh Ayachit 
<[email protected]<mailto:[email protected]>>
Date: Thursday 24 September 2015 17:57
To: cscs <[email protected]<mailto:[email protected]>>
Cc: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Subject: Re: [Paraview] Send an array from client to server

Attached is the solution, there a small mistake in my origin script:

 vtkClientServerStream stream;
 stream << vtkClientServerStream::Invoke
              << VTKOBJECT(proxy)
               << SetValues
               << maxValues
               << stream.InsertArray(values, maxValues)
               << vtkClientServerStream::End;

Utkarsh

On Mon, Sep 21, 2015 at 8:40 AM, Utkarsh Ayachit 
<[email protected]<mailto:[email protected]>> wrote:
John,

That looks too convoluted. I haven't done this in a while so I'll need
to refresh my memory a bit. I'll make an example today and then get
back to you.

Utkarsh

On Sun, Sep 20, 2015 at 4:43 AM, Biddiscombe, John A. 
<[email protected]<mailto:[email protected]>> wrote:
> Just following up so that when I’ve forgotten how to do it ...
>
> This works
>
> #define VTK_WRAPPING_CXX
> #include "vtkClientServerStream.h"
>
> ...
>
>
> //  void SetSelectedGIds(int n, const int *Ids);
>   void SetSelectedGIds(int N, int Ids[]);
> //BTX
>   void SetSelectedGIds(int N, vtkClientServerStreamDataArg<int> &temp0);
> //ETX
>
> And in the cxx, use the vtkClientServerStreamDataArg operator () to get
> the T* pointer.
>
> Then in the client GUI
>
> vtkClientServerStream::Array array =
>   {
>     vtkClientServerStream::int32_array,
>     static_cast<vtkTypeUInt32>(numValues),
>
> static_cast<vtkTypeUInt32>(sizeof(vtkClientServerStream::int32_value)*numVa
> lues),
>     (int*)(data)
>   };
>
>
>   vtkClientServerStream stream;
>   stream << vtkClientServerStream::Invoke
>     << VTKOBJECT(proxy)
>     << "SetSelectedGIds"
>     << numValues
>     << array;
>   stream << vtkClientServerStream::End;
>
> This correctly inserts the array and the type,size,data vars so that the
> server reads them as expected.
>
> I’m not happy about the fact that we have to spoof the wrapper generators,
> but at least I don’t need to modify the ClientServerStreamArg<>
> implementation.
>
>
>
> JB
>

_______________________________________________
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

Search the list archives at: http://markmail.org/search/?q=ParaView

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/paraview

Reply via email to