Integration of OCCT 6.5.0 from SVN
[occt.git] / src / IGESSolid / IGESSolid_TopoBuilder.cdl
CommitLineData
7fd59977 1-- File: IGESSolid_TopoBuilder.cdl
2-- Created: Wed Nov 16 16:05:42 1994
3-- Author: Christian CAILLET
4-- <cky@stylox>
5---Copyright: Matra Datavision 1994
6
7
8class TopoBuilder from IGESSolid
9
10 ---Purpose : This class manages the creation of an IGES Topologic entity
11 -- (BREP : ManifoldSolid, Shell, Face)
12 -- This includes definiting of Vertex and Edge Lists,
13 -- building of Edges and Loops
14
15uses HSequenceOfInteger, HSequenceOfTransient,
16 XYZ, HSequenceOfXYZ, IGESEntity,
17 VertexList, EdgeList, Loop, Face, Shell, ManifoldSolid
18
19raises DomainError
20
21is
22
23 Create returns TopoBuilder;
24 ---Purpose : Creates an empty TopoBuilder
25 -- This creates also a unique VertexList and a unique EdgeList,
26 -- empty, but which can be referenced from starting
27
28 Clear (me : in out) is static;
29 ---Purpose : Resets the TopoBuilder for an entirely new operation
30 -- (with a new EdgeList, a new VertexList, new Shells, ...)
31
32 AddVertex (me : in out; val : XYZ) is static;
33 ---Purpose : Adds a Vertex to the VertexList
34
35 NbVertices (me) returns Integer is static;
36 ---Purpose : Returns the count of already recorded Vertices
37
38 Vertex (me; num : Integer) returns XYZ;
39 ---Purpose : Returns a Vertex, given its rank
40 ---C++ : return const &
41
42 VertexList (me) returns mutable VertexList;
43 ---Purpose : Returns the VertexList. It can be referenced, but it remains
44 -- empty until call to EndShell or EndSolid
45
46 AddEdge (me : in out; curve : mutable IGESEntity; vstart, vend : Integer)
47 ---Purpose : Adds an Edge (3D) to the EdgeList, defined by a Curve and
48 -- two number of Vertex, for start and end
49 raises DomainError is static;
50 -- Error if curve is Null or if vstart or vend is zero
51
52 NbEdges (me) returns Integer is static;
53 ---Purpose : Returns the count of recorded Edges (3D)
54
55 Edge (me; num : Integer; curve : out mutable IGESEntity;
56 vstart, vend : out Integer) is static;
57 ---Purpose : Returns the definition of an Edge (3D) given its rank
58
59 EdgeList (me) returns mutable EdgeList;
60 ---Purpose : Returns the EdgeList. It can be referenced, but it remains
61 -- empty until call to EndShell or EndSolid
62
63 EndLists (me : in out) is static protected;
64 ---Purpose : Closes the definition of Vertex and Edge Lists
65 -- Warning : Called only by EndSimpleShell and EndSolid
66
67
68 MakeLoop (me : in out) is static;
69 ---Purpose : Begins the definition of a new Loop : it is the Current Loop
70 -- All Edges (UV) defined by MakeEdge/EndEdge will be added in it
71 -- The Loop can then be referenced but is empty. It will be
72 -- filled with its Edges(UV) by EndLoop (from SetOuter/AddInner)
73
74 MakeEdge (me : in out; edgetype, edge3d, orientation : Integer)
75 ---Purpose : Defines an Edge(UV), to be added in the current Loop by EndEdge
76 -- <edgetype> gives the type of the edge
77 -- <edge3d> identifies the Edge(3D) used as support
78 -- The EdgeList is allways the current one
79 -- <orientation gives the orientation flag
80 -- It is then necessary to :
81 -- - give the parametric curves
82 -- - close the definition of this edge(UV) by EndEdge, else
83 -- the next call to MakeEdge will erase this one
84 raises DomainError is static;
85 -- Error if <edge3d> is null or out of range, or if
86 -- <edgetype> or <orientation> has not admitted value,
87 -- or if no current Loop is defined
88
89 AddCurveUV (me : in out; curve : mutable IGESEntity; iso : Integer)
90 ---Purpose : Adds a Parametric Curve (UV) to the current Edge(UV)
91 raises DomainError is static;
92 -- Error if curve is Null or not of an admitted type, or if
93 -- no current Edge(UV) is defined
94
95 EndEdge (me : in out) is static;
96 ---Purpose : Closes the definition of an Edge(UV) and adds it to the
97 -- current Loop
98
99 EndLoop (me : in out) is static protected;
100 ---Purpose : Closes the definition of a Loop and fills it
101 -- Warning : EndLoop should not be called directly but through
102 -- SetOuter or AddInner, which work on the current Face
103
104 MakeFace (me : in out; surface : mutable IGESEntity)
105 ---Purpose : Begins the definition of a new Face, on a surface
106 -- All Loops defined by MakeLoop will be added in it, according
107 -- the closing call : SetOuter for the Outer Loop (by default,
108 -- if SetOuter is not called, no OuterLoop is defined);
109 -- AddInner for the list of Inner Loops (there can be none)
110 raises DomainError is static;
111 -- Error if <surface> is Null or not of an admitted type
112
113 SetOuter (me : in out) is static;
114 ---Purpose : Closes the current Loop and sets it Loop as Outer Loop. If no
115 -- current Loop has yet been defined, does nothing.
116
117 AddInner (me : in out) is static;
118 ---Purpose : Closes the current Loop and adds it to the list of Inner Loops
119 -- for the current Face
120
121 EndFace (me : in out; orientation : Integer) is static;
122 ---Purpose : Closes the definition of the current Face, fills it and adds
123 -- it to the current Shell with an orientation flag (0/1)
124
125 MakeShell (me : in out) is static;
126 ---Purpose : Begins the definition of a new Shell (either Simple or in a
127 -- Solid)
128
129 EndShell (me : in out) is static protected;
130 ---Purpose : Closes the definition of the current Shell
131 -- Warning : EndShell should not be called directly but through
132 -- EndSimpleShell (for a simple Shell), SetMainShell (for main
133 -- Shell of a Solid) or AddVoidShell (to a Solid)
134
135 EndSimpleShell (me : in out) is static;
136 ---Purpose : Closes the whole definition as that of a simple Shell
137
138 SetMainShell (me : in out; orientation : Integer) is static;
139 ---Purpose : Closes the definition of the current Shell as for the Main
140 -- Shell of a Solid, with an orientation flag (0/1)
141
142 AddVoidShell (me : in out; orientation : Integer) is static;
143 ---Purpose : Closes the definition of the current Shell and adds it to the
144 -- list of Void Shells of a Solid, with an orientation flag (0/1)
145
146 EndSolid (me : in out) is static;
147 ---Purpose : Closes the whole definition as that of a ManifoldSolid
148 -- Its call is exclusive from that of EndSimpleShell
149
150 Shell (me) returns mutable Shell is static;
151 ---Purpose : Returns the current Shell. The current Shell is created empty
152 -- by MakeShell and filled by EndShell
153
154 Solid (me) returns mutable ManifoldSolid is static;
155 ---Purpose : Returns the current ManifoldSolid. It is created empty by
156 -- Create and filled by EndSolid
157
158fields
159
160 thesolid : ManifoldSolid; -- current Solid
161 themains : Shell;
162 themflag : Integer;
163 thevoids : HSequenceOfTransient;
164 thevflag : HSequenceOfInteger;
165 theshell : Shell; -- current Shell
166 thefaces : HSequenceOfTransient;
167 thefflag : HSequenceOfInteger;
168 theface : Face; -- current Face
169 thesurf : IGESEntity;
170 theouter : Integer;
171 theinner : HSequenceOfTransient;
172
173 theloop : Loop; -- current Loop
174 theetype : HSequenceOfInteger;
175 thee3d : HSequenceOfInteger;
176 theeflag : HSequenceOfInteger;
177 theeuv : HSequenceOfTransient; -- (for Edges UV)
178 theisol : HSequenceOfInteger;
179 thecuruv : HSequenceOfTransient; -- current Edge(UV)
180 theiso : HSequenceOfTransient;
181
182 theedgel : EdgeList;
183 thecur3d : HSequenceOfTransient;
184 thevstar : HSequenceOfInteger;
185 thevend : HSequenceOfInteger;
186
187 thevertl : VertexList;
188 thepoint : HSequenceOfXYZ;
189
190end TopoBuilder;