diff --git a/src/App/PropertyGeo.cpp b/src/App/PropertyGeo.cpp
index a72364f265..220aba8e9a 100644
--- a/src/App/PropertyGeo.cpp
+++ b/src/App/PropertyGeo.cpp
@@ -36,6 +36,8 @@
#include
#include
+#include "ComplexGeoData.h"
+#include "Document.h"
#include "PropertyGeo.h"
#include "Placement.h"
#include "ObjectIdentifier.h"
@@ -1241,3 +1243,18 @@ TYPESYSTEM_SOURCE_ABSTRACT(App::PropertyComplexGeoData , App::PropertyGeometry)
PropertyComplexGeoData::PropertyComplexGeoData() = default;
PropertyComplexGeoData::~PropertyComplexGeoData() = default;
+
+void PropertyComplexGeoData::afterRestore()
+{
+ auto data = getComplexData();
+ if (data && data->isRestoreFailed()) {
+ data->resetRestoreFailure();
+ auto owner = Base::freecad_dynamic_cast(getContainer());
+ if (owner &&
+ owner->getDocument() &&
+ !owner->getDocument()->testStatus(App::Document::PartialDoc)) {
+ owner->getDocument()->addRecomputeObject(owner);
+ }
+ }
+ PropertyGeometry::afterRestore();
+}
\ No newline at end of file
diff --git a/src/App/PropertyGeo.h b/src/App/PropertyGeo.h
index 829e251f98..c55339e63a 100644
--- a/src/App/PropertyGeo.h
+++ b/src/App/PropertyGeo.h
@@ -541,6 +541,8 @@ public:
virtual const Data::ComplexGeoData* getComplexData() const = 0;
Base::BoundBox3d getBoundingBox() const override = 0;
//@}
+
+ void afterRestore() override;
};
} // namespace App