MCPcopy Create free account
hub / github.com/FreeCAD/FreeCAD / exportObjects

Method exportObjects

src/Gui/Document.cpp:2144–2191  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2142}
2143
2144void Document::exportObjects(const std::vector<App::DocumentObject*>& obj, Base::Writer& writer)
2145{
2146 writer.Stream() << "<?xml version='1.0' encoding='utf-8'?>" << std::endl;
2147 writer.Stream() << "<Document SchemaVersion=\"1\">" << std::endl;
2148
2149 std::map<const App::DocumentObject*, ViewProvider*> views;
2150 for (const auto& it : obj) {
2151 Document* doc = Application::Instance->getDocument(it->getDocument());
2152 if (doc) {
2153 ViewProvider* vp = doc->getViewProvider(it);
2154 if (vp) {
2155 views[it] = vp;
2156 }
2157 }
2158 }
2159
2160 // writing the view provider names itself
2161 writer.incInd(); // indentation for 'ViewProviderData Count'
2162 writer.Stream() << writer.ind() << "<ViewProviderData Count=\"" << views.size() << "\">"
2163 << std::endl;
2164
2165 bool xml = writer.isForceXML();
2166 // writer.setForceXML(true);
2167 writer.incInd(); // indentation for 'ViewProvider name'
2168 std::map<const App::DocumentObject*, ViewProvider*>::const_iterator jt;
2169 for (jt = views.begin(); jt != views.end(); ++jt) {
2170 const App::DocumentObject* doc = jt->first;
2171 ViewProvider* vp = jt->second;
2172 writer.Stream() << writer.ind() << "<ViewProvider name=\"" << doc->getExportName() << "\" "
2173 << "expanded=\"" << (doc->testStatus(App::Expand) ? 1 : 0) << "\"";
2174 if (vp->hasExtensions()) {
2175 writer.Stream() << " Extensions=\"True\"";
2176 }
2177
2178 writer.Stream() << ">" << std::endl;
2179 vp->Save(writer);
2180 writer.Stream() << writer.ind() << "</ViewProvider>" << std::endl;
2181 }
2182 writer.setForceXML(xml);
2183
2184 writer.decInd(); // indentation for 'ViewProvider name'
2185 writer.Stream() << writer.ind() << "</ViewProviderData>" << std::endl;
2186 writer.decInd(); // indentation for 'ViewProviderData Count'
2187 writer.incInd(); // indentation for camera settings
2188 writer.Stream() << writer.ind() << "<Camera settings=\"\"/>" << std::endl;
2189 writer.decInd(); // indentation for camera settings
2190 writer.Stream() << "</Document>" << std::endl;
2191}
2192
2193void Document::importObjects(
2194 const std::vector<App::DocumentObject*>& obj,

Callers 3

SaveDocFileMethod · 0.45
activatedMethod · 0.45

Calls 13

incIndMethod · 0.80
isForceXMLMethod · 0.80
getExportNameMethod · 0.80
hasExtensionsMethod · 0.80
setForceXMLMethod · 0.80
decIndMethod · 0.80
getDocumentMethod · 0.45
getViewProviderMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
testStatusMethod · 0.45

Tested by

no test coverage detected