[vtkusers] Converting Python code to C++

Vetria Byrd byrdv at cis.uab.edu
Mon Feb 16 17:44:41 EST 2004


I am trying to convert the following call back functions written in python C++

# Callback functions that actually generate streamlines.
def BeginInteraction(obj, event):
    global streamline
    streamline.VisibilityOn() 

def GenerateStreamlines(obj, event):
    global seeds, renWin
    obj.GetPolyData(seeds)
    renWin.Render()

def BeginInteraction2(obj, event):
    global streamline2
    streamline2.VisibilityOn()

def GenerateStreamlines2(obj, event):
    global seeds2, renWin
    obj.GetPolyData(seeds2)
    renWin.Render()

C++ code:

//globals
vtkActor *streamline = vtkActor::New()
;
vtkPolyData *seeds = vtkPolyData::New()
;
vtkRenderWindow *renWin = vtkRenderWindow::New()
;
vtkActor *streamline2 = vtkActor::New()
;
vtkPolyData *seeds2 = vtkPolyData::New()
;

class vtkMyCallback : public vtkCommand
{
public:
  static vtkMyCallback *New() 
    { return new vtkMyCallback; }
  
  virtual void BeginInteraction(vtkObject obj, unsigned long ) {
      streamline->VisibilityOn() ;
}

  virtual void GenerateStreamlines(vtkObject *obj, unsigned long ){
    obj->GetPolyData(seeds)
;
    renWin->Render();
}

  virtual void BeginInteraction2(vtkObject *obj, unsigned long ) {
    streamline2->VisibilityOn();
}

  virtual void GenerateStreamlines2(vtkObject obj, unsigned long ) {
     obj->GetPolyData(seeds2);
    renWin->Render()
 ; }
  
};


In the program:
:
:
vtkMyCallback *BeginInteraction = vtkMyCallback::New();
vtkMyCallback *GenerateStreamlines = vtkMyCallback::New();
vtkMyCallback *BeginInteraction2 = vtkMyCallback::New();
vtkMyCallback *GenerateStreamlines2 = vtkMyCallback::New();


// Associate the line widget with the interactor and setup callbacks.
:
:
lineWidget->AddObserver(vtkCommand::StartInteractionEvent, BeginInteraction)
;
lineWidget->AddObserver(vtkCommand::InteractionEvent, GenerateStreamlines)
;

:
:
lineWidget2->AddObserver(vtkCommand::StartInteractionEvent, BeginInteraction2)
;
lineWidget2->AddObserver(vtkCommand::EndInteractionEvent, GenerateStreamlines2)
;


I am getting the following error messages:

In method `void vtkMyCallback::GenerateStreamlines(vtkObject *, long unsigned int)':
no matching function for call to `vtkObject::GetPolyData (vtkPolyData *)'

In method `void vtkMyCallback::GenerateStreamlines2(vtkObject *, long unsigned int)':
no matching function for call to `vtkObject::GetPolyData (vtkPolyData *)'

What am I doing wrong?

Thanks,
Vetria




More information about the vtkusers mailing list