[vtkusers] Python wrapping a custom class
Kit Chambers
kit.chambers.kc at gmail.com
Fri Jul 29 11:02:29 EDT 2016
Hi,
I am trying to wrap a custom class derived from vtkImageData in python. And it works except for when i try to access my custom methods. For example:
import vtkNewDataPython as idp
mydata = idp.vtkNewData()
print "\nvtkImageData functionality"
mydata.SetDimensions(2,3,1)
dims = mydata.GetDimensions()
print "image dimensions =",dims
print "Number of points: ",mydata.GetNumberOfPoints()
print "Number of cells: ",mydata.GetNumberOfCells()
print "\ncustom functionality"
mydata.set_myvalue()
print "Myvalue = ", mydata.get_myvalue()
Produces:
vtkImageData functionality
image dimensions = (2, 3, 1)
Number of points: 6
Number of cells: 2
custom functionality
Traceback (most recent call last):
File "./pytest.py", line 14, in <module>
mydata.set_myvalue()
AttributeError: set_myvalue
Basically it is doing just fine up until I try to call a custom method
The class looks like this:
#include "vtkImageData.h"
class VTK_EXPORT vtkNewData: public vtkImageData
{
public:
static vtkNewData *New();
void set_myvalue(){
this->myvalue=3;
}
int get_myvalue(){
return this->myvalue;
}
int myvalue;
};
The CmakeLists.txt is adapted mostly from https://github.com/paulmelis/vtk-wrapping-example <https://github.com/paulmelis/vtk-wrapping-example> and looks like this
#######################################
# Pre-requisites
# C++11 flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11")
# VTK
find_package(VTK REQUIRED
vtkCommonCore
vtkCommonDataModel
vtkWrappingPythonCore
)
include(${VTK_USE_FILE})
# Python and vtk wrapping
find_package(PythonLibs 2.7 EXACT REQUIRED)
include(vtkWrapPython)
include_directories("${PYTHON_INCLUDE_PATH}")
#######################################
# Building vtkNewData
add_library(vtkNewData SHARED vtkNewData.cxx)
TARGET_LINK_LIBRARIES(vtkNewData ${VTK_LIBRARIES} )
if(APPLE)
set_target_properties(vtkNewData PROPERTIES SUFFIX ".so")
endif()
#######################################
# Wrapping vtkNewData
vtk_wrap_python3(vtkNewDataPython vtkNewDataPython_SRCS vtkNewData.cxx)
add_library(vtkNewDataPythonD ${vtkNewDataPython_SRCS} vtkNewData.cxx)
target_link_libraries(vtkNewDataPythonD
${VTK_LIBRARIES}
vtkWrappingPythonCore
${VTK_PYTHON_LIBRARIES})
add_library(vtkNewDataPython MODULE vtkNewDataPythonInit.cxx)
set(VTK_MODULES_USED vtkCommonDataModel vtkCommonCore)
set(VTK_PYTHOND_LIBS)
foreach(TMP_LIB ${VTK_MODULES_USED})
set(VTK_PYTHOND_LIBS ${VTK_PYTHOND_LIBS} ${TMP_LIB}PythonD)
endforeach()
target_link_libraries(vtkNewDataPython vtkNewDataPythonD ${VTK_PYTHOND_LIBS})
set_target_properties(vtkNewDataPython PROPERTIES PREFIX "")
if(WIN32 AND NOT CYGWIN)
set_target_properties(vtkNewDataPython PROPERTIES SUFFIX ".pyd")
endif(WIN32 AND NOT CYGWIN)
I suspect there is something very simple I am missing here but cannot for the life of me think what. Any help would be appreciated.
Cheers
Kit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160729/62b1991b/attachment.html>
More information about the vtkusers
mailing list