diff --git a/src/Mod/Mesh/App/AppMeshPy.cpp b/src/Mod/Mesh/App/AppMeshPy.cpp index f4c0059e9a..e88848231d 100644 --- a/src/Mod/Mesh/App/AppMeshPy.cpp +++ b/src/Mod/Mesh/App/AppMeshPy.cpp @@ -269,7 +269,8 @@ private: exporter.reset( new ExporterAMF(outputFileName, meta, exportAmfCompressed) ); } else if (exportFormat == MeshIO::ThreeMF) { - exporter.reset( new Exporter3MF(outputFileName) ); + Extension3MFFactory::initialize(); + exporter.reset( new Exporter3MF(outputFileName, Extension3MFFactory::createExtensions()) ); } else if (exportFormat != MeshIO::Undefined) { exporter.reset( new MergeExporter(outputFileName, exportFormat) ); diff --git a/src/Mod/Mesh/App/Exporter.cpp b/src/Mod/Mesh/App/Exporter.cpp index 7140deac27..dd39288442 100644 --- a/src/Mod/Mesh/App/Exporter.cpp +++ b/src/Mod/Mesh/App/Exporter.cpp @@ -257,7 +257,7 @@ void Extension3MFFactory::initialize() } } -std::vector Extension3MFFactory::create() +std::vector Extension3MFFactory::createExtensions() { std::vector ext; for (const auto& it : producer) { @@ -272,19 +272,19 @@ std::vector Extension3MFFactory::producer; class Exporter3MF::Private { public: - explicit Private(const std::string& filename) - : writer3mf(filename) { - Extension3MFFactory::initialize(); - ext = Extension3MFFactory::create(); + explicit Private(const std::string& filename, + const std::vector& ext) + : writer3mf(filename) + , ext(ext) { } MeshCore::Writer3MF writer3mf; std::vector ext; }; -Exporter3MF::Exporter3MF(std::string fileName) +Exporter3MF::Exporter3MF(std::string fileName, const std::vector& ext) { throwIfNoPermission(fileName); - d.reset(new Private(fileName)); + d.reset(new Private(fileName, ext)); } Exporter3MF::~Exporter3MF() diff --git a/src/Mod/Mesh/App/Exporter.h b/src/Mod/Mesh/App/Exporter.h index 7ca4804f48..367c4a51ff 100644 --- a/src/Mod/Mesh/App/Exporter.h +++ b/src/Mod/Mesh/App/Exporter.h @@ -171,7 +171,7 @@ class MeshExport Extension3MFFactory public: static void addProducer(Extension3MFProducer* ext); static void initialize(); - static std::vector create(); + static std::vector createExtensions(); private: static std::vector producer; @@ -187,7 +187,7 @@ private: class Exporter3MF : public Exporter { public: - Exporter3MF(std::string fileName); + Exporter3MF(std::string fileName, const std::vector& = {}); ~Exporter3MF() override; bool addMesh(const char *name, const MeshObject & mesh) override;