From 9801519409c992fb964490abdefc35ae79e0b473 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 6 Jun 2020 15:46:48 +0200 Subject: [PATCH] App: [skip ci] correctly mapping of sub-feature name to role name of an Origin feature --- src/App/Origin.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/App/Origin.cpp b/src/App/Origin.cpp index eb7c4669ac..5fba5dff06 100644 --- a/src/App/Origin.cpp +++ b/src/App/Origin.cpp @@ -198,16 +198,29 @@ void Origin::OriginExtension::initExtension(ExtensionContainer* 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; } + // mapping of object name to role name std::string name(subname); - if ((dot=strchr(subname,'.'))) { - name = std::string(subname,dot); + for (int i=0; i<3; i++) { + if (name.rfind(Origin::AxisRoles[i], 0) == 0) { + name = Origin::AxisRoles[i]; + break; + } + if (name.rfind(Origin::PlaneRoles[i], 0) == 0) { + name = Origin::PlaneRoles[i]; + break; + } } - ret = obj->getOriginFeature(name.c_str()); - return true; + try { + ret = obj->getOriginFeature(name.c_str()); + return true; + } + catch (const Base::Exception& e) { + e.ReportException(); + return false; + } }