Exposing C++ to Python

How to expose c++ functionality to Python
It becomes necessary at times to expand the FreeCAD API further by exposing functions that are available in the source code in c++ to the python. In so doing, providing an ability to trigger deep internal functionality with Python in real-time instead of needing to compile.

Below is an explanation of how one can achieve this.

The basic structure of a program to expose functionality to Python is something like this:


 * get the Py object parameters and convert them to c++ variables using PyArg_ParseTuple,
 * use various c++ routines from OpenCascade and/or FreeCAD to produce the desired result,
 * convert the c++ result into Py object using routines like PyLong_AsLong, Py::asObject, etc,
 * return the Py object.

Source: https://forum.freecadweb.org/viewtopic.php?p=314796#p314617