diff --git a/src/Mod/Path/PathSimulator/App/AppPathSimulator.cpp b/src/Mod/Path/PathSimulator/App/AppPathSimulator.cpp index c8c95c9ac8..c6d90d1603 100644 --- a/src/Mod/Path/PathSimulator/App/AppPathSimulator.cpp +++ b/src/Mod/Path/PathSimulator/App/AppPathSimulator.cpp @@ -28,10 +28,14 @@ #include #include +#include #include #include +#include "PathSim.h" +#include "PathSimPy.h" + namespace PathSimulator { class Module : public Py::ExtensionModule @@ -59,10 +63,27 @@ PyObject* initModule() /* Python entry */ PyMOD_INIT_FUNC(PathSimulator) { - // ADD YOUR CODE HERE - // - // + // load dependent module + try { + Base::Interpreter().runString("import Part"); + Base::Interpreter().runString("import Path"); + } + catch (const Base::Exception& e) { + PyErr_SetString(PyExc_ImportError, e.what()); + PyMOD_Return(NULL); + } + + // PyObject* mod = PathSimulator::initModule(); - Base::Console().Log("Loading PathSimulator module... done\n"); + Base::Console().Log("Loading PathSimulator module.... done\n"); PyMOD_Return(mod); + + // Add Types to module + Base::Interpreter().addType(&PathSimulator::PathSimPy::Type, mod, "PathSim"); + + // NOTE: To finish the initialization of our own type objects we must + // call PyType_Ready, otherwise we run into a segmentation fault, later on. + // This function is responsible for adding inherited slots from a type's base class. + PathSimulator::PathSim::init(); + }