0026500: Add the possibility to save only part of shapes from XCAF document in IGES...
[occt.git] / src / STEPCAFControl / STEPCAFControl_Writer.hxx
1 // Created on: 2000-08-15
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 _STEPCAFControl_Writer_HeaderFile
17 #define _STEPCAFControl_Writer_HeaderFile
18
19 #include <Standard.hxx>
20 #include <Standard_DefineAlloc.hxx>
21 #include <Standard_Handle.hxx>
22
23 #include <STEPControl_Writer.hxx>
24 #include <STEPCAFControl_DataMapOfLabelShape.hxx>
25 #include <STEPCAFControl_DataMapOfLabelExternFile.hxx>
26 #include <Standard_Boolean.hxx>
27 #include <MoniTool_DataMapOfShapeTransient.hxx>
28 #include <IFSelect_ReturnStatus.hxx>
29 #include <Standard_CString.hxx>
30 #include <STEPControl_StepModelType.hxx>
31 #include <TDF_LabelSequence.hxx>
32 class STEPCAFControl_DictionaryOfExternFile;
33 class XSControl_WorkSession;
34 class TDocStd_Document;
35 class TDF_Label;
36 class TCollection_AsciiString;
37 class STEPCAFControl_ExternFile;
38 class STEPControl_Writer;
39 class TopoDS_Shape;
40
41
42 //! Provides a tool to write DECAF document to the
43 //! STEP file. Besides transfer of shapes (including
44 //! assemblies) provided by STEPControl, supports also
45 //! colors and part names
46 //!
47 //! Also supports multifile writing
48 class STEPCAFControl_Writer 
49 {
50 public:
51
52   DEFINE_STANDARD_ALLOC
53
54   
55   //! Creates a writer with an empty
56   //! STEP model and sets ColorMode, LayerMode, NameMode and
57   //! PropsMode to Standard_True.
58   Standard_EXPORT STEPCAFControl_Writer();
59   
60   //! Creates a reader tool and attaches it to an already existing Session
61   //! Clears the session if it was not yet set for STEP
62   //! Clears the internal data structures
63   Standard_EXPORT STEPCAFControl_Writer(const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch = Standard_True);
64   
65   //! Clears the internal data structures and attaches to a new session
66   //! Clears the session if it was not yet set for STEP
67   Standard_EXPORT void Init (const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch = Standard_True);
68   
69   //! Writes all the produced models into file
70   //! In case of multimodel with extern references,
71   //! filename will be a name of root file, all other files
72   //! have names of corresponding parts
73   //! Provided for use like single-file writer
74   Standard_EXPORT IFSelect_ReturnStatus Write (const Standard_CString filename);
75   
76   //! Transfers a document (or single label) to a STEP model
77   //! The mode of translation of shape is AsIs
78   //! If multi is not null pointer, it switches to multifile
79   //! mode (with external refs), and string pointed by <multi>
80   //! gives prefix for names of extern files (can be empty string)
81   //! Returns True if translation is OK
82   Standard_EXPORT Standard_Boolean Transfer (const Handle(TDocStd_Document)& doc, const STEPControl_StepModelType mode = STEPControl_AsIs, const Standard_CString multi = 0);
83   Standard_EXPORT Standard_Boolean Transfer (const TDF_LabelSequence& L, const STEPControl_StepModelType mode = STEPControl_AsIs, const Standard_CString multi = 0);
84   Standard_EXPORT Standard_Boolean Transfer (const TDF_Label& L, const STEPControl_StepModelType mode = STEPControl_AsIs, const Standard_CString multi = 0);
85
86   Standard_EXPORT Standard_Boolean Perform (const Handle(TDocStd_Document)& doc, const TCollection_AsciiString& filename);
87   
88   //! Transfers a document and writes it to a STEP file
89   //! Returns True if translation is OK
90   Standard_EXPORT Standard_Boolean Perform (const Handle(TDocStd_Document)& doc, const Standard_CString filename);
91   
92   //! Returns data on external files
93   //! Returns Null handle if no external files are read
94   Standard_EXPORT const Handle(STEPCAFControl_DictionaryOfExternFile)& ExternFiles() const;
95   
96   //! Returns data on external file by its original label
97   //! Returns False if no external file with given name is read
98   Standard_EXPORT Standard_Boolean ExternFile (const TDF_Label& L, Handle(STEPCAFControl_ExternFile)& ef) const;
99   
100   //! Returns data on external file by its name
101   //! Returns False if no external file with given name is read
102   Standard_EXPORT Standard_Boolean ExternFile (const Standard_CString name, Handle(STEPCAFControl_ExternFile)& ef) const;
103   
104   //! Returns basic reader for root file
105   Standard_EXPORT STEPControl_Writer& ChangeWriter();
106   
107   //! Returns basic reader as const
108   Standard_EXPORT const STEPControl_Writer& Writer() const;
109   
110   //! Set ColorMode for indicate write Colors or not.
111   Standard_EXPORT void SetColorMode (const Standard_Boolean colormode);
112   
113   Standard_EXPORT Standard_Boolean GetColorMode() const;
114   
115   //! Set NameMode for indicate write Name or not.
116   Standard_EXPORT void SetNameMode (const Standard_Boolean namemode);
117   
118   Standard_EXPORT Standard_Boolean GetNameMode() const;
119   
120   //! Set LayerMode for indicate write Layers or not.
121   Standard_EXPORT void SetLayerMode (const Standard_Boolean layermode);
122   
123   Standard_EXPORT Standard_Boolean GetLayerMode() const;
124   
125   //! PropsMode for indicate write Validation properties or not.
126   Standard_EXPORT void SetPropsMode (const Standard_Boolean propsmode);
127   
128   Standard_EXPORT Standard_Boolean GetPropsMode() const;
129   
130   //! Set SHUO mode for indicate write SHUO or not.
131   Standard_EXPORT void SetSHUOMode (const Standard_Boolean shuomode);
132   
133   Standard_EXPORT Standard_Boolean GetSHUOMode() const;
134   
135   //! Set dimtolmode for indicate write D&GTs or not.
136   Standard_EXPORT void SetDimTolMode (const Standard_Boolean dimtolmode);
137   
138   Standard_EXPORT Standard_Boolean GetDimTolMode() const;
139   
140   //! Set dimtolmode for indicate write D&GTs or not.
141   Standard_EXPORT void SetMaterialMode (const Standard_Boolean matmode);
142   
143   Standard_EXPORT Standard_Boolean GetMaterialMode() const;
144
145
146
147
148 protected:
149
150   
151   //! Transfers labels to a STEP model
152   //! Returns True if translation is OK
153   //! isExternFile setting from TransferExternFiles method
154   Standard_EXPORT Standard_Boolean Transfer (STEPControl_Writer& wr, const TDF_LabelSequence& labels, const STEPControl_StepModelType mode = STEPControl_AsIs, const Standard_CString multi = 0, const Standard_Boolean isExternFile = Standard_False);
155   
156   //! Parses assembly structure of label L, writes all the simple
157   //! shapes each to its own file named by name of its label plus
158   //! prefix
159   //! Returns shape representing that assembly structure
160   //! in the form of nested empty compounds (and a sequence of
161   //! labels which are newly written nodes of this assembly)
162   Standard_EXPORT TopoDS_Shape TransferExternFiles (const TDF_Label& L, const STEPControl_StepModelType mode, TDF_LabelSequence& Lseq, const Standard_CString prefix = "");
163   
164   //! Write external references to STEP
165   Standard_EXPORT Standard_Boolean WriteExternRefs (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
166   
167   //! Write colors assigned to specified labels, to STEP model
168   Standard_EXPORT Standard_Boolean WriteColors (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels);
169   
170   //! Write names assigned to specified labels, to STEP model
171   Standard_EXPORT Standard_Boolean WriteNames (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
172   
173   //! Write D&GTs assigned to specified labels, to STEP model
174   Standard_EXPORT Standard_Boolean WriteDGTs (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
175   
176   //! Write materials assigned to specified labels, to STEP model
177   Standard_EXPORT Standard_Boolean WriteMaterials (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
178   
179   //! Write validation properties assigned to specified labels,
180   //! to STEP model
181   Standard_EXPORT Standard_Boolean WriteValProps (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels, const Standard_CString multi) const;
182   
183   //! Write layers assigned to specified labels, to STEP model
184   Standard_EXPORT Standard_Boolean WriteLayers (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
185   
186   //! Write SHUO assigned to specified component, to STEP model
187   Standard_EXPORT Standard_Boolean WriteSHUOs (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels);
188
189
190
191
192 private:
193
194
195
196   STEPControl_Writer myWriter;
197   Handle(STEPCAFControl_DictionaryOfExternFile) myFiles;
198   STEPCAFControl_DataMapOfLabelShape myLabels;
199   STEPCAFControl_DataMapOfLabelExternFile myLabEF;
200   Standard_Boolean myColorMode;
201   Standard_Boolean myNameMode;
202   Standard_Boolean myLayerMode;
203   Standard_Boolean myPropsMode;
204   Standard_Boolean mySHUOMode;
205   MoniTool_DataMapOfShapeTransient myMapCompMDGPR;
206   Standard_Boolean myDGTMode;
207   Standard_Boolean myMatMode;
208
209
210 };
211
212
213
214
215
216
217
218 #endif // _STEPCAFControl_Writer_HeaderFile