Dear Utkarsh,
I tried to reproduce the error as described in my previous email, but
haven't been able to until now, don't know what happend. The attached code
attaches to a pvserver at localhost:11111 and adds a sphere every half
second. Unfortunately it crashes as soon as I connect ParaView to the same
server.
I guess I'll have to give up programming ParaView and work the old way,
writing VTK files and loading them in ParaView. It is way too complicated.

Peter

2016-06-24 7:08 GMT+02:00 Peter Debuchev <peterdebuc...@gmail.com>:

> Thank you for the patch. There is still something missing. If I modify the
> custom client such that it adds an object every half second or so, then
> first start this clients and then ParaView after a few seconds, ParaView
> misses one of the objects. ParaView finds those objects that are added
> before ParaView starts and those that are added later. But during ParaView
> startup one of the objects is lost.
> I'll see if I can make this reproducible and send a code example in the
> next days.
>
> Peter
>
> 2016-06-22 17:25 GMT+02:00 Utkarsh Ayachit <utkarsh.ayac...@kitware.com>:
>
>> > can you give a quick update whether the suggested bug fix is likely to
>> be
>> > solved:
>>
>> Here you go:
>> https://gitlab.kitware.com/paraview/paraview/merge_requests/844
>>
>> Once the dashboards come back clean, this will get merged. If do get
>> around to testing it, I'd suggest getting involved and giving the
>> merge-request a +1 ;).
>>
>> Utkarsh
>>
>
>
#include "vtkSMSession.h"
#include "vtkSMSessionClient.h"
#include "vtkProcessModule.h"
#include "vtkPVOptions.h"
#include "vtkInitializationHelper.h"
#include "vtkSMProxy.h"
#include "vtkSMProxyManager.h"
#include "vtkSMSessionProxyManager.h"
#include "vtkSMProxy.h"
#include "vtkSMPropertyHelper.h"
#include "vtkSMParaViewPipelineController.h"
#include "vtkSMProxy.h"
#include "vtkSMRepresentationProxy.h"
#include "vtkCollection.h"
#include "vtkSMRenderViewProxy.h"

#include "vtkSMCollaborationManager.h"
#include "vtkSMMessage.h"
#include "vtkCommand.h"
#include "vtkNetworkAccessManager.h"

#include "vtkRenderWindowInteractor.h"
#include <sstream>

using namespace std;

vtkSMSessionProxyManager* pxm;
vtkSMRenderViewProxy *view=NULL;

void createView(){
  vtkCollection *coll=vtkCollection::New();
  // try to find view
  pxm->GetProxies("views",coll);
  view=vtkSMRenderViewProxy::SafeDownCast(coll->GetItemAsObject(0));
  // if not found, create new view
  if (view==NULL){
    view=vtkSMRenderViewProxy::SafeDownCast(pxm->NewProxy("views","RenderView"));
  }
  view->UpdateVTKObjects();
  pxm->RegisterProxy("views","View1",view);
}

void createObject(int n){
  if (view==NULL) return;
  vtkSMSourceProxy *sphere=vtkSMSourceProxy::SafeDownCast(pxm->NewProxy("sources","SphereSource"));
  double pos[3]={(double)n,0.,0.};
  vtkSMPropertyHelper(sphere,"Center").Set(pos,3);
  sphere->UpdateVTKObjects();

  //vtkSMRepresentationProxy *repr=view->CreateDefaultRepresentation(sphere,0);
  vtkSMRepresentationProxy *repr=vtkSMRepresentationProxy::SafeDownCast(pxm->NewProxy("representations","SurfaceRepresentation"));
  vtkSMPropertyHelper(repr,"Input").Set(sphere,0);

  vtkSMPropertyHelper(view,"Representations").Add(repr);
  view->UpdateVTKObjects();
  repr->UpdateVTKObjects();

  stringstream name;
  name<<"Sphere"<<n;
  pxm->RegisterProxy("sources",name.str().c_str(),sphere);
  name<<"Repr"<<n;
  pxm->RegisterProxy("representations",name.str().c_str(),repr);
}

class Callback: public vtkCommand{
private:
  int count;
public:
  static Callback* New(){
    Callback *cb=new Callback;
    cb->count=0;
    return cb;
  }
  virtual void Execute(vtkObject* caller, unsigned long event, void* data) {
    count++;
    if (event==vtkCommand::TimerEvent){ //create new sphere at xyz={count,0.,0.}      
        createObject(count);
    }
    while(vtkProcessModule::GetProcessModule()->GetNetworkAccessManager()->ProcessEvents(1)){
    }
  }
};

int main(int argc, char* argv[]){
  vtkPVOptions *options=vtkPVOptions::New();
  vtkInitializationHelper::Initialize(argc,argv,vtkProcessModule::PROCESS_CLIENT,options);

  vtkSMSessionClient *session=vtkSMSessionClient::New();
  session->Connect("cs://localhost:11111");

  vtkSMParaViewPipelineController* smcontroller=vtkSMParaViewPipelineController::New();
  smcontroller->InitializeSession(session);

  pxm = session->GetSessionProxyManager();

  //Collaboration:
  vtkSMCollaborationManager *collaboration=session->GetCollaborationManager();
  collaboration->SetSession(session);
  collaboration->UpdateUserInformations();

  createView();
  createObject(0);

    view->MakeRenderWindowInteractor(true);
    vtkRenderWindowInteractor *iren=view->GetInteractor();
    iren->Initialize();
    Callback *timer=Callback::New();
    iren->AddObserver(vtkCommand::TimerEvent,timer);
    iren->CreateRepeatingTimer(500);
    view->GetInteractor()->Start();

  cout<<"Closing Session..."<<endl;
  session->CloseSession();

  vtkInitializationHelper::Finalize();
}
_______________________________________________
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