Test for 0022778: Bug in BRepMesh
[occt.git] / src / BooleanOperations / BooleanOperations.cdl
CommitLineData
b311480e 1-- Created on: 2000-07-10
2-- Created by: Vincent DELOS
3-- Copyright (c) 2000-2012 OPEN CASCADE SAS
4--
5-- The content of this file is subject to the Open CASCADE Technology Public
6-- License Version 6.5 (the "License"). You may not use the content of this file
7-- except in compliance with the License. Please obtain a copy of the License
8-- at http://www.opencascade.org and read it completely before using this file.
9--
10-- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11-- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12--
13-- The Original Code and all software distributed under the License is
14-- distributed on an "AS IS" basis, without warranty of any kind, and the
15-- Initial Developer hereby disclaims all such warranties, including without
16-- limitation, any warranties of merchantability, fitness for a particular
17-- purpose or non-infringement. Please see the License for the specific terms
18-- and conditions governing the rights and limitations under the License.
19
7fd59977 20
21
22package BooleanOperations
23
24 ---Purpose: package to perform Boolean Operations between two
25 -- solids called Object and Tool.
26
27uses
28 gp,
29 Bnd,
30 math,
31 BRep,
32 Geom,
33 TopAbs,
34 TopExp,
35 TopoDS,
36 TColStd,
37 TopTools,
38 Standard,
39 TCollection,
40 BRepAdaptor,
41 GeomAdaptor,
42 IntTools,
43 BOPTColStd
44is
45
46 class AncestorsAndSuccessors;
47 ---Purpose: to have a fast access in the class ShapesDataStructure
48 -- to the upper and lower shapes of a given shape.
49 -- e.g. : ancestors of an edge are the wires that contain
50 -- it and its successors are the vertices that it holds.
51
52
53--modified by NIZNHY-PKV Wed Feb 2 14:47:51 2005f
54-- class InterferenceResult;
55 --Purpose: to describe a single interference between two shapes
56 -- in the class ShapesDataStructure.
57
58-- pointer PInterferenceResult to InterferenceResult from BooleanOperations;
59
60-- class InterferencesList;
61 --Purpose: if the considered shape S belongs to the Object this
62 -- class will list all the shapes of the Tool whose
63 -- bounding boxes intersects with the bounding box of S;
64 -- if S belongs to the Tool we store all the shapes of
65 -- the Object whose intersection with S is not empty.
66--modified by NIZNHY-PKV Wed Feb 2 14:48:00 2005t
67
68 class ShapeAndInterferences;
69 ---Purpose: contains a shape S, its bounding box, its state
70 -- according to the other solid, its ancestors and
71 -- successors, all of its interferences with the other
72 -- solid.
73
74 pointer PShapeAndInterferences to ShapeAndInterferences from BooleanOperations;
75
76 class ShapesDataStructure;
77 ---Purpose: contains all the shapes of the Object and Tool, all
78 -- the shapes created by intersection, their bounding
79 -- boxes, their states, their ancestors and successors,
80 -- and all of their interferences.
81
82 pointer PShapesDataStructure to ShapesDataStructure from BooleanOperations;
83
84 class Explorer;
85 ---Purpose: to find subshapes of a given shape of the Data Structure.
86
87 class OnceExplorer;
88 ---Purpose: the derived class of Explorer to find subshapes only once.
89
90 --class BooleanOperations;
91 ---Purpose: is to be deferred with inherited classes Cut, Common,
92 -- Fuse to perform boolean operations .
93
94
95 enumeration StateOfShape is
96 ---Purpose: State of a Shape of the 1st solid according to the
97 -- 2nd one. State INOROUT is used when we know that
98 -- a shape is totally IN or totally OUT. State
99 -- INTERSECTED refers to a shape of the 1st solid cut
100 -- by the 2nd solid. When a shape has a state
101 -- different of INTERSECTED or UNKNOWN all of its
102 -- subshapes have the same state.
103 IN,
104 OUT,
105 ON,
106 UNKNOWN,
107 INOROUT,
108 INTERSECTED
109 end StateOfShape;
110
111 enumeration KindOfInterference is
112 ---Purpose: Interferences describe an intersection between two
113 -- shapes. They are classified following a hierarchy
114 -- from the lower until the upper.
115 SurfaceSurface,
116 EdgeSurface,
117 VertexSurface,
118 EdgeEdge,
119 VertexEdge,
120 VertexVertex,
121 UnknownInterference
122 end StateOfShape;
123
124 enumeration KindOfIntersection is
125 ---Purpose: Describes the fact that we can have no
126 -- intersection between two shapes, or a true or a
127 -- tangent one.
128 NoIntersection,
129 TrueIntersection,
130 SameDomain
131 end KindOfIntersection;
132
133
134 ------------------------
135 -- For internal needs --
136 ------------------------
137
138 class AncestorsSeqAndSuccessorsSeq;
139
140 class IndexedDataMapOfShapeAncestorsSuccessors instantiates IndexedDataMap from TCollection
141 (Shape from TopoDS,AncestorsSeqAndSuccessorsSeq from BooleanOperations,ShapeMapHasher from TopTools);
142
143
144
145 class IndexedDataMapOfShapeInteger instantiates
146 IndexedDataMap from TCollection(Shape from TopoDS,
147 Integer from Standard,
148 ShapeMapHasher from TopTools);
149
150end BooleanOperations;
151
152
153