Attacher: Py: introduce Py interface of AttachableObject
Small - just the introduction. Support for Py features based on AttachableObject. Redirect Part2DObjectPython's father to be AttachableObjectPython.
This commit is contained in:
parent
897a66cbb7
commit
fe295b701b
|
@ -229,6 +229,7 @@ PyMODINIT_FUNC initPart()
|
|||
Part::Feature ::init();
|
||||
Part::FeatureExt ::init();
|
||||
Part::AttachableObject ::init();
|
||||
Part::AttachableObjectPython::init();
|
||||
Part::BodyBase ::init();
|
||||
Part::FeaturePython ::init();
|
||||
Part::FeatureGeometrySet ::init();
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
#include <Base/Console.h>
|
||||
#include <App/Application.h>
|
||||
|
||||
#include <App/FeaturePythonPyImp.h>
|
||||
#include "AttachableObjectPy.h"
|
||||
|
||||
|
||||
using namespace Part;
|
||||
|
@ -151,4 +153,22 @@ void AttachableObject::updateAttacherVals()
|
|||
this->superPlacement.getValue());
|
||||
}
|
||||
|
||||
namespace App {
|
||||
/// @cond DOXERR
|
||||
PROPERTY_SOURCE_TEMPLATE(Part::AttachableObjectPython, Part::AttachableObject)
|
||||
template<> const char* Part::AttachableObjectPython::getViewProviderName(void) const {
|
||||
return "PartGui::ViewProviderPython";
|
||||
}
|
||||
template<> PyObject* Part::AttachableObjectPython::getPyObject(void) {
|
||||
if (PythonObject.is(Py::_None())) {
|
||||
// ref counter is set to 1
|
||||
PythonObject = Py::Object(new FeaturePythonPyT<Part::AttachableObjectPy>(this),true);
|
||||
}
|
||||
return Py::new_reference_to(PythonObject);
|
||||
}
|
||||
/// @endcond
|
||||
|
||||
// explicit template instantiation
|
||||
template class PartExport FeaturePythonT<Part::AttachableObject>;
|
||||
}
|
||||
|
||||
|
|
|
@ -104,6 +104,8 @@ private:
|
|||
};
|
||||
|
||||
|
||||
typedef App::FeaturePythonT<AttachableObject> AttachableObjectPython;
|
||||
|
||||
} // namespace Part
|
||||
|
||||
#endif // PARTATTACHABLEOBJECT_H
|
||||
|
|
24
src/Mod/Part/App/AttachableObjectPy.xml
Normal file
24
src/Mod/Part/App/AttachableObjectPy.xml
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
|
||||
<PythonExport
|
||||
Father="PartFeaturePy"
|
||||
Name="AttachableObjectPy"
|
||||
Twin="AttachableObject"
|
||||
TwinPointer="AttachableObject"
|
||||
Include="Mod/Part/App/AttachableObject.h"
|
||||
Namespace="Part"
|
||||
FatherInclude="Mod/Part/App/PartFeaturePy.h"
|
||||
FatherNamespace="Part">
|
||||
<Documentation>
|
||||
<Author Licence="LGPL" Name="DeepSOIC" EMail="vv.titov@gmail.com" />
|
||||
<UserDocu>This object represents an attachable object with OCC shape.</UserDocu>
|
||||
</Documentation>
|
||||
<Methode Name="positionBySupport">
|
||||
<Documentation>
|
||||
<UserDocu>positionBySupport(): Reposition object based on Support, MapMode and MapPathParameter properties.
|
||||
Returns True if attachment calculation was successful, false if object is not attached and Placement wasn't updated,
|
||||
and raises an exception if attachment calculation fails.</UserDocu>
|
||||
</Documentation>
|
||||
</Methode>
|
||||
</PythonExport>
|
||||
</GenerateModel>
|
48
src/Mod/Part/App/AttachableObjectPyImp.cpp
Normal file
48
src/Mod/Part/App/AttachableObjectPyImp.cpp
Normal file
|
@ -0,0 +1,48 @@
|
|||
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#include "Mod/Part/App/AttachableObject.h"
|
||||
#include "OCCError.h"
|
||||
|
||||
// inclusion of the generated files (generated out of AttachableObjectPy.xml)
|
||||
#include "AttachableObjectPy.h"
|
||||
#include "AttachableObjectPy.cpp"
|
||||
|
||||
using namespace Part;
|
||||
|
||||
// returns a string which represents the object e.g. when printed in python
|
||||
std::string AttachableObjectPy::representation(void) const
|
||||
{
|
||||
return std::string("<Part::AttachableObject>");
|
||||
}
|
||||
|
||||
PyObject* AttachableObjectPy::positionBySupport(PyObject *args)
|
||||
{
|
||||
if (!PyArg_ParseTuple(args, ""))
|
||||
return 0;
|
||||
bool bAttached = false;
|
||||
try{
|
||||
bAttached = this->getAttachableObjectPtr()->positionBySupport();
|
||||
} catch (Standard_Failure) {
|
||||
Handle_Standard_Failure e = Standard_Failure::Caught();
|
||||
PyErr_SetString(PartExceptionOCCError, e->GetMessageString());
|
||||
return NULL;
|
||||
} catch (Base::Exception &e) {
|
||||
PyErr_SetString(Base::BaseExceptionFreeCADError, e.what());
|
||||
return NULL;
|
||||
}
|
||||
return Py::new_reference_to(Py::Boolean(bAttached));
|
||||
}
|
||||
|
||||
|
||||
PyObject *AttachableObjectPy::getCustomAttributes(const char* /*attr*/) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int AttachableObjectPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -69,6 +69,7 @@ generate_from_xml(RectangularTrimmedSurfacePy)
|
|||
generate_from_xml(SurfaceOfExtrusionPy)
|
||||
generate_from_xml(SurfaceOfRevolutionPy)
|
||||
generate_from_xml(PartFeaturePy)
|
||||
generate_from_xml(AttachableObjectPy)
|
||||
generate_from_xml(Part2DObjectPy)
|
||||
generate_from_xml(TopoShapePy)
|
||||
generate_from_xml(TopoShapeCompoundPy)
|
||||
|
@ -216,6 +217,8 @@ SET(Python_SRCS
|
|||
SurfaceOfRevolutionPyImp.cpp
|
||||
PartFeaturePy.xml
|
||||
PartFeaturePyImp.cpp
|
||||
AttachableObjectPy.xml
|
||||
AttachableObjectPyImp.cpp
|
||||
Part2DObjectPy.xml
|
||||
Part2DObjectPyImp.cpp
|
||||
TopoShapePy.xml
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
|
||||
<PythonExport
|
||||
Father="PartFeaturePy"
|
||||
Father="AttachableObjectPy"
|
||||
Name="Part2DObjectPy"
|
||||
Twin="Part2DObject"
|
||||
TwinPointer="Part2DObject"
|
||||
Include="Mod/Part/App/Part2DObject.h"
|
||||
Namespace="Part"
|
||||
FatherInclude="Mod/Part/App/PartFeaturePy.h"
|
||||
FatherInclude="Mod/Part/App/AttachableObjectPy.h"
|
||||
FatherNamespace="Part">
|
||||
<Documentation>
|
||||
<Author Licence="LGPL" Name="Juergen Riegel" EMail="FreeCAD@juergen-riegel.net" />
|
||||
|
|
Loading…
Reference in New Issue
Block a user