Integration of OCCT 6.5.0 from SVN
[occt.git] / src / BRepAlgo / BRepAlgo_DSAccess.cdl
CommitLineData
7fd59977 1-- File: BRepAlgo_DSAccess.cdl
2-- Created: Wed Aug 13 16:01:14 1997
3-- Author: Prestataire Mary FABIEN
4-- <fbi@langdox.paris1.matra-dtv.fr>
5---Copyright: Matra Datavision 1997
6
7class DSAccess from BRepAlgo
8
9 ---Purpose:
10
11uses
12
13 HDataStructure from TopOpeBRepDS,
14 Kind from TopOpeBRepDS,
15 Shape from TopoDS,
16 Wire from TopoDS,
17 Face from TopoDS,
18 Vertex from TopoDS,
19 ListOfInteger from TColStd,
20 SetOfInteger from TColStd,
21 MapOfInteger from TColStd,
22 ListOfShape from TopTools,
23 State from TopAbs,
24 CheckStatus from BRepAlgo,
25 EdgeConnector from BRepAlgo,
26 LoopSet from TopOpeBRepBuild,
27 HBuilder from TopOpeBRepBuild,
28 DataMapOfShapeInterference from BRepAlgo,
29 DataMapOfShapeShape from TopTools,
30 DataMapOfShapeListOfShape from TopTools,
31 DSFiller from TopOpeBRep
32
33is
34
35 Create returns DSAccess from BRepAlgo;
36
37 Init(me: in out);
38 ---Purpose: Clears the internal data structure, including the
39 --Shapes of Load().
40
41
42-- Filling of the DS
43
44 Load(me : in out; S : Shape from TopoDS);
45 ---Purpose: Loads the shape in DS.
46 --
47
48 Load(me : in out; S1, S2 : in out Shape from TopoDS);
49 ---Purpose: Loads two shapes in the DS without intersecting them.
50
51 Intersect(me : in out);
52 ---Purpose: Intersects two shapes at input and loads the DS with
53 -- their intersection. Clears the TopOpeBRepBuild_HBuilder if
54 -- necessary
55
56 Intersect(me : in out; S1, S2 : Shape from TopoDS);
57 ---Purpose: Intersects the faces contained in two given shapes
58 -- and loads them in the DS. Clears the TopOpeBRepBuild_HBuilder
59 -- if necessary
60
61 SameDomain(me : in out;S1, S2 : Shape from TopoDS);
62 ---Purpose: This method does the same thing as the previous,
63 -- but faster. There is no intersection face/face 3D.
64 -- The faces have the same support(surface). No test of
65 -- tangency (that is why it is faster). Intersects in 2d
66 -- the faces tangent F1 anf F2.
67
68
69-- Construction des Sections
70
71 GetSectionEdgeSet(me : in out; S1,S2 : Shape from TopoDS)
72 ---Purpose: returns compounds of Edge connected with section, which
73 -- contains sections between faces contained in S1 and S2.
74 -- returns an empty list of Shape if S1 or S2 do not contain
75 -- face.
76 -- calls GetSectionEdgeSet() if it has not already been done
77 ---C++: return const &
78 returns ListOfShape from TopTools;
79
80 GetSectionEdgeSet(me : in out)
81 ---Purpose: returns all compounds of edges connected with section
82 -- contained in the DS
83 ---C++: return const &
84 returns ListOfShape from TopTools;
85
86 IsWire(me : in out;Compound : Shape from TopoDS)
87 ---Purpose: NYI
88 returns Boolean from Standard;
89
90 Wire(me : in out;Compound : Shape from TopoDS)
91 ---Purpose: NYI
92 ---C++: return const &
93 returns Shape from TopoDS;
94
95 SectionVertex(me : in out;S1 : Shape from TopoDS;S2 : Shape from TopoDS)
96 ---Purpose: NYI
97 -- returns the vertex of section, which contains the section
98 -- between face S1 and edge S2 (returns an empty Shape
99 -- if S1 is not a face or if S2 is not an edge)
100 ---C++: return const &
101 returns ListOfShape from TopTools;
102
103
104-- Edition de la SD
105
106 SuppressEdgeSet(me : in out; Compound : Shape from TopoDS);
107 ---Purpose: Invalidates a complete line of section. All
108 -- Edges connected by Vertex or a Wire. Can be
109 -- a group of connected Edges, which do not form a
110 -- standard Wire.
111
112 ChangeEdgeSet(me : in out; Old, New : Shape from TopoDS);
113 ---Purpose: Modifies a line of section. <New> -- should be a
114 -- Group of Edges connected by Vertex. -- Can be a
115 -- Wire. Can be a group of connected Edges that do not
116 -- form a standard Wire. <New> should be sub-groupn of <Old>
117 --
118 --
119
120 SuppressSectionVertex(me : in out;V : Vertex from TopoDS);
121 ---Purpose: NYI
122 -- Make invalid a Vertex of section. The Vertex shoud be
123 -- reconstructed from a point.
124
125 Suppress(me : in out; Compound : Shape from TopoDS;
126 KeepComp : Shape from TopoDS)
127 is private;
128
129-- Reconstruction des Shapes
130
131 Merge(me : in out; state1 : State from TopAbs;
132 state2 : State from TopAbs)
133 ---C++: return const &
134 returns Shape from TopoDS;
135
136 Merge(me : in out; state1 : State from TopAbs)
137 ---C++: return const &
138 returns Shape from TopoDS;
139
140 Propagate(me :in out;what : State from TopAbs;
141 FromShape : Shape from TopoDS;
142 LoadShape : Shape from TopoDS)
143 ---Purpose: NYI Propagation of a state starting from the shape
144 -- FromShape = edge or vertex of section, face or
145 -- Coumpound de section. LoadShape is either S1,
146 -- or S2 (see the method Load). Propagation from
147 -- FromShape, on the states <what> of LoadShape.
148 -- Return a Wire in 2d, a Shell in 3d.
149 -- Specifications are incomplete, to be redefined for the typologies
150 -- correpsonding to <FromShape> and the result :
151 -- exemple : FromShape resultat
152 -- vertex wire (or edge)
153 -- edge of section face (or shell)
154 -- compound of section shell
155 -- ... ...
156 ---C++: return const &
157 returns Shape from TopoDS;
158
159 PropagateFromSection(me : in out;SectionShape : Shape from TopoDS)
160 ---Purpose: SectionShape est soit un Vertex de section(NYI), soit
161 -- une Edge de section. Propagation des shapes
162 -- de section en partant de SectionShape.
163 -- return un Compound de section.
164 ---C++: return const &
165 returns Shape from TopoDS;
166
167
168-- History
169 Modified (me: in out; S : Shape from TopoDS)
170 ---Purpose: Returns the list of the descendant shapes of the shape <S>.
171 ---C++: return const &
172 returns ListOfShape from TopTools ;
173
174 IsDeleted (me: in out; S : Shape from TopoDS)
175 ---Purpose: Returns the fact that the shape <S> has been deleted or not
176 -- by the boolean operation.
177 returns Boolean;
178
179-- Verification de la DS
180
181 Check(me : in out)
182 ---Purpose: NYI
183 -- coherence of the internal Data Structure.
184 returns CheckStatus from BRepAlgo;
185
186-- private
187
188 RemoveEdgeInterferences(me : in out;iF1 : Integer;
189 iF2 : Integer;
190 iCurve : Integer)
191 ---purpose: case of SectEdge coming from Curve
192 -- for each of F1 and F2, find Edges
193 -- for each Edge :
194 -- remove the impact on geometry of vertexes
195 -- of SectEdge. If there is no other impact at these edges
196 -- and if these Edges are not SameDomain,
197 -- make unKeepShape.
198 is private;
199
200 RemoveEdgeInterferences(me : in out;iE1 : Integer;
201 iE2 : Integer;
202 SectEdge :Shape from TopoDS)
203 ---purpose: case of SectEdge coming from Edge(s)
204 -- if iE1 and iE2 are Edges :
205 -- Remove the impact of DSEdge(= iE1 or iE2) of
206 -- geometry a vertex of SectEdge, and if there is nothing
207 -- else make unkeep on DSEdge
208 -- if iE1 or iE2 == 0, no interference on Edges in the DS
209 -- if iE1 and iE2 are Faces :
210 -- for each of faces F1 and F2, explode into Edges
211 -- for each Edge :
212 -- remove interferences a vertex of SectEdge as geometry.
213 -- If no other interferences are attached to
214 -- these Edges, and if these Edges are not SameDomain,
215 -- make unKeepShape.
216 is private;
217
218 RemoveFaceInterferences(me : in out;iF1 : Integer;
219 iF2 : Integer;
220 iE1 : Integer;
221 iE2 : Integer)
222 --purpose : case of SectEdge coming from Edge(s)
223 -- Remove the interferences between F1 and F2 concerning
224 -- DSEdge (= E1 or E2) :
225 -- a) if DSEdge is not SameDomain -> the edge is Removed
226 -- b) if there are no interferences of DSEdge of
227 -- GeomtryType == VERTEX
228 -- with Edge of DSFace(= F1 or F2)
229 -- if DSFace has no more interference and is not SameDomain,
230 -- make unkeep DSFace.
231 is private;
232
233 RemoveFaceInterferences(me : in out;iF1 : Integer;
234 iF2 : Integer;
235 iCurve : Integer)
236 ---purpose: case of SectEdge coming from Curve
237 -- remove the interferences of Geometry iCurve between F1 and F2.
238 -- if Face(= F1 or F2) has no other interferences, and if Face
239 -- is not SameDomain, make unKeepShape Face.
240 is private;
241
242 RemoveEdgeInterferencesFromFace(me : in out;
243 iF1 : Integer;
244 iF2 : Integer;
245 ipv1 : Integer;
246 kind1 : Kind from TopOpeBRepDS;
247 ipv2 : Integer;
248 kind2 : Kind from TopOpeBRepDS)
249 ---purpose: remove from iF1 or iF2 interferences of Edges
250 -- that have GeometryType kind1/kind2 and
251 -- Geometry ipv1/ipv2.
252 -- if kind1/kind2 == TopAbs_VERTEX -> RemoveEdgeFromFace
253 is private;
254
255 RemoveEdgeFromFace(me : in out;iF : Integer;
256 iV : Integer)
257 ---purpose: remove from the DS the Edges that belong to iF
258 -- that have iV as Vertex if they do not have Geometry and
259 -- are not SameDomain.
260 is private;
261
262 PntVtxOnCurve(me : in out; iCurve : Integer;
263 ipv1 : in out Integer;
264 ik1 : in out Kind from TopOpeBRepDS;
265 ipv2 : in out Integer;
266 ik2 : in out Kind from TopOpeBRepDS)
267 ---purpose: Find points/vertex on curves
268 is private;
269
270 PntVtxOnSectEdge(me : in out; SectEdge : Shape from TopoDS;
271 ipv1 : in out Integer;
272 ik1 : in out Kind from TopOpeBRepDS;
273 ipv2 : in out Integer;
274 ik2 : in out Kind from TopOpeBRepDS)
275 ---purpose : Find points/Vertex on SectEdge
276 is private;
277
278 RemoveEdgeSameDomain(me : in out; iE1 : Integer;
279 iE2 : Integer)
280 is private;
281
282 RemoveFaceSameDomain(me : in out; C : Shape from TopoDS)
283 is private;
284
285 FindGoodFace(me : in out; iE : Integer;
286 iF1 : in out Integer;
287 b : in out Boolean)
288 ---C++: return &
289 returns ListOfInteger from TColStd is private;
290
291
292
293 RemoveFaceSameDomain(me : in out; iF1 : Integer;
294 iF2 : Integer)
295 is private;
296
297 GoodInterf(me : in out; SectEdge : Shape from TopoDS;
298 kind : Kind from TopOpeBRepDS;
299 iPointVertex : Integer)
300 returns Boolean is private;
301
302 DS(me) returns HDataStructure from TopOpeBRepDS;
303 ---C++: return const &
304
305 ChangeDS(me : in out) returns HDataStructure from TopOpeBRepDS;
306 ---C++: return &
307
308 Builder(me) returns HBuilder from TopOpeBRepBuild;
309 ---C++: return const &
310
311 ChangeBuilder(me : in out) returns HBuilder from TopOpeBRepBuild;
312 ---C++: return &
313
314fields
315
316 myHDS : HDataStructure from TopOpeBRepDS;
317 myDSFiller : DSFiller from TopOpeBRep;
318 myHB : HBuilder from TopOpeBRepBuild;
319 myEC : EdgeConnector from BRepAlgo;
320 myS1 : Shape from TopoDS;
321 myS2 : Shape from TopoDS;
322 myState1,myState2 : State from TopAbs;
323
324 myListOfCompoundOfEdgeConnected : ListOfShape from TopTools;
325 myCurrentList : ListOfShape from TopTools;
326 myRecomputeBuilderIsDone : Boolean from Standard;
327 myGetSectionIsDone : Boolean from Standard;
328 myResultShape : Shape from TopoDS;
329
330 myWire : Wire from TopoDS;
331 myListOfVertex : ListOfShape from TopTools;
332 myModified : ListOfShape from TopTools;
333 myEmptyShape : Shape from TopoDS;
334 myEmptyListOfShape : ListOfShape from TopTools;
335 myEmptyListOfInteger : ListOfInteger from TColStd;
336
337 myCompoundWireMap : DataMapOfShapeShape from TopTools;
338 mySetOfKeepPoint : SetOfInteger from TColStd;
339
340friends
341
342 class BooleanOperations
343
344end DSAccess from BRepAlgo;