diff --git a/src/App/Origin.cpp b/src/App/Origin.cpp index 1f395ce03e..3d8c725368 100644 --- a/src/App/Origin.cpp +++ b/src/App/Origin.cpp @@ -48,11 +48,12 @@ PROPERTY_SOURCE(App::Origin, App::DocumentObject) const char* Origin::AxisRoles[3] = {"X_Axis", "Y_Axis", "Z_Axis"}; const char* Origin::PlaneRoles[3] = {"XY_Plane", "XZ_Plane", "YZ_Plane"}; -Origin::Origin(void) { +Origin::Origin(void) : extension(this) { ADD_PROPERTY_TYPE ( OriginFeatures, (0), 0, App::Prop_Hidden, "Axis and baseplanes controlled by the origin" ); setStatus(App::NoAutoExpand,true); + extension.GroupExtension::initExtension(this); } @@ -182,3 +183,31 @@ void Origin::unsetupObject () { } } } + +// ---------------------------------------------------------------------------- + +Origin::OriginExtension::OriginExtension(Origin* obj) + : obj(obj) +{ + Group.setStatus(Property::Transient, true); +} + +void Origin::OriginExtension::initExtension(ExtensionContainer* obj) { + App::GroupExtension::initExtension(obj); +} + +bool Origin::OriginExtension::extensionGetSubObject(DocumentObject *&ret, const char *subname, + PyObject **, Base::Matrix4D *, bool, int) const { + const char* dot; + if (!subname || subname[0] == '\0') { + return false; + } + + std::string name(subname); + if ((dot=strchr(subname,'.'))) { + name = std::string(subname,dot); + } + + ret = obj->getOriginFeature(name.c_str()); + return true; +} diff --git a/src/App/Origin.h b/src/App/Origin.h index e05d476181..9735bc9ebf 100644 --- a/src/App/Origin.h +++ b/src/App/Origin.h @@ -28,6 +28,7 @@ #include "GeoFeature.h" #include "OriginFeature.h" +#include "GeoFeatureGroupExtension.h" #include "PropertyLinks.h" namespace App @@ -135,6 +136,15 @@ private: struct SetupData; void setupOriginFeature (App::PropertyLink &featProp, const SetupData &data); + class OriginExtension : public GeoFeatureGroupExtension { + Origin* obj; + public: + OriginExtension(Origin* obj); + void initExtension(ExtensionContainer* obj); + bool extensionGetSubObject(DocumentObject *&ret, const char *subname, + PyObject **, Base::Matrix4D *, bool, int) const; + }; + OriginExtension extension; }; } //namespace App