IVuPy (I-View-Py) aims to be a solid basis for large Qt based Python programs geared to data analysis and 3D visualization of huge data sets.
Python is extended by IVuPy with more than 600 classes of two of the Coin3D C++ class libraries: Coin and SoQt.
Data exchange between Python and the Coin3D data structures is based on the Numerical Python extension modules (any combination of NumPy, numarray, and Numeric).
IVuPy requires at least one of the Numerical Python extension modules, either NumPy, either Numeric, or numarray (IVuPy works with all of them at once). The Numerical Python extension turn Python into an array processing language like Matlab or IDL.
The data transfer between the Numerical Python arrays and the Coin3D data structures has been implemented in C++ for efficiency.
IVuPy has been built using SIP, the interface generator for PyQt. This assures optimal integration with PyQt and very efficient bindings as exposed in Python Wrapper Tools: a Performance Study.
SIP bindings blur the distinction between wrapped C++ classes and Python classes and enable powerful subclassing in Python. For instance, viewer.py demonstrates how customization of event handling can be implemented in a subclass of SoQtExaminerViewer by reimplementing SoQtRenderarea::processEvent().
IVuPy does a bounds check when accessing an element of Open Inventor data structures (SbVec, SoMField), and raises an exception when the check fails.