| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef MESH_EXPORTER_H |
| | #define MESH_EXPORTER_H |
| |
|
| | #include <map> |
| | #include <ostream> |
| | #include <vector> |
| |
|
| | #include "MeshFeature.h" |
| | #include "Core/MeshIO.h" |
| | #include "Core/IO/Writer3MF.h" |
| |
|
| |
|
| | namespace Mesh |
| | { |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | class MeshExport Exporter |
| | { |
| | public: |
| | Exporter(); |
| | virtual ~Exporter() = default; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | int addObject(App::DocumentObject* obj, float tol); |
| |
|
| | virtual bool addMesh(const char* name, const MeshObject& mesh) = 0; |
| |
|
| | Exporter(const Exporter&) = delete; |
| | Exporter(Exporter&&) = delete; |
| | Exporter& operator=(const Exporter&) = delete; |
| | Exporter& operator=(Exporter&&) = delete; |
| |
|
| | protected: |
| | |
| | static std::string xmlEscape(const std::string& input); |
| | void throwIfNoPermission(const std::string&); |
| |
|
| | std::map<const App::DocumentObject*, std::vector<std::string>> subObjectNameCache; |
| | std::map<const App::DocumentObject*, MeshObject> meshCache; |
| | }; |
| |
|
| | |
| | class MeshExport MergeExporter: public Exporter |
| | { |
| | public: |
| | MergeExporter(std::string fileName, MeshCore::MeshIO::Format fmt); |
| | ~MergeExporter() override; |
| |
|
| | MergeExporter(const MergeExporter&) = delete; |
| | MergeExporter(MergeExporter&&) = delete; |
| | MergeExporter& operator=(const MergeExporter&) = delete; |
| | MergeExporter& operator=(MergeExporter&&) = delete; |
| |
|
| | bool addMesh(const char* name, const MeshObject& mesh) override; |
| |
|
| | private: |
| | |
| | void write(); |
| |
|
| | protected: |
| | |
| | MeshObject mergingMesh; |
| | std::string fName; |
| | |
| | }; |
| |
|
| | |
| |
|
| | |
| | |
| | |
| | |
| | class MeshExport AbstractFormatExtension |
| | { |
| | protected: |
| | AbstractFormatExtension() = default; |
| |
|
| | public: |
| | virtual ~AbstractFormatExtension() = default; |
| |
|
| | AbstractFormatExtension(const AbstractFormatExtension&) = delete; |
| | AbstractFormatExtension(AbstractFormatExtension&&) = delete; |
| | AbstractFormatExtension& operator=(const AbstractFormatExtension&) = delete; |
| | AbstractFormatExtension& operator=(AbstractFormatExtension&&) = delete; |
| | }; |
| |
|
| | using AbstractFormatExtensionPtr = std::shared_ptr<AbstractFormatExtension>; |
| |
|
| | |
| | |
| | |
| | |
| | class MeshExport Extension3MF: public AbstractFormatExtension |
| | { |
| | public: |
| | using Resource = MeshCore::Resource3MF; |
| | Extension3MF() = default; |
| | virtual Resource addMesh(const MeshObject& mesh) = 0; |
| | }; |
| |
|
| | using Extension3MFPtr = std::shared_ptr<Extension3MF>; |
| |
|
| | |
| | |
| | |
| | |
| | class MeshExport AbstractExtensionProducer |
| | { |
| | public: |
| | AbstractExtensionProducer() = default; |
| | virtual ~AbstractExtensionProducer() = default; |
| | virtual AbstractFormatExtensionPtr create() const = 0; |
| |
|
| | AbstractExtensionProducer(const AbstractExtensionProducer&) = delete; |
| | AbstractExtensionProducer(AbstractExtensionProducer&&) = delete; |
| | AbstractExtensionProducer& operator=(const AbstractExtensionProducer&) = delete; |
| | AbstractExtensionProducer& operator=(AbstractExtensionProducer&&) = delete; |
| | }; |
| |
|
| | using AbstractExtensionProducerPtr = std::shared_ptr<AbstractExtensionProducer>; |
| |
|
| | |
| | |
| | |
| | |
| | class MeshExport Extension3MFProducer: public AbstractExtensionProducer |
| | { |
| | public: |
| | Extension3MFProducer() = default; |
| | virtual void initialize() = 0; |
| | }; |
| |
|
| | using Extension3MFProducerPtr = std::shared_ptr<Extension3MFProducer>; |
| |
|
| | |
| | |
| | |
| | |
| | class MeshExport GuiExtension3MFProducer: public Extension3MFProducer |
| | { |
| | public: |
| | GuiExtension3MFProducer() = default; |
| | void initialize() override; |
| | AbstractFormatExtensionPtr create() const override; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | class MeshExport Extension3MFFactory |
| | { |
| | public: |
| | static void addProducer(Extension3MFProducer* ext); |
| | static void initialize(); |
| | static std::vector<Extension3MFPtr> createExtensions(); |
| |
|
| | private: |
| | static std::vector<Extension3MFProducerPtr> producer; |
| | }; |
| |
|
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | class MeshExport Exporter3MF: public Exporter |
| | { |
| | public: |
| | explicit Exporter3MF(std::string fileName, const std::vector<Extension3MFPtr>& = {}); |
| | ~Exporter3MF() override; |
| |
|
| | Exporter3MF(const Exporter3MF&) = delete; |
| | Exporter3MF(Exporter3MF&&) = delete; |
| | Exporter3MF& operator=(const Exporter3MF&) = delete; |
| | Exporter3MF& operator=(Exporter3MF&&) = delete; |
| |
|
| | bool addMesh(const char* name, const MeshObject& mesh) override; |
| | |
| | |
| | |
| | |
| | |
| | void setForceModel(bool model); |
| |
|
| | private: |
| | |
| | void write(); |
| |
|
| | private: |
| | class Private; |
| | std::unique_ptr<Private> d; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | class MeshExport ExporterAMF: public Exporter |
| | { |
| | public: |
| | |
| | |
| | |
| | |
| | ExporterAMF( |
| | std::string fileName, |
| | const std::map<std::string, std::string>& meta, |
| | bool compress = true |
| | ); |
| |
|
| | |
| | ~ExporterAMF() override; |
| |
|
| | ExporterAMF(const ExporterAMF&) = delete; |
| | ExporterAMF(ExporterAMF&&) = delete; |
| | ExporterAMF& operator=(const ExporterAMF&) = delete; |
| | ExporterAMF& operator=(ExporterAMF&&) = delete; |
| |
|
| | bool addMesh(const char* name, const MeshObject& mesh) override; |
| |
|
| | private: |
| | |
| | void write(); |
| |
|
| | private: |
| | std::ostream* outputStreamPtr {nullptr}; |
| | int nextObjectIndex {0}; |
| |
|
| | |
| | class VertLess; |
| | }; |
| |
|
| | } |
| |
|
| | #endif |
| |
|