| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef IMPORT_EXPORTOCAF2_H |
| | #define IMPORT_EXPORTOCAF2_H |
| |
|
| | #include <functional> |
| | #include <map> |
| | #include <set> |
| | #include <string> |
| | #include <unordered_map> |
| | #include <vector> |
| |
|
| | #include <TDocStd_Document.hxx> |
| |
|
| | #include <Mod/Import/ImportGlobal.h> |
| | #include "Tools.h" |
| |
|
| | namespace App |
| | { |
| | class DocumentObject; |
| | } |
| |
|
| | namespace Part |
| | { |
| | class TopoShape; |
| | } |
| |
|
| | namespace Import |
| | { |
| |
|
| | struct ImportExport ExportOCAFOptions |
| | { |
| | ExportOCAFOptions(); |
| | Base::Color defaultColor; |
| | bool exportHidden = true; |
| | bool keepPlacement = false; |
| | }; |
| |
|
| | class ImportExport ExportOCAF2 |
| | { |
| | public: |
| | using GetShapeColorsFunc |
| | = std::function<std::map<std::string, Base::Color>(App::DocumentObject*, const char*)>; |
| | explicit ExportOCAF2(Handle(TDocStd_Document) hDoc, GetShapeColorsFunc func = GetShapeColorsFunc()); |
| |
|
| | static ExportOCAFOptions customExportOptions(); |
| | void setExportOptions(ExportOCAFOptions opts) |
| | { |
| | options = opts; |
| | } |
| | void setExportHiddenObject(bool enable) |
| | { |
| | options.exportHidden = enable; |
| | } |
| | void setKeepPlacement(bool enable) |
| | { |
| | options.keepPlacement = enable; |
| | } |
| | void exportObjects(std::vector<App::DocumentObject*>& objs, const char* name = nullptr); |
| | bool canFallback(std::vector<App::DocumentObject*> objs); |
| |
|
| | private: |
| | TDF_Label exportObject( |
| | App::DocumentObject* obj, |
| | const char* sub, |
| | TDF_Label parent, |
| | const char* name = nullptr |
| | ); |
| | void setupObject( |
| | TDF_Label label, |
| | App::DocumentObject* obj, |
| | const Part::TopoShape& shape, |
| | const std::string& prefix, |
| | const char* name = nullptr, |
| | bool force = false |
| | ); |
| | void setName(TDF_Label label, App::DocumentObject* obj, const char* name = nullptr); |
| | TDF_Label findComponent(const char* subname, TDF_Label label, TDF_LabelSequence& labels); |
| |
|
| | private: |
| | Handle(TDocStd_Document) pDoc; |
| | Handle(XCAFDoc_ShapeTool) aShapeTool; |
| | Handle(XCAFDoc_ColorTool) aColorTool; |
| |
|
| | std::unordered_map<App::DocumentObject*, TDF_Label> myObjects; |
| |
|
| | std::unordered_map<TDF_Label, std::vector<std::string>, LabelHasher> myNames; |
| |
|
| | std::set<std::pair<App::DocumentObject*, std::string>> mySetups; |
| |
|
| | std::vector<App::DocumentObject*> groupLinks; |
| |
|
| | GetShapeColorsFunc getShapeColors; |
| |
|
| | ExportOCAFOptions options; |
| | }; |
| |
|
| | } |
| |
|
| | #endif |
| |
|