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;
}
}
}