diff --git a/src/App/OriginGroupExtension.cpp b/src/App/OriginGroupExtension.cpp index 0e25dd9ba4..52a97dd456 100644 --- a/src/App/OriginGroupExtension.cpp +++ b/src/App/OriginGroupExtension.cpp @@ -27,12 +27,15 @@ #endif #include - +#include +#include #include #include "Origin.h" #include "GeoFeature.h" +FC_LOG_LEVEL_INIT("App", true, true) + using namespace App; EXTENSION_PROPERTY_SOURCE(App::OriginGroupExtension, App::GeoFeatureGroupExtension) @@ -160,8 +163,12 @@ void OriginGroupExtension::extensionOnChanged(const Property* p) { && owner->getDocument()->testStatus(Document::Importing)) { for (auto o : origin->getInList()) { if(o != owner && o->hasExtension(App::OriginGroupExtension::getExtensionClassTypeId())) { - Origin.setValue(nullptr); - throw Base::RuntimeError("Origin can only be in a single OriginGroup"); + // Temporarily reset 'Restoring' status to allow document to auto label new objects + Base::ObjectStatusLocker guard( + Document::Restoring, owner->getDocument(), false); + Origin.setValue(owner->getDocument()->addObject("App::Origin", "Origin")); + FC_WARN("Reset origin in " << owner->getFullName()); + return; } } }