0024157: Parallelization of assembly part of BO
[occt.git] / src / TopOpeBRepBuild / TopOpeBRepBuild_Builder.cdl
CommitLineData
b311480e 1-- Created on: 1993-06-14
2-- Created by: Jean Yves LEBEY
3-- Copyright (c) 1993-1999 Matra Datavision
4-- Copyright (c) 1999-2012 OPEN CASCADE SAS
5--
6-- The content of this file is subject to the Open CASCADE Technology Public
7-- License Version 6.5 (the "License"). You may not use the content of this file
8-- except in compliance with the License. Please obtain a copy of the License
9-- at http://www.opencascade.org and read it completely before using this file.
10--
11-- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12-- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13--
14-- The Original Code and all software distributed under the License is
15-- distributed on an "AS IS" basis, without warranty of any kind, and the
16-- Initial Developer hereby disclaims all such warranties, including without
17-- limitation, any warranties of merchantability, fitness for a particular
18-- purpose or non-infringement. Please see the License for the specific terms
19-- and conditions governing the rights and limitations under the License.
20
7fd59977 21
22class Builder from TopOpeBRepBuild
23
24---Purpose: The Builder algorithm constructs topological
25-- objects from an existing topology and new
26-- geometries attached to the topology. It is used to
27-- construct the result of a topological operation;
28-- the existing topologies are the parts involved in
29-- the topological operation and the new geometries
30-- are the intersection lines and points.
31
32uses
33
34 State from TopAbs,
35 ShapeEnum from TopAbs,
36 Orientation from TopAbs,
37 MapOfShape from TopTools,
38 DataMapOfShapeListOfShape from TopTools,
39 IndexedMapOfOrientedShape from TopTools,
40 IndexedMapOfShape from TopTools,
41 HArray1OfShape from TopTools,
42 DataMapOfIntegerListOfShape from TopTools,
43 DataMapOfIntegerShape from TopTools,
44 HArray1OfListOfShape from TopTools,
45 DataMapOfShapeListOfShapeOn1State from TopOpeBRepDS,
46 DataMapOfShapeInteger from TopTools,
47 DataMapOfShapeShape from TopTools,
48 IndexedDataMapOfShapeShape from TopTools,
49 ShapeSet from TopOpeBRepBuild,
50 EdgeBuilder from TopOpeBRepBuild,
51 FaceBuilder from TopOpeBRepBuild,
52 SolidBuilder from TopOpeBRepBuild,
53 WireEdgeSet from TopOpeBRepBuild,
54 ShellFaceSet from TopOpeBRepBuild,
55
56 ListOfShape from TopTools,
57 Shape from TopoDS,
58 Solid from TopoDS,
59 Face from TopoDS,
60 Edge from TopoDS,
61 Vertex from TopoDS,
62 ShapeExplorer from TopOpeBRepTool,
63 ShapeClassifier from TopOpeBRepTool,
64 BuildTool from TopOpeBRepDS,
65 PaveSet from TopOpeBRepBuild,
66 GTopo from TopOpeBRepBuild,
67 HDataStructure from TopOpeBRepDS,
68 SurfaceIterator from TopOpeBRepDS,
69 PointIterator from TopOpeBRepDS,
70 CurveIterator from TopOpeBRepDS,
71 Interference from TopOpeBRepDS,
72 Config from TopOpeBRepDS,
73 Pnt from gp,
74 AsciiString from TCollection
75
76
77raises
78
79 NoSuchObject from Standard
80
81is
82
83 Create(BT:BuildTool)
84 returns Builder from TopOpeBRepBuild;
85
86 --modified by NIZHNY-MZV Sat May 6 09:53:22 2000
87 Destroy(me:out) is virtual;
88 ---C++: alias "Standard_EXPORT virtual ~TopOpeBRepBuild_Builder() { Destroy() ; }"
89
90 ChangeBuildTool(me:in out) returns BuildTool from TopOpeBRepDS;
91 ---C++: return &
92
93 BuildTool(me) returns BuildTool from TopOpeBRepDS;
94 ---C++: return const &
95
96 Perform (me:in out;HDS:mutable HDataStructure) is virtual;
97 ---Purpose: Stores the data structure <HDS>,
98 -- Create shapes from the new geometries.
99 --modified by NIZHNY-MZV Thu Nov 4 13:20:25 1999
100 Perform (me:in out;HDS:mutable HDataStructure;S1,S2:Shape) is virtual;
101 ---Purpose: Stores the data structure <HDS>,
102 -- Create shapes from the new geometries,
103 -- Evaluates if an operation performed on shapes S1,S2
104 -- is a particular case.
105
106 DataStructure(me) returns HDataStructure;
107 ---Purpose: returns the DS handled by this builder
108 --modified by NIZHNY-MZV Tue Apr 18 15:32:13 2000
109 Clear(me:in out) is virtual;
110 ---Purpose: Removes all splits and merges already performed.
111 -- Does NOT clear the handled DS.
112
113 MergeEdges(me:in out;
114 L1:ListOfShape;TB1:State;
115 L2:ListOfShape;TB2:State;
116 onA:Boolean = Standard_False;
117 onB:Boolean = Standard_False;
118 onAB:Boolean = Standard_False);
119 ---Purpose: Merges the two edges <S1> and <S2> keeping the
120 -- parts in each edge of states <TB1> and <TB2>.
121 -- Booleans onA, onB, onAB indicate wheter parts of edges
122 -- found as state ON respectively on first, second, and both
123 -- shapes must be (or not) built.
124
125 MergeFaces(me:in out;
126 S1:ListOfShape;TB1:State;S2:ListOfShape;TB2:State;
127 onA:Boolean = Standard_False;
128 onB:Boolean = Standard_False;
129 onAB:Boolean = Standard_False);
130 ---Purpose: Merges the two faces <S1> and <S2> keeping the
131 -- parts in each face of states <TB1> and <TB2>.
132
133 MergeSolids(me:in out;
134 S1:Shape;TB1:State;S2:Shape;TB2:State);
135 ---Purpose: Merges the two solids <S1> and <S2> keeping the
136 -- parts in each solid of states <TB1> and <TB2>.
137
138 MergeShapes(me:in out;
139 S1:Shape;TB1:State;
140 S2:Shape;TB2:State);
141 ---Purpose: Merges the two shapes <S1> and <S2> keeping the
142 -- parts of states <TB1>,<TB2> in <S1>,<S2>.
143
144 End(me:in out);
145
146 -- LocOpe use
147 Classify(me) returns Boolean;
148 ChangeClassify(me:in out; B:Boolean);
149
150 MergeSolid(me:in out;S:Shape;TB:State);
151 ---Purpose: Merges the solid <S> keeping the
152 -- parts of state <TB>.
153
154 NewVertex(me;I:Integer) returns Shape;
155 ---Purpose: Returns the vertex created on point <I>.
156 ---C++: return const &
157
158 NewEdges(me;I:Integer) returns ListOfShape;
159 ---Purpose: Returns the edges created on curve <I>.
160 ---C++: return const &
161
162 NewFaces(me;I:Integer) returns ListOfShape;
163 ---Purpose: Returns the faces created on surface <I>.
164 ---C++: return const &
165
166 IsSplit(me;S:Shape;TB:State) returns Boolean;
167 ---Purpose: Returns True if the shape <S> has been split.
168
169 Splits(me;S:Shape;TB:State) returns ListOfShape
170 ---Purpose: Returns the split parts <TB> of shape <S>.
171 ---C++: return const &
172 raises NoSuchObject from Standard; -- if S is not IsSplit()
173
174 IsMerged(me;S:Shape;TB:State) returns Boolean;
175 ---Purpose: Returns True if the shape <S> has been merged.
176
177 Merged(me;S:Shape;TB:State) returns ListOfShape
178 ---Purpose: Returns the merged parts <TB> of shape <S>.
179 ---C++: return const &
180 raises NoSuchObject from Standard; -- if <S> is not IsMerged()
181
182 InitSection(me:in out);
183
184 SplitSectionEdges (me:in out);
185 ---Purpose: create parts ON solid of section edges
186 --modified by NIZHNY-MZV Wed Feb 23 12:54:11 2000
187 SplitSectionEdge (me:in out; E:Shape from TopoDS) is virtual;
188 ---Purpose: create parts ON solid of section edges
189
190 SectionCurves(me:in out; L:in out ListOfShape);
191 ---Purpose: return the section edges built on new curves.
192
193 SectionEdges(me:in out; L:in out ListOfShape);
194 ---Purpose: return the parts of edges found ON the boundary
195 -- of the two arguments S1,S2 of Perform()
196
197 FillSecEdgeAncestorMap(me; aShapeRank: Integer; aMapON: MapOfShape;
198 anAncMap: out DataMapOfShapeShape);
199 ---Purpose: Fills anAncMap with pairs (edge,ancestor edge) for each
200 -- split from the map aMapON for the shape object identified
201 -- by ShapeRank
202
203 Section(me:in out; L:in out ListOfShape);
204 ---Purpose: return all section edges.
205
206 Section(me:in out) returns ListOfShape;
207 ---C++: return const &
208
209 BuildVertices (me:in out;DS:mutable HDataStructure);
210 ---Purpose: update the DS by creating new geometries.
211 -- create vertices on DS points.
212
213 BuildEdges (me:in out;DS:mutable HDataStructure);
214 ---Purpose: update the DS by creating new geometries.
215 -- create shapes from the new geometries.
216
217 MSplit(me;s:State from TopAbs)
218 returns DataMapOfShapeListOfShapeOn1State from TopOpeBRepDS;
219 ---C++: return const &
220
221 ChangeMSplit(me:in out;s:State from TopAbs)
222 returns DataMapOfShapeListOfShapeOn1State from TopOpeBRepDS;
223 ---C++: return &
224
225 -------
226 -- private
227 -------
228
229 BuildEdges (me:in out;iC:Integer;DS:mutable HDataStructure) is protected;
230 ---Purpose: update the DS by creating new geometries.
231 -- create edges on the new curve <Icurv>.
232
233 BuildFaces (me:in out;iS:Integer;DS:mutable HDataStructure) is protected;
234 ---Purpose: update the DS by creating new geometries.
235 -- create faces on the new surface <ISurf>.
236
237 BuildFaces (me:in out;DS:mutable HDataStructure) is protected;
238 ---Purpose: update the DS by creating new geometries.
239 -- create shapes from the new geometries.
240
241 SplitEdge(me:in out;E1:Shape;TB1,TB2:State) is protected;
242 ---Purpose: Split <E1> keeping the parts of state <TB1>.
243
244 SplitEdge1(me:in out;E1:Shape;TB1,TB2:State) is protected;
245 ---Purpose: Split <E1> keeping the parts of state <TB1>.
246
247 SplitEdge2(me:in out;E1:Shape;TB1,TB2:State) is protected;
248 ---Purpose: Split <E1> keeping the parts of state <TB1>.
249
250 SplitFace(me:in out;F1:Shape;TB1,TB2:State) is protected;
251 ---Purpose: Split <F1> keeping the parts of state <TB1>.
252 -- Merge faces with same domain, keeping parts of
253 -- state <TB2>.
254
255 SplitFace1(me:in out;F1:Shape;TB1,TB2:State) is protected;
256
257 SplitFace2(me:in out;F1:Shape;TB1,TB2:State) is protected;
258
259 SplitSolid(me:in out;S1:Shape;TB1,TB2:State) is protected;
260 ---Purpose: Split <S1> keeping the parts of state <TB1>.
261
262 SplitShapes(me:in out;Ex:in out ShapeExplorer from TopOpeBRepTool;
263 TB1,TB2:State;
264 SS:in out ShapeSet;RevOri:Boolean) is protected;
265 ---Purpose: Explore shapes of given by explorer <Ex> to split them.
266 -- Store new shapes in the set <SS>.
267 -- According to RevOri, reverse or not their orientation.
268
269 MakeEdges(me:in out;E:Shape;B:in out EdgeBuilder;
270 L:in out ListOfShape);
271
272 MakeFaces(me:in out;F:Shape;B:in out FaceBuilder;
273 L:in out ListOfShape);
274
275 MakeSolids(me:in out;B:in out SolidBuilder;
276 L:in out ListOfShape);
277
278 MakeShells(me:in out;B:in out SolidBuilder;
279 L:in out ListOfShape);
280
281 FillFace(me:in out;F1:Shape;TB1:State;
282 LF2:ListOfShape;TB2:State;
283 WES:in out WireEdgeSet;RevOri:Boolean) is protected;
284 ---Purpose: Split edges of <F1> and store wires and edges in
285 -- the set <WES>. According to RevOri, reverse (or not) orientation.
286
287 FillSolid(me:in out;S1:Shape;TB1:State;
288 LS2:ListOfShape;TB2:State;
289 SS:in out ShapeSet;RevOri:Boolean) is protected;
290 ---Purpose: Split faces of <S1> and store shells and faces in
291 -- the set <SS>. According to RevOri, reverse (or not) orientation.
292
293 FillShape(me:in out;S1:Shape;TB1:State;
294 LS2:ListOfShape;TB2:State;
295 SS:in out ShapeSet;RevOri:Boolean) is protected;
296 ---Purpose: Split subshapes of <S1> and store subshapes in
297 -- the set <SS>. According to RevOri, reverse (or not) orientation.
298
299 FillVertexSet(me;IT:in out PointIterator;
300 TB:State;PVS:in out PaveSet) is protected;
301 ---Purpose: fills the vertex set PVS with the point iterator IT.
302 -- IT accesses a list of interferences which geometry is a point or a vertex.
303 -- TB indicates the orientation to give to the geometries
304 -- found in interference list accessed by IT.
305
306 FillVertexSetOnValue(me;IT:PointIterator;
307 TB:State;PVS:in out PaveSet) is protected;
308 ---Purpose: fills vertex set PVS with the current value of IT.
309 -- I geometry is a point or a vertex.
310 -- TB indicates the orientation to give to geometries found I
311
312 ToSplit(me;S:Shape;TB:State) returns Boolean is protected;
313 ---Purpose: Returns True if the shape <S> has not already been split
314 --modified by NIZHNY-MZV Thu Sep 30 10:29:53 1999
315 MarkSplit(me:in out;S:Shape;TB:State;B:Boolean=Standard_True) is protected;
316 ---Purpose: add the shape <S> to the map of split shapes.
317 -- mark <S> as split/not split on <state>, according to B value.
318
319 ChangeSplit(me:in out;S:Shape;TB:State) returns ListOfShape;
320 ---Purpose: Returns a ref.on the list of shapes connected to <S> as
321 -- <TB> split parts of <S>.
322 -- Mark <S> as split in <TB> parts.
323 ---C++: return &
324
325 ChangeMerged(me:in out;S:Shape;TB:State) returns ListOfShape is protected;
326 ---Purpose: Returns a ref. on the list of shapes connected to <S> as
327 -- <TB> merged parts of <S>.
328 ---C++: return &
329
330 ChangeNewVertex(me:in out;I:Integer) returns Shape is protected;
331 ---Purpose: Returns a ref. on the vertex created on point <I>.
332 ---C++: return &
333
334 ChangeNewEdges(me:in out;I:Integer) returns ListOfShape is protected;
335 ---Purpose: Returns a ref. on the list of edges created on curve <I>.
336 ---C++: return &
337
338 ChangeNewFaces(me:in out;I:Integer) returns ListOfShape is protected;
339 ---Purpose: Returns a ref. on the list of faces created on surface <I>.
340 ---C++: return &
341
342 AddIntersectionEdges(me;F:in out Shape;TB:State;
343 RevOri:Boolean;ES:in out ShapeSet) is protected;
344
345 Opec12(me) returns Boolean;
346
347 Opec21(me) returns Boolean;
348
349 Opecom(me) returns Boolean;
350
351 Opefus(me) returns Boolean;
352
353 ShapePosition(me:in out;S:Shape;LS:ListOfShape) returns State;
354
355 KeepShape(me:in out;S:Shape;LS:ListOfShape;T:State) returns Boolean;
356
357 TopType(myclass;S:Shape) returns ShapeEnum;
358
359 Reverse(myclass;T1,T2:State) returns Boolean;
360
361 Orient(myclass;O:Orientation;R:Boolean) returns Orientation;
362
363 FindSameDomain(me;L1,L2:in out ListOfShape);
364
365 FindSameDomainSameOrientation(me;LSO,LDO:in out ListOfShape);
366
367 MapShapes(me:in out;S1,S2:Shape);
368
369 ClearMaps(me:in out);
370
371 FindSameRank(me;L1:ListOfShape;R:Integer;L2:in out ListOfShape);
372
373 ShapeRank(me;S:Shape) returns Integer;
374
375 IsShapeOf(me;S:Shape;I12:Integer) returns Boolean;
376
377 Contains(myclass;S:Shape;L:ListOfShape) returns Boolean;
378
379 UpdateSplitAndMerged(me : in out; mle :DataMapOfIntegerListOfShape from TopTools;
380 mre :DataMapOfIntegerShape from TopTools;
381 mlf :DataMapOfShapeShape from TopTools;
382 state :State from TopAbs)
383 is protected;
384
385
386 -- KPart Builder
387
388 FindIsKPart(me:in out) returns Integer;
389 IsKPart(me) returns Integer;
390 --Begin modified by NIZHNY-MZV Mon Feb 7 17:18:40 2000
391 MergeKPart(me:in out) is virtual;
392 MergeKPart(me:in out;TB1,TB2:State) is virtual;
393 --End modified by NIZHNY-MZV Mon Feb 7 17:18:45 2000
394 MergeKPartiskole(me:in out);
395 MergeKPartiskoletge(me:in out);
396 MergeKPartisdisj(me:in out);
397 MergeKPartisfafa(me:in out);
398 MergeKPartissoso(me:in out);
399 KPiskole(me:in out) returns Integer;
400 KPiskoletge(me:in out) returns Integer;
401 KPisdisj(me:in out) returns Integer;
402 KPisfafa(me:in out) returns Integer;
403 KPissoso(me:in out) returns Integer;
404 KPClearMaps(me:in out);
405 KPlhg(me;S:Shape;T:ShapeEnum;L:out ListOfShape) returns Integer;
406 KPlhg(me;S:Shape;T:ShapeEnum) returns Integer;
407 KPlhsd(me;S:Shape;T:ShapeEnum;L:out ListOfShape) returns Integer;
408 KPlhsd(me;S:Shape;T:ShapeEnum) returns Integer;
409 KPclasSS(me:in out;S1:Shape;exceptLS1:ListOfShape;S2:Shape) returns State;
410 KPclasSS(me:in out;S1,exceptS1,S2:Shape) returns State;
411 KPclasSS(me:in out;S1,S2:Shape) returns State;
412 KPiskolesh(me;S:Shape;LS,LF:out ListOfShape) returns Boolean;
413 KPiskoletgesh(me;S:Shape;LS,LF:out ListOfShape) returns Boolean;
414 KPSameDomain(me;L1:in out ListOfShape;L2:out ListOfShape);
415 KPisdisjsh(me;S:Shape) returns Integer;
416 KPisfafash(me;S:Shape) returns Integer;
417 KPissososh(me;S:Shape) returns Integer;
418 KPiskoleanalyse(me;FT1,FT2,ST1,ST2:State;I,I1,I2:out Integer);
419 KPiskoletgeanalyse(me;Conf:Config;ST1,ST2:State;I:out Integer);
420 KPisdisjanalyse(me;ST1,ST2:State;I,IC1,IC2:out Integer);
421 KPls(myclass;S:Shape;T:ShapeEnum;L:out ListOfShape) returns Integer;
422 KPls(myclass;S:Shape;T:ShapeEnum) returns Integer;
423
424 -- les methodes suivantes sont in out er non myclass
425 -- car elles modifient myShapeClassifier
426 KPclassF(me:in out;F1,F2:Shape) returns State;
427 KPclassFF(me:in out;F1,F2:Shape;T1,T2:out State);
428 KPiskoleFF(me:in out;F1,F2:Shape;T1,T2:out State) returns Boolean;
429 KPContains(myclass;S:Shape;L:ListOfShape) returns Boolean;
430 KPmakeface(me:in out;F1:Shape;LF2:ListOfShape;T1,T2:State;R1,R2:Boolean)
431 returns Shape;
432 KPreturn(myclass;KP:Integer) returns Integer;
433
434 --
435 SplitEvisoONperiodicF(me:in out);
436
437 -- solid
438 --modified by NIZHNY-MZV Wed Sep 29 09:46:48 1999
439 GMergeSolids(me:in out;LSO1,LSO2:ListOfShape;G:GTopo);
440 GFillSolidsSFS(me:in out;LSO1,LSO2:ListOfShape;G:GTopo;SFS:in out ShellFaceSet);
441 GFillSolidSFS(me:in out;SO1:Shape;LSO2:ListOfShape;G:GTopo;SFS:in out ShellFaceSet) is virtual;
442 GFillSurfaceTopologySFS(me:in out;SO1:Shape;G:GTopo;SFS:in out ShellFaceSet);
443 GFillSurfaceTopologySFS(me;IT:SurfaceIterator;G:GTopo;SFS:in out ShellFaceSet);
444 --modified by NIZHNY-MZV Thu Sep 30 09:55:31 1999
445 GFillShellSFS(me:in out;SH1:Shape;LSO2:ListOfShape;G:GTopo;SFS:in out ShellFaceSet) is virtual;
446 GFillFaceSFS(me:in out;F1:Shape;LSO2:ListOfShape;G:GTopo;SFS:in out ShellFaceSet);
447 GSplitFaceSFS(me:in out;F1:Shape;LSclass:ListOfShape;G:GTopo;SFS:in out ShellFaceSet);
448 GMergeFaceSFS(me:in out;F:Shape;G:GTopo;SFS:out ShellFaceSet);
449 GSplitFace(me:in out;F:Shape;G:GTopo;LSclass:ListOfShape);
450 AddONPatchesSFS(me:in out;G:GTopo;SFS:out ShellFaceSet);
451 FillOnPatches(me:in out;anEdgesON:ListOfShape; aBaseFace:Shape;
452 avoidMap:IndexedMapOfOrientedShape);
453 FindFacesTouchingEdge(me;aFace,anEdge:Shape; aShRank:Integer; aFaces:out ListOfShape);
454
455 -- face
456
457 GMergeFaces(me:in out;LF1,LF2:ListOfShape;G:GTopo);
458 GFillFacesWES(me:in out;LF1,LF2:ListOfShape;G:GTopo;WES:out WireEdgeSet);
459 GFillFacesWESK(me:in out;LF1,LF2:ListOfShape;G:GTopo;WES:out WireEdgeSet;K:Integer);
460 GFillFacesWESMakeFaces(me:in out;LF1,LF2,LSO:ListOfShape;G:GTopo);
461 GFillFaceWES(me:in out;F:Shape;LF2:ListOfShape;G:GTopo;WES:in out WireEdgeSet);
462 GFillCurveTopologyWES(me:in out;F:Shape;G:GTopo;WES:in out WireEdgeSet);
463 GFillCurveTopologyWES(me;IT:CurveIterator;G:GTopo;WES:in out WireEdgeSet);
464
465 GFillONPartsWES(me:in out;F:Shape;G:GTopo;LSclass:ListOfShape;WES:in out WireEdgeSet);
466
467 GFillWireWES(me:in out;W:Shape;LF2:ListOfShape;G:GTopo;WES:in out WireEdgeSet);
468 GFillEdgeWES(me:in out;E:Shape;LF2:ListOfShape;G:GTopo;WES:in out WireEdgeSet);
469 GSplitEdgeWES(me:in out;E:Shape;LF2:ListOfShape;G:GTopo;WES:in out WireEdgeSet);
470 GMergeEdgeWES(me:in out;E:Shape;G:GTopo;WES:in out WireEdgeSet);
471 GSplitEdge(me:in out;E:Shape;G:GTopo;LSclass:ListOfShape);
472
473 -- edge
474
475 GMergeEdges(me:in out;LE1,LE2:ListOfShape;G:GTopo);
476 GFillEdgesPVS(me:in out;LE1,LE2:ListOfShape;G:GTopo;PVS:in out PaveSet);
477 GFillEdgePVS(me:in out;E:Shape;LE2:ListOfShape;G:GTopo;PVS:in out PaveSet);
478 GFillPointTopologyPVS(me:in out;E:Shape;G:GTopo;PVS:in out PaveSet);
479 GFillPointTopologyPVS(me;E:Shape;IT:PointIterator;G:GTopo;PVS:in out PaveSet);
480 GParamOnReference(me;V:Vertex;E:Edge;P:out Real) returns Boolean;
481
482 -- other
483
484 GKeepShape(me:in out;S:Shape;Lref:ListOfShape;T:State) returns Boolean;
485 GKeepShape1(me:in out;S:Shape;Lref:ListOfShape;T:State;pos:out State) returns Boolean;
486 ---Purpose: return True if S is classified <T> / Lref shapes
487 GKeepShapes(me:in out ;S:Shape;Lref:ListOfShape;T:State;
488 Lin:ListOfShape;Lou:in out ListOfShape);
489 ---Purpose: add to Lou the shapes of Lin classified <T> / Lref shapes.
490 -- Lou is not cleared. (S is a dummy trace argument)
491
492 GSFSMakeSolids(me:in out;SOF:Shape;SFS:in out ShellFaceSet;LOSO:in out ListOfShape);
493 GSOBUMakeSolids(me:in out;SOF:Shape;SOBU:in out SolidBuilder;LOSO:in out ListOfShape);
494--modified by NIZHNY-MZV Mon Dec 6 14:53:21 1999
495 GWESMakeFaces(me:in out;FF:Shape;WES:in out WireEdgeSet;LOF:in out ListOfShape) is virtual;
496 GFABUMakeFaces(me:in out;FF:Shape;FABU:in out FaceBuilder;LOF:in out ListOfShape;
497 MWisOld:out DataMapOfShapeInteger from TopTools);
498 RegularizeFaces(me:in out;FF:Shape;lnewFace:ListOfShape;LOF:in out ListOfShape);
499 RegularizeFace(me:in out;FF:Shape;newFace:Shape;LOF:in out ListOfShape);
500 -- regularize face newFace issued from face SS.
501 -- regularized faces are returned in the list of shape LOF
502 RegularizeSolids(me:in out;SS:Shape;lnewSolid:ListOfShape;LOS:in out ListOfShape);
503 RegularizeSolid(me:in out;SS:Shape;newSolid:Shape;LOS:in out ListOfShape);
504 -- regularize solid newSolid issued from solid SS.
505 -- regularized solids are returned in the list of shape LOS
506
507 GPVSMakeEdges(me;EF:Shape;PVS:in out PaveSet;LOE:in out ListOfShape);
508 GEDBUMakeEdges(me;EF:Shape;EDBU:in out EdgeBuilder;LOE:in out ListOfShape);
509
510 GToSplit(me;S:Shape;TB:State) returns Boolean;
511 GToMerge(me;S:Shape) returns Boolean;
512
513 GTakeCommonOfSame(myclass;G:GTopo) returns Boolean;
514 GTakeCommonOfDiff(myclass;G:GTopo) returns Boolean;
515
516 -- NYI:GFindxxx methods:should be provided by the DS
517 GFindSamDom(me;S:Shape;L1,L2:in out ListOfShape);
518 GFindSamDom(me;L1,L2:in out ListOfShape);
519 GFindSamDomSODO(me;S:Shape;LSO,LDO:in out ListOfShape);
520 GFindSamDomSODO(me;LSO,LDO:in out ListOfShape);
521
522 GMapShapes(me:in out;S1,S2:Shape);
523 GClearMaps(me:in out);
524 GFindSameRank(me;L1:ListOfShape;R:Integer;L2:in out ListOfShape);
525 GShapeRank(me;S:Shape) returns Integer;
526 GIsShapeOf(me;S:Shape;I12:Integer) returns Boolean;
527 GContains(myclass;S:Shape;L:ListOfShape) returns Boolean;
528 GCopyList(myclass;Lin:ListOfShape;i1,i2:Integer;Lou:out ListOfShape);
529 GCopyList(myclass;Lin:ListOfShape;Lou:out ListOfShape);
530
531 -- dump
532
533 GdumpLS(me;L:ListOfShape);
534 GdumpPNT(myclass;P:Pnt);
535 GdumpORIPARPNT(myclass;o:Orientation;p:Real;Pnt:Pnt);
536 GdumpSHA(me;S:Shape;str:Address=NULL);
537 GdumpSHAORI(me;S:Shape;str:Address=NULL);
538 GdumpSHAORIGEO(me;S:Shape;str:Address=NULL);
539
540 GdumpSHASTA(me;iS:Integer;T:State;
541 a:AsciiString="";b:AsciiString="");
542 GdumpSHASTA(me;S:Shape;T:State;
543 a:AsciiString="";b:AsciiString="");
544 GdumpSHASTA(me;iS:Integer;T:State;SS:ShapeSet;
545 a:AsciiString="";b:AsciiString="";c:AsciiString="\n");
546
547 GdumpEDG(me;S:Shape;str:Address=NULL);
548 GdumpEDGVER(me;E,V:Shape;str:Address=NULL);
549
550 GdumpSAMDOM(me;L:ListOfShape;str:Address=NULL);
551 GdumpEXP(me;E:ShapeExplorer);
552 GdumpSOBU(me;SB:in out SolidBuilder);
553 GdumpFABU(me;FB:in out FaceBuilder);
554 GdumpEDBU(me;EB:in out EdgeBuilder);
555 GtraceSPS(me;iS:Integer) returns Boolean;
556 GtraceSPS(me;iS,jS:Integer) returns Boolean;
557 GtraceSPS(me;S:Shape) returns Boolean;
558 GtraceSPS(me;S:Shape;IS:out Integer) returns Boolean;
559 GdumpSHASETreset(me:in out);
560 GdumpSHASETindex(me:in out) returns Integer;
561 PrintGeo(myclass;S:Shape);
562 PrintSur(myclass;F:Face);
563 PrintCur(myclass;E:Edge);
564 PrintPnt(myclass;V:Vertex);
565 PrintOri(myclass;S:Shape);
566 StringState(myclass;S:State) returns AsciiString from TCollection;
567 GcheckNBOUNDS(myclass;E:Shape) returns Boolean;
568
569
570fields
571
572 myState1,myState2:State from TopAbs is protected;
573 myShape1,myShape2:Shape from TopoDS is protected;
574 myDataStructure:HDataStructure from TopOpeBRepDS is protected;
575 myBuildTool:BuildTool from TopOpeBRepDS is protected;
576
577 myNewVertices:HArray1OfShape from TopTools is protected;
578 myNewEdges:DataMapOfIntegerListOfShape from TopTools is protected;
579 myNewFaces:HArray1OfListOfShape from TopTools is protected;
580
581 mySplitIN :DataMapOfShapeListOfShapeOn1State from TopOpeBRepDS is protected;
582 mySplitON :DataMapOfShapeListOfShapeOn1State from TopOpeBRepDS is protected;
583 mySplitOUT:DataMapOfShapeListOfShapeOn1State from TopOpeBRepDS is protected;
584 myMergedIN :DataMapOfShapeListOfShapeOn1State from TopOpeBRepDS is protected;
585 myMergedON :DataMapOfShapeListOfShapeOn1State from TopOpeBRepDS is protected;
586 myMergedOUT:DataMapOfShapeListOfShapeOn1State from TopOpeBRepDS is protected;
587
588 myEmptyShapeList:ListOfShape from TopTools is protected;
589 myListOfSolid:ListOfShape from TopTools is protected;
590 myListOfFace:ListOfShape from TopTools is protected;
591 myListOfEdge:ListOfShape from TopTools is protected;
592
593 -- new faces to split with their splits
594 myFSplits:DataMapOfShapeListOfShape is protected;
595 -- new edges to split with their splits
596 myESplits:DataMapOfShapeListOfShape is protected;
597
598 -- section data
599 mySectionDone:Boolean from Standard is protected;
600 mySplitSectionEdgesDone:Boolean from Standard is protected;
601 mySection:ListOfShape from TopTools is protected;
602
603 -- grid data
604 mySolidReference:Solid from TopoDS is protected;
605 mySolidToFill:Solid from TopoDS is protected;
606 myFaceAvoid:ListOfShape from TopTools is protected;
607
608 myFaceReference:Face from TopoDS is protected;
609 myFaceToFill:Face from TopoDS is protected;
610 myEdgeAvoid:ListOfShape from TopTools is protected;
611
612 myEdgeReference:Edge from TopoDS is protected;
613 myEdgeToFill:Edge from TopoDS is protected;
614 myVertexAvoid:ListOfShape from TopTools is protected;
615
616 myMAP1,myMAP2:IndexedMapOfShape from TopTools is protected;
617
618 -- KPart Builder
619 myIsKPart:Integer from Standard is protected;
620 myKPMAPf1f2:DataMapOfShapeListOfShape from TopTools is protected;
621
622 -- trace
623 mySHASETindex:Integer is protected;
624
625 -- special cases
626 myClassifyDef:Boolean is protected;
627 myClassifyVal:Boolean is protected;
628
629 myShapeClassifier:ShapeClassifier from TopOpeBRepTool is protected;
630
631 --- Regularization
632 myMemoSplit : MapOfShape from TopTools is protected;
633
634 myEmptyAS : AsciiString from TCollection is protected; -- BUG extraction hxx WOK
635
636 -- for building of ON patches from coinciding faces not same domain
637 myProcessON: Boolean from Standard is protected;
638 myONFacesMap: IndexedDataMapOfShapeShape from TopTools is protected;
639 myONElemMap: IndexedMapOfOrientedShape from TopTools is protected;
640
641friends
642
643 class HBuilder from TopOpeBRepBuild
644
645end Builder from TopOpeBRepBuild;