[vtkusers] Hi
Mathieu Malaterre
mathieu.malaterre at kitware.com
Mon Jul 26 09:50:13 EDT 2004
LinX,
You need to add:
#include "vtkPolyData.h"
VTK uses forward declaration, thus you explicitely need to include each
class you use
HTH
Mathieu
LinX wrote:
> Hi everybody.
>
> I'm starting with VTK in C++. The book is written primarily for Tcl Users so
> I have been translating examples to Cxx 'cause as you know it isn't pretty
> hard.
>
> I had a problem translating the ClipCow.tcl code with the implementation of
> the vtkCutter class.
>
> The code I used is
>
>
>
>
>
> #include"vtkPolyDataMapper.h"
> #include"vtkActor.h"
> #include"vtkRenderer.h"
> #include"vtkRenderWindow.h"
> #include"vtkRenderWindowInteractor.h"
> #include"vtkPlane.h"
> #include"vtkClipPolyData.h"
> #include"vtkPolyDataReader.h"
> #include"vtkPolyDataNormals.h"
> #include"vtkCutter.h"
>
> int main(void){
> vtkPolyDataReader *Reader=vtkPolyDataReader::New();
> Reader->SetFileName("a.vtk");
>
> vtkPolyDataNormals *Normals=vtkPolyDataNormals::New();
> Normals->SetInput(Reader->GetOutput());
>
> vtkPlane *Plane=vtkPlane::New();
> //Plane->SetOrigin(106,156,90);
> //Plane->SetNormal(1,0,0);
> Plane->SetOrigin(168,107,126);
> Plane->SetNormal(0,0,1);
>
> vtkClipPolyData *Clipper=vtkClipPolyData::New();
> Clipper->SetInput(Normals->GetOutput());
> Clipper->SetClipFunction(Plane);
> Clipper->GenerateClippedOutputOn();
>
> vtkPolyDataMapper *CylinderMapper=vtkPolyDataMapper::New();
> CylinderMapper->SetInput(Clipper->GetOutput());
>
> vtkActor *CylinderActor=vtkActor::New();
> CylinderActor->SetMapper(CylinderMapper);
>
> vtkPolyDataMapper *RestMapper=vtkPolyDataMapper::New();
> RestMapper->SetInput(Clipper->GetClippedOutput());
>
> vtkActor *RestActor=vtkActor::New();
> RestActor->SetMapper(RestMapper);
>
> vtkRenderer *Renderer=vtkRenderer::New();
> Renderer->AddActor(CylinderActor);
> Renderer->AddActor(RestActor);
> Renderer->SetBackground(.2,.2,.5);
>
> vtkRenderWindow *RenderWindow=vtkRenderWindow::New();
> RenderWindow->AddRenderer(Renderer);
>
> vtkRenderWindowInteractor *Interactor=vtkRenderWindowInteractor::New();
> Interactor->SetRenderWindow(RenderWindow);
> Interactor->Initialize();
> Interactor->Start();
>
> return 0;
> }
>
>
>
>
>
> This code works fine, but when I use
>
>
>
>
> vtkCutter *cutEdges=vtkCutter::New();
> cutEdges->SetInput(Normals->GetOutput());
>
>
>
>
> the pipeline breaks and this message is printed when making
>
>
>
>
>
> [19:59:50] XowL> make
> Building dependencies cmake.check_depends...
> -- Loading VTK CMake commands
> -- Loading VTK CMake commands - done
> Building object file Cylinder.o...
> /home/xowl/Examples/Examples/VTK/Clip/Cylinder.cxx: In function `int main()':
> /home/xowl/Examples/Examples/VTK/Clip/Cylinder.cxx:43: error: no matching
> function for call to `vtkCutter::SetInput(vtkPolyData*)'
> /home/xowl/local/include/vtk/vtkDataSetToPolyDataFilter.h:44: error:
> candidates
> are: virtual void vtkDataSetToPolyDataFilter::SetInput(vtkDataSet*)
> make[1]: *** [Cylinder.o] Error 1
> make: *** [default_target] Error 2
> [19:59:56] XowL>
>
>
>
>
>
> And I don't know the reason.
>
> If somebody knows why this happen or what am I doing bad I would appreciate
> information.
>
> Thanks
>
> LinX
>
> P.D. I apologize for my terrible English.
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list