diff --git a/src/App/PropertyLinks.cpp b/src/App/PropertyLinks.cpp index 6cd257459c..2740173467 100644 --- a/src/App/PropertyLinks.cpp +++ b/src/App/PropertyLinks.cpp @@ -472,7 +472,11 @@ bool PropertyLinkBase::_updateElementReference(DocumentObject* feature, // to version change, i.e. 'reverse', try search by geometry first const char* oldElement = Data::findElementName(shadow.oldName.c_str()); if (!Data::hasMissingElement(oldElement)) { - const auto& names = geo->searchElementCache(oldElement); + auto names = geo->searchElementCache(oldElement); + if (names.empty()) { + // try floating point tolerance + names = geo->searchElementCache(oldElement, Data::SearchOptions()); + } if (names.size()) { missing = false; std::string newsub(subname, strlen(subname) - strlen(element)); diff --git a/src/Mod/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index abb1421412..dd1d3ba3b7 100644 --- a/src/Mod/Part/App/PartFeature.cpp +++ b/src/Mod/Part/App/PartFeature.cpp @@ -1578,9 +1578,11 @@ const std::vector& Feature::searchElementCache( break; } } - it->second.searched = true; propShape->getShape() .findSubShapesWithSharedVertex(it->second.shape, &it->second.names, options, tol, atol); + if (!it->second.names.empty()) { + it->second.searched = true; + } if (prefix) { for (auto& name : it->second.names) { if (auto dot = strrchr(name.c_str(), '.')) {