| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef IMPORT_EXPORTOCAF_H |
| | #define IMPORT_EXPORTOCAF_H |
| |
|
| | #include <map> |
| | #include <set> |
| | #include <string> |
| | #include <vector> |
| |
|
| | #include <TDocStd_Document.hxx> |
| | #include <XCAFDoc_ColorTool.hxx> |
| | #include <XCAFDoc_ShapeTool.hxx> |
| |
|
| | #include <App/Material.h> |
| | #include <Mod/Import/ImportGlobal.h> |
| |
|
| |
|
| | class TDF_Label; |
| | class TopLoc_Location; |
| |
|
| | namespace App |
| | { |
| | class Document; |
| | class DocumentObject; |
| | class Part; |
| | } |
| | namespace Part |
| | { |
| | class Feature; |
| | } |
| |
|
| | namespace Import |
| | { |
| |
|
| | class ImportExport ExportOCAF |
| | { |
| | public: |
| | ExportOCAF(Handle(TDocStd_Document) hDoc, bool explicitPlacement); |
| | virtual ~ExportOCAF(); |
| | void exportObjects(std::vector<App::DocumentObject*>& objs); |
| | int exportObject( |
| | App::DocumentObject* obj, |
| | std::vector<TDF_Label>& hierarchical_label, |
| | std::vector<TopLoc_Location>& hierarchical_loc, |
| | std::vector<App::DocumentObject*>& hierarchical_part |
| | ); |
| | int saveShape( |
| | Part::Feature* part, |
| | const std::vector<Base::Color>&, |
| | std::vector<TDF_Label>& hierarchical_label, |
| | std::vector<TopLoc_Location>& hierarchical_loc, |
| | std::vector<App::DocumentObject*>& hierarchical_part |
| | ); |
| | void getPartColors( |
| | std::vector<App::DocumentObject*> hierarchical_part, |
| | std::vector<TDF_Label> FreeLabels, |
| | std::vector<int> part_id, |
| | std::vector<std::vector<Base::Color>>& Colors |
| | ) const; |
| | void reallocateFreeShape( |
| | std::vector<App::DocumentObject*> hierarchical_part, |
| | std::vector<TDF_Label> FreeLabels, |
| | std::vector<int> part_id, |
| | std::vector<std::vector<Base::Color>>& Colors |
| | ); |
| | void getFreeLabels( |
| | std::vector<TDF_Label>& hierarchical_label, |
| | std::vector<TDF_Label>& labels, |
| | std::vector<int>& label_part_id |
| | ); |
| | void createNode( |
| | App::Part* part, |
| | int& root_it, |
| | std::vector<TDF_Label>& hierarchical_label, |
| | std::vector<TopLoc_Location>& hierarchical_loc, |
| | std::vector<App::DocumentObject*>& hierarchical_part |
| | ); |
| | void pushNode( |
| | int root, |
| | int node, |
| | std::vector<TDF_Label>& hierarchical_label, |
| | std::vector<TopLoc_Location>& hierarchical_loc |
| | ); |
| |
|
| | private: |
| | virtual void findColors(Part::Feature*, std::vector<Base::Color>&) const |
| | {} |
| | std::vector<App::DocumentObject*> filterPart(App::Part* part) const; |
| |
|
| | private: |
| | Handle(TDocStd_Document) pDoc; |
| | Handle(XCAFDoc_ShapeTool) aShapeTool; |
| | Handle(XCAFDoc_ColorTool) aColorTool; |
| | TDF_Label rootLabel; |
| | bool keepExplicitPlacement; |
| | bool filterBaseFeature {true}; |
| | }; |
| |
|
| | class ImportExport ExportOCAFCmd: public ExportOCAF |
| | { |
| | public: |
| | ExportOCAFCmd(Handle(TDocStd_Document) h, bool explicitPlacement); |
| | void setPartColorsMap(const std::map<Part::Feature*, std::vector<Base::Color>>& colors) |
| | { |
| | partColors = colors; |
| | } |
| |
|
| | private: |
| | void findColors(Part::Feature*, std::vector<Base::Color>&) const override; |
| |
|
| | private: |
| | std::map<Part::Feature*, std::vector<Base::Color>> partColors; |
| | }; |
| |
|
| |
|
| | } |
| |
|
| | #endif |
| |
|