App: do not save external dependency

This commit is contained in:
Zheng, Lei
2019-12-14 11:56:51 +08:00
committed by wmayer
parent 0a608e9413
commit 5eb15e4219
2 changed files with 14 additions and 3 deletions

View File

@@ -1832,7 +1832,8 @@ void Document::writeObjects(const std::vector<App::DocumentObject*>& obj,
if(!isExporting(0)) {
for(auto o : obj) {
const auto &outList = o->getOutList(DocumentObject::OutListNoHidden);
const auto &outList = o->getOutList(DocumentObject::OutListNoHidden
| DocumentObject::OutListNoXLinked);
writer.Stream() << writer.ind()
<< "<" FC_ELEMENT_OBJECT_DEPS " " FC_ATTR_DEP_OBJ_NAME "=\""
<< o->getNameInDocument() << "\" " FC_ATTR_DEP_COUNT "=\"" << outList.size();

View File

@@ -284,14 +284,24 @@ void DocumentObject::getOutList(int options, std::vector<DocumentObject*> &res)
std::vector<Property*> props;
getPropertyList(props);
bool noHidden = !!(options & OutListNoHidden);
bool noXLinked = !!(options & OutListNoXLinked);
std::size_t size = res.size();
for(auto prop : props) {
auto link = dynamic_cast<PropertyLinkBase*>(prop);
if(link && (!noXLinked || !PropertyXLink::supportXLink(prop)))
if(link)
link->getLinks(res,noHidden);
}
if(!(options & OutListNoExpression))
ExpressionEngine.getLinks(res);
if(options & OutListNoXLinked) {
for(auto it=res.begin()+size;it!=res.end();) {
auto obj = *it;
if(obj && obj->getDocument()!=getDocument())
it = res.erase(it);
else
++it;
}
}
}
std::vector<App::DocumentObject*> DocumentObject::getOutListOfProperty(App::Property* prop) const