Page d'accueil Description du projet
#include "vtkPolyData.h"
#include "vtkAxes.h"
#include "vtkTubeFilter.h"
#include "vtkAppendPolyData.h"
#include "vtkPolyDataReader.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkCleanPolyData.h"
#include "vtkTriangleFilter.h"
#include "vtkLinearExtrusionFilter.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkDecimate.h"

#include "vtkWindowToImageFilter.h"
#include "vtkPostScriptWriter.h"


void main( int argc, char *argv[] )
{
    float range[2];
    float axeOrg[3] = {10,10,10};
    // Create the renderer, render window, and interactor
    vtkRenderer *ren1 = vtkRenderer::New();
    vtkRenderWindow *renWin = vtkRenderWindow::New();
    renWin->AddRenderer(ren1);
    vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
    iren->SetRenderWindow(renWin);

    // Read the data from a vtk file
    // links lines
    //  vtkPolyDataReader *line_reader = vtkPolyDataReader::New();
    // polygon layers
    vtkPolyDataReader *poly_reader = vtkPolyDataReader::New();
    // wotkspace
    vtkPolyDataReader *ws_reader = vtkPolyDataReader::New();

    if (argc >=3)
    {
        poly_reader->SetFileName(argv[1]);
        //  line_reader->SetFileName(argv[1]);
        ws_reader->SetFileName(argv[2]);
    }
    else
        return 1;

    poly_reader->Update();
    ws_reader->Update();



    vtkPolyData * polys;
    polys = poly_reader->GetOutput();

    vtkCleanPolyData *clean1 = vtkCleanPolyData::New();
    clean1->SetInput(polys);


    // triangulation
    /*
    vtkTriangleFilter *triangles = vtkTriangleFilter::New();
    triangles->SetInput(clean1->GetOutput());

    vtkDecimate *decim = vtkDecimate::New();
    decim->SetInput(triangles->GetOutput());
    */
    /*
    vtkCleanPolyData *clean2 = vtkCleanPolyData::New();
    clean2->SetInput(triangles->GetOutput());
    */
    vtkLinearExtrusionFilter *extrude = vtkLinearExtrusionFilter::New();
    extrude->SetInput(clean1->GetOutput());

    // Create the volume mapper and set the ray function and scalar input
    vtkPolyDataMapper *polyMapper = vtkPolyDataMapper::New();
    polyMapper->SetInput(extrude->GetOutput());

    

    vtkActor * polyAct = vtkActor::New();
    polyAct->SetMapper(polyMapper);



               

    
    // Axes
    vtkAxes * axes = vtkAxes::New();
    axes->SetScaleFactor(10);
    vtkTubeFilter *axesTubes = vtkTubeFilter::New();
    axesTubes->SetInput(axes->GetOutput());
    axesTubes->SetRadius(axes->GetScaleFactor()/25.0);
    axesTubes->SetNumberOfSides(6);
    vtkPolyDataMapper *axesMapper = vtkPolyDataMapper::New();
    axesMapper->SetInput(axesTubes->GetOutput());
    vtkActor *axesActor = vtkActor::New();
    axesActor->SetMapper(axesMapper);


    // Workspace
    vtkTubeFilter *wsTubes = vtkTubeFilter::New();
    wsTubes->SetInput(ws_reader->GetOutput());
    wsTubes->SetRadius(axes->GetScaleFactor()/15.0);
    wsTubes->SetNumberOfSides(6);
    vtkPolyDataMapper *wsMapper = vtkPolyDataMapper::New();
    wsMapper->SetInput(wsTubes->GetOutput());

    vtkActor * wsActor = vtkActor::New();
    wsActor->SetMapper(wsMapper);

    // Add this volume to the renderer and get a closer look
    ren1->SetBackground(1,1,1);
    ren1->AddActor(polyAct);
    ren1->AddActor(axesActor);
    ren1->AddActor(wsActor);


    
    
    renWin->SetSize(300,300);

    renWin->Render();


    iren->Start();

    vtkWindowToImageFilter *w2if = vtkWindowToImageFilter::New(); 
    vtkPostScriptWriter *rttiffw = vtkPostScriptWriter::New(); 
    w2if->SetInput(renWin);
    rttiffw->SetInput(w2if->GetOutput());
    rttiffw->SetFileName("output.eps"); 
    rttiffw->Write(); 

}



    //ren1->AddActor(lineAct);
    //  line_reader->Update();
    //polys->SetLines(vtkCellArray::New());

    /*
       vtkPolyData * lines;
       lines = line_reader->GetOutput();
       lines->SetPolys(vtkCellArray::New());
     */
    /*
    vtkAppendPolyData * append = vtkAppendPolyData::New();
    append->AddInput(lines);
    append->AddInput(extrude->GetOutput());
    */

    /*
    vtkPolyDataMapper *lineMapper = vtkPolyDataMapper::New();
    lineMapper->SetInput(lines);
    */

    /*
    vtkActor * lineAct = vtkActor::New();
    lineAct->SetMapper(lineMapper);
    */