[vtkusers] vtkPolyPlane problem

Matteo sendtomatteo at yahoo.it
Wed Apr 5 09:24:32 EDT 2017


Hi
Let me add my test code to my previous message:


vtkSmartPointer<vtkStructuredGrid> structuredGrid =
         vtkSmartPointer<vtkStructuredGrid>::New();

     vtkSmartPointer<vtkPoints> points =
         vtkSmartPointer<vtkPoints>::New();

     const int Size=20;

     int i, j, k;

     for(k = 0; k < Size; k++)
         for(j = 0; j < Size; j++)
             for(i = 0; i < Size; i++)
                 points->InsertNextPoint(i, j, k);

     // Specify the dimensions of the grid
     structuredGrid->SetDimensions(Size,Size,Size);
     structuredGrid->SetPoints(points);

     // Cutter

#if 0
     vtkSmartPointer<vtkPlane> plane =
         vtkSmartPointer<vtkPlane>::New();
     plane->SetOrigin(Size/2,0,0);
     plane->SetNormal(1,0,0);
#else
     const int N=3;

     const double Step10=(Size-1)/10.0;

     vtkPoints *cutPts = vtkPoints::New();
     cutPts->SetNumberOfPoints(N);

     {
         i=0;
         cutPts->SetPoint(i++, 1*Step10, 1*Step10, 0);
         cutPts->SetPoint(i++, 5*Step10, 5*Step10, 0);
         cutPts->SetPoint(i++, 5*Step10, 8*Step10, 0);
         ASSERT(i==N);
     }

     int* idCutPts = new int[N];
     for(i = 0; i < N; i++)
         idCutPts[i] = i;

     vtkSmartPointer<vtkPolyLine> PolyLine =
         vtkSmartPointer<vtkPolyLine>::New();
     PolyLine->Initialize(N, idCutPts, cutPts);

     vtkSmartPointer<vtkPolyPlane> plane =
         vtkSmartPointer<vtkPolyPlane>::New();
     plane->SetPolyLine(PolyLine);

#endif

     vtkSmartPointer<vtkCutter> cutter =
         vtkSmartPointer<vtkCutter>::New();
         cutter->SetCutFunction(plane);
         cutter->SetInputData(structuredGrid);
         cutter->Update();

     vtkSmartPointer<vtkPolyDataMapper> cutterMapper =
         vtkSmartPointer<vtkPolyDataMapper>::New();
     cutterMapper->SetInputConnection( cutter->GetOutputPort());

     // Create plane actor
     vtkSmartPointer<vtkActor> planeActor =
         vtkSmartPointer<vtkActor>::New();
         planeActor->GetProperty()->SetColor(1.0,1.0,0);
         planeActor->GetProperty()->SetLineWidth(2);
         planeActor->SetMapper(cutterMapper);

     // Create a mapper and actor
     vtkSmartPointer<vtkDataSetMapper> mapper =
         vtkSmartPointer<vtkDataSetMapper>::New();
#if VTK_MAJOR_VERSION <= 5
mapper->SetInputConnection(structuredGrid->GetProducerPort());
#else
     mapper->SetInputData(structuredGrid);
#endif

     vtkSmartPointer<vtkActor> actor =
         vtkSmartPointer<vtkActor>::New();
         actor->SetMapper(mapper);
         actor->GetProperty()->SetRepresentationToWireframe();

     // Create a renderer, render window, and interactor
     vtkSmartPointer<vtkRenderer> renderer =
         vtkSmartPointer<vtkRenderer>::New();
     vtkSmartPointer<vtkRenderWindow> renderWindow =
         vtkSmartPointer<vtkRenderWindow>::New();
         renderWindow->AddRenderer(renderer);
     vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
         vtkSmartPointer<vtkRenderWindowInteractor>::New();
         renderWindowInteractor->SetRenderWindow(renderWindow);

     // Add the actor to the scene
     renderer->AddActor(actor);
     renderer->AddActor(planeActor);
     renderer->SetBackground(.3, .6, .3); // Background color

     // Render and interact
     renderWindow->Render();
     renderWindowInteractor->Start();




Il 05/04/2017 10:48, Matteo via vtkusers ha scritto:
> Hi
> I need to use vtkCutter to cut a vtkStructuredGrid, but not using a 
> simple vtkPlane: what I need is something more complex.
> I need to use a polyline, and extrude it on Z direction, to specify a 
> surface more complex then a simple vtkPlane.
> It looks that vtkPolyPlane is what I need, but when I use it I have a 
> problem: the cut is done quite correctly along the polyline specified, 
> but also appear some other piece of cut in some other position.
> The picture attached shows the problem.
> I tried more grid sizes, and different polylines (different length or 
> shapes), but there is quite always this strange extra surfaces added.
> I am not sure if it is a correct result of this filter.... or a bug.
> Anyone can help?
> Matteo
>
>
>
>
>
> _______________________________________________
> 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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>
> Search the list archives at: http://markmail.org/search/?q=vtkusers
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170405/279ee485/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/png
Size: 24897 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170405/279ee485/attachment.png>


More information about the vtkusers mailing list