# I don't know how to solve this VTK Method error

**URL:** https://discourse.vtk.org/t/i-dont-know-how-to-solve-this-vtk-method-error/1029
**Category:** Support
**Created:** [May 27, 2019, 8:07am UTC](https://discourse.vtk.org/t/i-dont-know-how-to-solve-this-vtk-method-error/1029 "2019-05-27T08:07:10Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Script\_K](https://discourse.vtk.org/user_avatar/discourse.vtk.org/script_k/32/476_2.png) [@Script\_K](https://discourse.vtk.org/u/Script_K)
#### Post date: [May 27, 2019, 8:07am UTC](https://discourse.vtk.org/t/i-dont-know-how-to-solve-this-vtk-method-error/1029/1 "2019-05-27T08:07:10Z")

</div>

I am using VTK in Python now. And This is the first time I have been programming with Python. After outputting the 3D object, we want to output the cross section of the object using the `AddClippingPlane` function. However, the following error will be displayed and it will not be executed:

> TypeError: unbound method requires a vtkRenderingCorePython.vtkAbstractMapper as the first argument.

When you see the attached code, can you tell me what’s wrong? I would appreciate a lot your help.  
Thank you

```auto
import vtk
import sys
from PyQt5 import QtCore,QtWidgets
from PyQt5.QtGui import *
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from PyQt5.QtWidgets import QMainWindow, QApplication
from foo import Ui_MainWindow
from PyQt5 import Qt

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__ (self, parent=None):
        super(MainWindow, self). __init__ (parent)
        self.setMouseTracking(True)
        self.setupUi(self) 
        self.pushButton.clicked.connect(self.OpenVTK)     
        self.pushButton2.clicked.connect(
            QtCore.QCoreApplication.instance().quit)

    def OpenVTK(self):
        self.setMouseTracking(True)

        self.vtkWidget = QVTKRenderWindowInteractor(self.frame)
        self.vl = Qt.QVBoxLayout()
        self.vl.addWidget(self.vtkWidget)
        self.ren = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        reader = vtk.vtkDICOMImageReader()
        reader.SetDirectoryName(FilePath)

        reader.Update()
        colors = vtk.vtkNamedColors()
        colors.SetColor("BkgColor", [51, 77, 102, 255])
        boneExtractor = vtk.vtkMarchingCubes()
        boneExtractor.SetInputConnection(reader.GetOutputPort())
        boneExtractor.SetValue(0, 1000)
        boneStripper = vtk.vtkStripper()
        boneStripper.SetInputConnection(boneExtractor.GetOutputPort())
        boneMapper = vtk.vtkPolyDataMapper()
        boneMapper.SetInputConnection(boneStripper.GetOutputPort())
        boneMapper.ScalarVisibilityOff()
        plane1 = vtk.vtkPlane()
        plane1.SetOrigin(0.05, 0.0, 0.0) # [*1]
        plane1.SetNormal(-1.0, 0.0, 0.0)

        bone = vtk.vtkActor()
        bone.SetMapper(boneMapper)
        bone.GetProperty().SetDiffuseColor(colors.GetColor3d("Ivory"))
        bone = vtk.vtkAbstractMapper.AddClippingPlane(plane1)

        bwLut = vtk.vtkLookupTable()
        bwLut.SetTableRange(0, 2000)
        bwLut.SetSaturationRange(0, 1)
        bwLut.SetHueRange(0, 0)
        bwLut.SetValueRange(0, 1)
        bwLut.Build() 

        sagittalColors = vtk.vtkImageMapToColors()
        sagittalColors.SetInputConnection(reader.GetOutputPort())
        sagittalColors.SetLookupTable(bwLut)
        sagittalColors.Update()

        sagittal = vtk.vtkImageActor()
        sagittal.GetMapper().SetInputConnection(sagittalColors.GetOutputPort())
        sagittal.SetDisplayExtent(250, 250, 0, 501, 0, 500) 

        aCamera = vtk.vtkCamera()
        aCamera.SetViewUp(0, 0, -1)
        aCamera.SetPosition(0, -1, 0)
        aCamera.SetFocalPoint(0, 0, 0)
        aCamera.ComputeViewPlaneNormal()
        aCamera.Azimuth(0.0)
        aCamera.Elevation(0.0)

        self.ren.AddActor(sagittal)
        self.ren.AddActor(bone)
        self.ren.SetActiveCamera(aCamera)
        self.show()
        self.ren.ResetCamera()
        self.frame.setLayout(self.vl)
        aCamera.Dolly(1.0)

        self.ren.ResetCameraClippingRange()
        self.show()
        self.iren.Initialize()
        self.iren.Start()

if __name__ == " __main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

```

---

<div class="post-metadata">

### Author: ![Aron\_Helser](https://discourse.vtk.org/user_avatar/discourse.vtk.org/aron_helser/32/14_2.png) [@Aron\_Helser](https://discourse.vtk.org/u/Aron_Helser)
#### Post date: [May 27, 2019, 3:30pm UTC](https://discourse.vtk.org/t/i-dont-know-how-to-solve-this-vtk-method-error/1029/2 "2019-05-27T15:30:27Z")

</div>

Yes, vtkAbstractMapper is an abstract C++ class, which means it cannot be used directly, it must be used from an inherited class object.  
Take a look at [https://github.com/Kitware/VTK/blob/master/Examples/VolumeRendering/Python/VolumePicker.py](https://github.com/Kitware/VTK/blob/master/Examples/VolumeRendering/Python/VolumePicker.py)

which has a use of AddClippingPlane with the volume mapper.

HTH,

Aron
