0833f89488ec01075cd256d8d21964c6db6f27c7
[occt.git] / src / IGESCAFControl / IGESCAFControl_Writer.hxx
1 // Created on: 2000-08-17
2 // Created by: Andrey BETENEV
3 // Copyright (c) 2000-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 #ifndef _IGESCAFControl_Writer_HeaderFile
17 #define _IGESCAFControl_Writer_HeaderFile
18
19 #include <Standard.hxx>
20 #include <Standard_DefineAlloc.hxx>
21 #include <Standard_Handle.hxx>
22
23 #include <Standard_Boolean.hxx>
24 #include <IGESControl_Writer.hxx>
25 #include <Standard_CString.hxx>
26 #include <TDF_LabelSequence.hxx>
27 #include <XCAFPrs_DataMapOfShapeStyle.hxx>
28 #include <XCAFPrs_DataMapOfStyleTransient.hxx>
29 #include <TopTools_MapOfShape.hxx>
30 class XSControl_WorkSession;
31 class TDocStd_Document;
32 class TCollection_AsciiString;
33 class TopoDS_Shape;
34 class XCAFPrs_Style;
35
36
37 //! Provides a tool to write DECAF document to the
38 //! IGES file. Besides transfer of shapes (including
39 //! assemblies) provided by IGESControl, supports also
40 //! colors and part names
41 //! IGESCAFControl_Writer writer();
42 //! Methods for writing IGES file:
43 //! writer.Transfer (Document);
44 //! writer.Write("filename") or writer.Write(OStream)  or
45 //! writer.Perform(Document,"filename");
46 //! Methods for managing the writing of attributes.
47 //! Colors
48 //! writer.SetColorMode(colormode);
49 //! Standard_Boolean colormode = writer.GetColorMode();
50 //! Layers
51 //! writer.SetLayerMode(layermode);
52 //! Standard_Boolean layermode = writer.GetLayerMode();
53 //! Names
54 //! writer.SetNameMode(namemode);
55 //! Standard_Boolean namemode = writer.GetNameMode();
56 class IGESCAFControl_Writer  : public IGESControl_Writer
57 {
58 public:
59
60   DEFINE_STANDARD_ALLOC
61
62   
63   //! Creates a writer with an empty
64   //! IGES model and sets ColorMode, LayerMode and NameMode to Standard_True.
65   Standard_EXPORT IGESCAFControl_Writer();
66   
67   //! Creates a reader tool and attaches it to an already existing Session
68   //! Clears the session if it was not yet set for IGES
69   Standard_EXPORT IGESCAFControl_Writer(const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch = Standard_True);
70   
71   //! Transfers a document to a IGES model
72   //! Returns True if translation is OK
73   Standard_EXPORT Standard_Boolean Transfer (const Handle(TDocStd_Document)& doc);
74   
75   Standard_EXPORT Standard_Boolean Perform (const Handle(TDocStd_Document)& doc, const TCollection_AsciiString& filename);
76   
77   //! Transfers a document and writes it to a IGES file
78   //! Returns True if translation is OK
79   Standard_EXPORT Standard_Boolean Perform (const Handle(TDocStd_Document)& doc, const Standard_CString filename);
80   
81   //! Set ColorMode for indicate write Colors or not.
82   Standard_EXPORT void SetColorMode (const Standard_Boolean colormode);
83   
84   Standard_EXPORT Standard_Boolean GetColorMode() const;
85   
86   //! Set NameMode for indicate write Name or not.
87   Standard_EXPORT void SetNameMode (const Standard_Boolean namemode);
88   
89   Standard_EXPORT Standard_Boolean GetNameMode() const;
90   
91   //! Set LayerMode for indicate write Layers or not.
92   Standard_EXPORT void SetLayerMode (const Standard_Boolean layermode);
93   
94   Standard_EXPORT Standard_Boolean GetLayerMode() const;
95
96
97
98
99 protected:
100
101   
102   //! Transfers labels to a IGES model
103   //! Returns True if translation is OK
104   Standard_EXPORT Standard_Boolean Transfer (const TDF_LabelSequence& labels);
105   
106   //! Reads colors from DECAF document and assigns them
107   //! to corresponding IGES entities
108   Standard_EXPORT Standard_Boolean WriteAttributes (const TDF_LabelSequence& labels);
109   
110   //! Reads layers from DECAF document and assigns them
111   //! to corresponding IGES entities
112   Standard_EXPORT Standard_Boolean WriteLayers (const TDF_LabelSequence& labels);
113   
114   //! Recursivile iterates on subshapes and assign names
115   //! to IGES entity
116   Standard_EXPORT Standard_Boolean WriteNames (const TDF_LabelSequence& labels);
117
118
119
120
121 private:
122
123   
124   //! Recursively iterates on subshapes and assigns colors
125   //! to faces and edges (if set)
126   Standard_EXPORT void MakeColors (const TopoDS_Shape& S, const XCAFPrs_DataMapOfShapeStyle& settings, XCAFPrs_DataMapOfStyleTransient& colors, TopTools_MapOfShape& Map, const XCAFPrs_Style& inherit);
127
128
129   Standard_Boolean myColorMode;
130   Standard_Boolean myNameMode;
131   Standard_Boolean myLayerMode;
132
133
134 };
135
136
137
138
139
140
141
142 #endif // _IGESCAFControl_Writer_HeaderFile