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

Method exportObjects

src/App/Document.cpp:1343–1388  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1341}
1342
1343void Document::exportObjects(const std::vector<DocumentObject*>& obj, std::ostream& out)
1344{
1345
1346 DocumentExporting exporting(obj);
1347 d->hashers.clear();
1348
1349 if (FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) {
1350 for (auto o : obj) {
1351 if (o && o->isAttachedToDocument()) {
1352 FC_LOG("exporting " << o->getFullName());
1353 if (!o->getPropertyByName("_ObjectUUID")) {
1354 auto prop = static_cast<PropertyUUID*>(
1355 o->addDynamicProperty("App::PropertyUUID",
1356 "_ObjectUUID",
1357 nullptr,
1358 nullptr,
1359 Prop_Output | Prop_Hidden));
1360 prop->setValue(Base::Uuid::createUuid());
1361 }
1362 }
1363 }
1364 }
1365
1366 Base::ZipWriter writer(out);
1367 writer.putNextEntry("Document.xml");
1368 writer.Stream() << "<?xml version='1.0' encoding='utf-8'?>" << '\n';
1369 writer.Stream() << R"(<Document SchemaVersion="4" ProgramVersion=")"
1370 << Application::Config()["BuildVersionMajor"] << "."
1371 << Application::Config()["BuildVersionMinor"] << "R"
1372 << Application::Config()["BuildRevision"] << R"(" FileVersion="1">)"
1373 << '\n';
1374 // Add this block to have the same layout as for normal documents
1375 writer.Stream() << "<Properties Count=\"0\">" << '\n';
1376 writer.Stream() << "</Properties>" << '\n';
1377
1378 // writing the object types
1379 writeObjects(obj, writer);
1380 writer.Stream() << "</Document>" << '\n';
1381
1382 // Hook for others to add further data.
1383 signalExportObjects(obj, writer);
1384
1385 // write additional files
1386 writer.writeFiles();
1387 d->hashers.clear();
1388}
1389
1390constexpr auto fcAttrDependencies {"Dependencies"};
1391constexpr auto fcElementObjectDeps {"ObjectDeps"};

Callers

nothing calls this directly

Calls 10

ConfigClass · 0.70
clearMethod · 0.45
isEnabledMethod · 0.45
isAttachedToDocumentMethod · 0.45
getFullNameMethod · 0.45
getPropertyByNameMethod · 0.45
addDynamicPropertyMethod · 0.45
setValueMethod · 0.45
putNextEntryMethod · 0.45
writeFilesMethod · 0.45

Tested by

no test coverage detected