0025748: Parallel version of progress indicator
[occt.git] / src / BRepToIGESBRep / BRepToIGESBRep_Entity.hxx
1 // Created on: 1995-04-25
2 // Created by: Marie Jose MARTZ
3 // Copyright (c) 1995-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _BRepToIGESBRep_Entity_HeaderFile
18 #define _BRepToIGESBRep_Entity_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
23
24 #include <TopTools_IndexedMapOfShape.hxx>
25 #include <TColStd_IndexedMapOfTransient.hxx>
26 #include <BRepToIGES_BREntity.hxx>
27 #include <Standard_Integer.hxx>
28 #include <Standard_Real.hxx>
29 #include <Message_ProgressRange.hxx>
30
31 class IGESSolid_EdgeList;
32 class IGESSolid_VertexList;
33 class TopoDS_Vertex;
34 class TopoDS_Edge;
35 class IGESData_IGESEntity;
36 class TopoDS_Shape;
37 class TopoDS_Face;
38 class IGESSolid_Loop;
39 class TopoDS_Wire;
40 class IGESSolid_Face;
41 class IGESSolid_Shell;
42 class TopoDS_Shell;
43 class IGESSolid_ManifoldSolid;
44 class TopoDS_Solid;
45 class TopoDS_CompSolid;
46 class TopoDS_Compound;
47
48 //! provides methods to transfer BRep entity from CASCADE to IGESBRep.
49 class BRepToIGESBRep_Entity  : public BRepToIGES_BREntity
50 {
51 public:
52
53   DEFINE_STANDARD_ALLOC
54
55   
56   //! Creates a tool Entity
57   Standard_EXPORT BRepToIGESBRep_Entity();
58   
59   //! Clears the contents of the fields
60   Standard_EXPORT void Clear();
61   
62   //! Create the VertexList entity
63   Standard_EXPORT void TransferVertexList();
64   
65   //! Returns the index of <myvertex> in "myVertices"
66   Standard_EXPORT Standard_Integer IndexVertex (const TopoDS_Vertex& myvertex) const;
67   
68   //! Stores <myvertex> in "myVertices"
69   //! Returns the index of <myvertex>.
70   Standard_EXPORT Standard_Integer AddVertex (const TopoDS_Vertex& myvertex);
71   
72   //! Transfert an Edge entity from TopoDS to IGES
73   Standard_EXPORT void TransferEdgeList();
74   
75   //! Returns the index of <myedge> in "myEdges"
76   Standard_EXPORT Standard_Integer IndexEdge (const TopoDS_Edge& myedge) const;
77   
78   //! Stores <myedge> in "myEdges" and <mycurve3d> in "myCurves".
79   //! Returns the index of <myedge>.
80   Standard_EXPORT Standard_Integer AddEdge (const TopoDS_Edge& myedge, const Handle(IGESData_IGESEntity)& mycurve3d);
81   
82   //! Returns the result of the transfert of any Shape
83   //! If  the transfer has  failed, this member return a NullEntity.
84   Standard_EXPORT virtual Handle(IGESData_IGESEntity) TransferShape
85                    (const TopoDS_Shape& start,
86                     const Message_ProgressRange& theProgress = Message_ProgressRange()) Standard_OVERRIDE;
87   
88   //! Transfert an Edge entity from TopoDS to IGES
89   //! If this Entity could not be converted, this member returns a NullEntity.
90   Standard_EXPORT Handle(IGESData_IGESEntity) TransferEdge (const TopoDS_Edge& myedge);
91   
92   //! Transfert an Edge entity from TopoDS to IGES
93   //! If this Entity could not be converted, this member returns a NullEntity.
94   Standard_EXPORT Handle(IGESData_IGESEntity) TransferEdge (const TopoDS_Edge& myedge, const TopoDS_Face& myface, const Standard_Real length);
95   
96   //! Transfert a Wire entity from TopoDS to IGES.
97   //! Returns the curve associated to mywire in the parametric space of myface.
98   //! If this Entity could not be converted, this member returns a NullEntity.
99   Standard_EXPORT Handle(IGESSolid_Loop) TransferWire (const TopoDS_Wire& mywire, const TopoDS_Face& myface, const Standard_Real length);
100   
101   //! Transfert a Face entity from TopoDS to IGES
102   //! If this Entity could not be converted, this member returns a NullEntity.
103   Standard_EXPORT Handle(IGESSolid_Face) TransferFace (const TopoDS_Face& start);
104   
105   //! Transfert an Shell entity from TopoDS to IGES
106   //! If this Entity could not be converted, this member returns a NullEntity.
107   Standard_EXPORT Handle(IGESSolid_Shell) TransferShell (const TopoDS_Shell& start,
108                           const Message_ProgressRange& theProgress = Message_ProgressRange());
109   
110   //! Transfert a Solid entity from TopoDS to IGES
111   //! If this Entity could not be converted, this member returns a NullEntity.
112   Standard_EXPORT Handle(IGESSolid_ManifoldSolid) TransferSolid (const TopoDS_Solid& start,
113                           const Message_ProgressRange& theProgress = Message_ProgressRange());
114   
115   //! Transfert an CompSolid entity from TopoDS to IGES
116   //! If this Entity could not be converted, this member returns a NullEntity.
117   Standard_EXPORT Handle(IGESData_IGESEntity) TransferCompSolid (const TopoDS_CompSolid& start,
118                           const Message_ProgressRange& theProgress = Message_ProgressRange());
119   
120   //! Transfert a Compound entity from TopoDS to IGES
121   //! If this Entity could not be converted, this member returns a NullEntity.
122   Standard_EXPORT Handle(IGESData_IGESEntity) TransferCompound (const TopoDS_Compound& start,
123                           const Message_ProgressRange& theProgress = Message_ProgressRange());
124
125
126
127
128 protected:
129
130
131
132
133
134 private:
135
136
137
138   TopTools_IndexedMapOfShape myVertices;
139   TopTools_IndexedMapOfShape myEdges;
140   TColStd_IndexedMapOfTransient myCurves;
141   Handle(IGESSolid_EdgeList) myEdgeList;
142   Handle(IGESSolid_VertexList) myVertexList;
143
144
145 };
146
147
148
149
150
151
152
153 #endif // _BRepToIGESBRep_Entity_HeaderFile