250bf213b89e5f6dc93873ab711fe10f797ffe7e
[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   
84   //! Method to transfer part of the document specified by label
85   Standard_EXPORT Standard_Boolean Transfer (const TDF_Label& L, const STEPControl_StepModelType mode = STEPControl_AsIs, const Standard_CString multi = 0 );
86
87   Standard_EXPORT Standard_Boolean Perform (const Handle(TDocStd_Document)& doc, const TCollection_AsciiString& filename);
88   
89   //! Transfers a document and writes it to a STEP file
90   //! Returns True if translation is OK
91   Standard_EXPORT Standard_Boolean Perform (const Handle(TDocStd_Document)& doc, const Standard_CString filename);
92   
93   //! Returns data on external files
94   //! Returns Null handle if no external files are read
95   Standard_EXPORT const Handle(STEPCAFControl_DictionaryOfExternFile)& ExternFiles() const;
96   
97   //! Returns data on external file by its original label
98   //! Returns False if no external file with given name is read
99   Standard_EXPORT Standard_Boolean ExternFile (const TDF_Label& L, Handle(STEPCAFControl_ExternFile)& ef) const;
100   
101   //! Returns data on external file by its name
102   //! Returns False if no external file with given name is read
103   Standard_EXPORT Standard_Boolean ExternFile (const Standard_CString name, Handle(STEPCAFControl_ExternFile)& ef) const;
104   
105   //! Returns basic reader for root file
106   Standard_EXPORT STEPControl_Writer& ChangeWriter();
107   
108   //! Returns basic reader as const
109   Standard_EXPORT const STEPControl_Writer& Writer() const;
110   
111   //! Set ColorMode for indicate write Colors or not.
112   Standard_EXPORT void SetColorMode (const Standard_Boolean colormode);
113   
114   Standard_EXPORT Standard_Boolean GetColorMode() const;
115   
116   //! Set NameMode for indicate write Name or not.
117   Standard_EXPORT void SetNameMode (const Standard_Boolean namemode);
118   
119   Standard_EXPORT Standard_Boolean GetNameMode() const;
120   
121   //! Set LayerMode for indicate write Layers or not.
122   Standard_EXPORT void SetLayerMode (const Standard_Boolean layermode);
123   
124   Standard_EXPORT Standard_Boolean GetLayerMode() const;
125   
126   //! PropsMode for indicate write Validation properties or not.
127   Standard_EXPORT void SetPropsMode (const Standard_Boolean propsmode);
128   
129   Standard_EXPORT Standard_Boolean GetPropsMode() const;
130   
131   //! Set SHUO mode for indicate write SHUO or not.
132   Standard_EXPORT void SetSHUOMode (const Standard_Boolean shuomode);
133   
134   Standard_EXPORT Standard_Boolean GetSHUOMode() const;
135   
136   //! Set dimtolmode for indicate write D&GTs or not.
137   Standard_EXPORT void SetDimTolMode (const Standard_Boolean dimtolmode);
138   
139   Standard_EXPORT Standard_Boolean GetDimTolMode() const;
140   
141   //! Set dimtolmode for indicate write D&GTs or not.
142   Standard_EXPORT void SetMaterialMode (const Standard_Boolean matmode);
143   
144   Standard_EXPORT Standard_Boolean GetMaterialMode() const;
145
146
147
148
149 protected:
150   //! Mehod to writing sequence of root assemblies or part of the file specified by use by one label 
151   Standard_EXPORT Standard_Boolean Transfer (const TDF_LabelSequence& L, const STEPControl_StepModelType mode = STEPControl_AsIs, const Standard_CString multi = 0);
152   
153   //! Transfers labels to a STEP model
154   //! Returns True if translation is OK
155   //! isExternFile setting from TransferExternFiles method
156   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) ;
157   
158   //! Parses assembly structure of label L, writes all the simple
159   //! shapes each to its own file named by name of its label plus
160   //! prefix
161   //! Returns shape representing that assembly structure
162   //! in the form of nested empty compounds (and a sequence of
163   //! labels which are newly written nodes of this assembly)
164   Standard_EXPORT TopoDS_Shape TransferExternFiles (const TDF_Label& L, const STEPControl_StepModelType mode, TDF_LabelSequence& Lseq, const Standard_CString prefix = "");
165   
166   //! Write external references to STEP
167   Standard_EXPORT Standard_Boolean WriteExternRefs (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
168   
169   //! Write colors assigned to specified labels, to STEP model
170   Standard_EXPORT Standard_Boolean WriteColors (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels);
171   
172   //! Write names assigned to specified labels, to STEP model
173   Standard_EXPORT Standard_Boolean WriteNames (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
174   
175   //! Write D&GTs assigned to specified labels, to STEP model
176   Standard_EXPORT Standard_Boolean WriteDGTs (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
177   
178   //! Write materials assigned to specified labels, to STEP model
179   Standard_EXPORT Standard_Boolean WriteMaterials (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
180   
181   //! Write validation properties assigned to specified labels,
182   //! to STEP model
183   Standard_EXPORT Standard_Boolean WriteValProps (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels, const Standard_CString multi) const;
184   
185   //! Write layers assigned to specified labels, to STEP model
186   Standard_EXPORT Standard_Boolean WriteLayers (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
187   
188   //! Write SHUO assigned to specified component, to STEP model
189   Standard_EXPORT Standard_Boolean WriteSHUOs (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels);
190
191   
192
193 private:
194
195
196
197   STEPControl_Writer myWriter;
198   Handle(STEPCAFControl_DictionaryOfExternFile) myFiles;
199   STEPCAFControl_DataMapOfLabelShape myLabels;
200   STEPCAFControl_DataMapOfLabelExternFile myLabEF;
201   Standard_Boolean myColorMode;
202   Standard_Boolean myNameMode;
203   Standard_Boolean myLayerMode;
204   Standard_Boolean myPropsMode;
205   Standard_Boolean mySHUOMode;
206   MoniTool_DataMapOfShapeTransient myMapCompMDGPR;
207   Standard_Boolean myDGTMode;
208   Standard_Boolean myMatMode;
209
210
211 };
212
213
214
215
216 #endif // _STEPCAFControl_Writer_HeaderFile