spend own type for Python wrappers of FeaturePrimitive and BodyBase

This commit is contained in:
wmayer 2017-01-20 15:42:50 +01:00
parent ac7750fab6
commit eeb7dd458a
4 changed files with 29 additions and 2 deletions

View File

@ -25,6 +25,7 @@
#ifndef _PreComp_
#endif
#include <Mod/Part/App/BodyBasePy.h>
#include <App/Application.h>
#include <App/Document.h>
#include <Base/Placement.h>
@ -98,4 +99,13 @@ void BodyBase::onChanged (const App::Property* prop) {
Part::Feature::onChanged ( prop );
}
PyObject* BodyBase::getPyObject()
{
if (PythonObject.is(Py::_None())){
// ref counter is set to 1
PythonObject = Py::Object(new BodyBasePy(this),true);
}
return Py::new_reference_to(PythonObject);
}
} /* Part */

View File

@ -78,6 +78,7 @@ public:
* TODO introduce a findBodiesOf() if needed (2015-08-04, Fat-Zer)
*/
static BodyBase* findBodyOf(const App::DocumentObject* f);
virtual PyObject* getPyObject();
protected:
/// If BaseFeature is getting changed and Tip points to it resets the Tip

View File

@ -30,10 +30,13 @@
#include "DatumPoint.h"
#include "DatumCS.h"
#include <Mod/Part/App/modelRefine.h>
#include <Mod/Part/App/PartFeaturePy.h>
#include <Base/Exception.h>
#include <Base/Tools.h>
#include <App/Document.h>
#include <App/Application.h>
#include <App/FeaturePythonPyImp.h>
#include <BRepPrimAPI_MakeBox.hxx>
#include <BRepBuilderAPI_GTransform.hxx>
#include <BRepAlgoAPI_Fuse.hxx>
@ -152,6 +155,18 @@ void FeaturePrimitive::onChanged(const App::Property* prop)
FeatureAddSub::onChanged(prop);
}
PYTHON_TYPE_DEF(PrimitivePy, Part::PartFeaturePy)
PYTHON_TYPE_IMP(PrimitivePy, Part::PartFeaturePy)
PyObject* FeaturePrimitive::getPyObject()
{
if (PythonObject.is(Py::_None())){
// ref counter is set to 1
PythonObject = Py::Object(new PrimitivePy(this),true);
}
return Py::new_reference_to(PythonObject);
}
PROPERTY_SOURCE(PartDesign::Box, PartDesign::FeaturePrimitive)
Box::Box()

View File

@ -54,14 +54,15 @@ public:
virtual const char* getViewProviderName(void) const {
return "PartDesignGui::ViewProviderPrimitive";
}
Type getPrimitiveType() {return primitiveType;};
Type getPrimitiveType() {return primitiveType;}
TopoDS_Shape refineShapeIfActive(const TopoDS_Shape& oldShape) const;
virtual void onChanged(const App::Property* prop);
virtual PyObject* getPyObject();
/// Do nothing, just to suppress warning, must be redefined in derived classes
virtual App::DocumentObjectExecReturn* execute() {
return PartDesign::FeatureAddSub::execute();
};
}
protected:
//make the boolean ops with the primitives provided by the derived features
App::DocumentObjectExecReturn* execute(const TopoDS_Shape& primitiveShape);