[PySide] Binding C++/VTK code using Shiboken
matthew.woehlke at kitware.com
Thu Dec 12 18:07:47 CET 2013
On 2013-12-12 11:09, Nicolas SAUBAT wrote:
> I'm trying to bind to Python a C++ framework, called CamiTK
> (http://camitk.imag.fr) which is based on Qt and VTK (http://www.vtk.org/).
> For binding Qt C++ classes, no problem, we can tell Shiboken how to use
> Qt in Python, thanks to the provided typesystem.xml files.
> But I was wondering, how we can do the same stuff using VTK ?
Well. That's a good question.
If you just want to generate bindings for VTK-based objects, VTK has its
own wrapping system that will allow you to do that. (IME it's rather
limited compared to Shiboken; no support for enums, STL containers,
etc.) However, getting the two to talk to each other is likely to be an
What you would ultimately need to do, I think, is to be able to teach
Shiboken how to get a vtkObject* from a PyObject. As far as the Shiboken
architecture, I think you should be able to write custom converters for
The problem comes with how VTK implements its conversions, which depends
on having a pointer to the call arguments, which is not available in
Shiboken. As such, I'm not sure that (at the C++ level) it is possible
to get the vtkObject* from *just* a PyObject.
TBH, I have the same problem and haven't solved it, except that I
decided the best thing to do would be to rewrite VTK's wrapping to just
use Shiboken and be done with it ;-). If you find a solution, please let
me know. (If you can throw $$ at making VTK use Shiboken, please also
let me know ;-).)
Note that it's probably impossible to wrap a VTK-derived object with
Shiboken in any useful way.
More information about the PySide