# Cutter

VTKExamples/Java/Miscellaneous/Cutter

### Description

This example demonstrates how to use vtkCutter by cutting through a cube.

### Code

Cutter.java

    import vtk.*;

    public class Cutter
    {

      // Loading Native Libraries.
      // Now it works in eclipse without any issues.
      static {
        if (!vtkNativeLibrary.LoadAllNativeLibraries()) {
          for (vtkNativeLibrary lib : vtkNativeLibrary.values()) {
            if (!lib.IsLoaded()) {
              System.out.println(lib.GetLibraryName() + " not loaded");
            }
          }
        }
        vtkNativeLibrary.DisableOutputWindow(null);
      }

      public static void main(String[] args)
      {
        vtkCubeSource cube = new vtkCubeSource();
        cube.SetXLength(40);
        cube.SetYLength(30);
        cube.SetZLength(20);
        vtkPolyDataMapper cubeMapper = new vtkPolyDataMapper();
        cubeMapper.SetInputConnection(cube.GetOutputPort());

        //create a plane to cut,here it cuts in the XZ direction (xz normal=(1,0,0);XY =(0,0,1),YZ =(0,1,0)
        vtkPlane plane = new vtkPlane();
        plane.SetOrigin(10,0,0);
        plane.SetNormal(1,0,0);

        //create cutter
        vtkCutter cutter = new vtkCutter();
        cutter.SetCutFunction(plane);
        cutter.SetInput(cubeMapper.GetInput());
        cutter.Update();

        vtkPolyDataMapper cutterMapper = new vtkPolyDataMapper();
        cutterMapper.SetInputConnection( cutter.GetOutputPort());

        //create plane actor
        vtkActor planeActor = new vtkActor();
        planeActor.GetProperty().SetColor(1.0,1,0);
        planeActor.GetProperty().SetLineWidth(2);
        planeActor.SetMapper(cutterMapper);

        //create cube actor
        vtkActor cubeActor = new vtkActor();
        cubeActor.GetProperty().SetColor(0.5,1,0.5);
        cubeActor.GetProperty().SetOpacity(0.5);
        cubeActor.SetMapper(cubeMapper);

        //create renderers and add actors of plane and cube
        vtkRenderer ren = new vtkRenderer();
        ren.AddActor(planeActor);
        ren.AddActor(cubeActor);

        //Add renderer to renderwindow and render
        vtkRenderWindow renWin = new vtkRenderWindow();
        renWin.AddRenderer(ren);
        renWin.SetSize(600, 600);

        vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
        iren.SetRenderWindow(renWin);
        ren.SetBackground(0,0,0);
        renWin.Render();

        iren.Start();
      }
    }