vtkCutter

Hello all,
I am new in VTK please help me to resolve the following issue.
I have volume data when i try to pass in vtkCutter function its give me the following error

volume = vtk.vtkVolume()
volume.SetMapper(volumeMapper)
volume.SetProperty(volumeProperty)

#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)
plane=vtk.vtkPlane()
plane.SetOrigin(10,0,0)
plane.SetNormal(1,0,0)

#create cutter
cutter=vtk.vtkCutter()
cutter.SetCutFunction(plane)
cutter.SetInputConnection(volume.GetOutputPort())
cutter.Update()
cutterMapper=vtk.vtkPolyDataMapper()
cutterMapper.SetInputConnection( cutter.GetOutputPort())

#create plane actor
planeActor=vtk.vtkActor()
planeActor.GetProperty().SetColor(1.0,1,0)
planeActor.GetProperty().SetLineWidth(2)
planeActor.SetMapper(cutterMapper)

AttributeError :Traceback (most recent call last)
in
7 cutter=vtk.vtkCutter()
8 cutter.SetCutFunction(plane)
----> 9 cutter.SetInputConnection(volume.GetOutputPort())
10 cutter.Update()
11 cutterMapper=vtk.vtkPolyDataMapper()

AttributeError: ‘vtkRenderingCorePython.vtkVolume’ object has no attribute ‘GetOutputPort’

…if you already have a volume object this should work:

    #vol = vtkVolume()
    boxWidget = vtk.vtkBoxWidget()
    boxWidget.SetInteractor(vp.interactor)
    boxWidget.SetPlaceFactor(1.0)

    renderer.AddVolume(vol)
    interactor.Render()

    planes = vtk.vtkPlanes()
    def clipVolumeRender(obj, event):
        obj.GetPlanes(planes)
        vol.GetMapper().SetClippingPlanes(planes)

    boxWidget.SetInputData(vol.GetMapper().GetInput())
    boxWidget.OutlineCursorWiresOn()
    boxWidget.GetSelectedOutlineProperty().SetColor(1, 0, 1)
    boxWidget.GetOutlineProperty().SetColor(0.2, 0.2, 0.2)
    boxWidget.GetOutlineProperty().SetOpacity(0.7)
    boxWidget.SetPlaceFactor(1.0)
    boxWidget.PlaceWidget()
    boxWidget.InsideOutOn()
    boxWidget.AddObserver("InteractionEvent", clipVolumeRender)

    renderer.ResetCamera()
    boxWidget.On()
    interactor.Start()

check out also here.

Thank you for your reply, definately i will try this.
But basically i am looking for the cutter function which cuts the 3d volume dicom image,
which is exactly done in ITK-SNAP.

When i used vtkplotter.addons.addCutterTool( volume ) it gives me following error :

AttributeError Traceback (most recent call last) in
----> 1 vtkplotter.addons.addCutterTool(volume)

c:\users\s.jadhav\appdata\local\continuum\anaconda3\envs\cad\lib\site-packages\vtkplotter\addons.py in addCutterTool(actor)
527 “”"
528 if isinstance(actor, vtk.vtkVolume):
–> 529 return _addVolumeCutterTool(actor)
530 elif isinstance(actor, vtk.vtkImageData):
531 from vtkplotter import Volume

c:\users\s.jadhav\appdata\local\continuum\anaconda3\envs\cad\lib\site-packages\vtkplotter\addons.py in _addVolumeCutterTool(vol)
600 def _addVolumeCutterTool(vol):
601 vp = settings.plotter_instance
–> 602 if not vp.renderer:
603 save_int = vp.interactive
604 vp.show(interactive=0)

AttributeError: ‘NoneType’ object has no attribute ‘renderer’

Please submit an issue here.