0023429: BRepFeat_SplitShape algorithm misses some section edges while building resul...
[occt.git] / src / BRepFeat / BRepFeat.cdl
1 -- Created on: 1995-06-13
2 -- Created by: Jacques GOUSSARD
3 -- Copyright (c) 1995-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
21
22
23 package BRepFeat 
24
25         ---Purpose: BRepFeat is necessary for the
26         -- creation and manipulation of both form and mechanical features in a
27         -- Boundary Representation framework. Form features can be depressions or
28         -- protrusions and include the following types:
29         -- -          Cylinder
30         -- -          Draft Prism
31         -- -          Prism
32         -- -          Revolved feature
33         -- -          Pipe
34         -- Depending on whether you wish to make a depression or a protrusion,
35         -- you can choose your operation type between the following:
36         -- - removing matter (a Boolean cut: Fuse setting 0)
37         -- - adding matter (Boolean fusion: Fuse setting 1)
38         --   The semantics of form feature creation is based on the
39         -- construction of shapes:
40         -- -          for a certain length in a certain direction
41         -- -          up to a limiting face
42         -- -          from a limiting face at a height
43         -- -          above and/or below a plane
44         -- The shape defining the construction of a feature can be either a
45         -- supporting edge or a concerned area of a face.
46         -- In case of supporting edge, this contour can be attached to a face
47         -- of the basis shape by binding. When the contour is bound to this face,
48         -- the information that the contour will slide on the face becomes
49         -- available to the relevant class methods. In case of the concerned
50         -- area of a face, you could, for example, cut it out and move it at
51         -- a different height, which will define the limiting face of a
52         -- protrusion or depression. Topological definition with local
53         -- operations of this sort makes calculations simpler and faster
54         -- than a global operation. The latter would entail a second phase of
55         -- removing unwanted matter to get the same result.
56         -- Mechanical features include ribs - protrusions - and grooves (or
57         -- slots) - depressions along planar (linear) surfaces or revolution surfaces.
58         -- The semantics of mechanical features is based on giving
59         -- thickness to a contour. This thickness can either be unilateral
60         -- - on one side of the contour - or bilateral - on both sides. As in
61         -- the semantics of form features, the thickness is defined by
62         -- construction of shapes in specific contexts.
63         -- However, in case of mechanical features, development contexts
64         -- differ. Here they include extrusion:
65         -- -          to a limiting face of the basis shape
66         -- -          to or from a limiting plane
67         -- -          to a height.
68
69 uses BRepBuilderAPI,
70      LocOpe,
71      TopoDS,
72      TopTools,
73      TopOpeBRepBuild,
74      Geom,     
75      gp,
76      TColgp,
77      TColGeom,
78      StdFail,
79      BRepTopAdaptor,
80      Geom2dAdaptor,
81      TopAbs, 
82      --modified by NIZNHY-PKV Thu Mar 21 18:31:59 2002  f 
83      BRepAlgoAPI,      
84      --modified by NIZNHY-PKV Thu Mar 21 18:32:02 2002  t
85      BOP
86              
87 is
88
89     enumeration StatusError is 
90         ---Purpose: Discribes the error.
91         OK,
92         BadDirect,
93         BadIntersect,
94         EmptyBaryCurve,
95         EmptyCutResult,
96         FalseSide,
97         IncDirection,
98         IncSlidFace,
99         IncParameter,
100         IncTypes,
101         IntervalOverlap,
102         InvFirstShape,
103         InvOption,
104         InvShape,
105         LocOpeNotDone,
106         LocOpeInvNotDone,
107         NoExtFace,
108         NoFaceProf,
109         NoGluer,
110         NoIntersectF,
111         NoIntersectU,
112         NoParts,
113         NoProjPt,
114         NotInitialized,
115         NotYetImplemented,
116         NullRealTool,
117         NullToolF,
118         NullToolU
119
120     end StatusError;
121
122
123     deferred class Builder;    -- inherits MakeShape from BRepBuilderAPI
124     
125     class LocalOperation;      -- inherits Builder from BRepFeat;
126
127     class MakeCylindricalHole; -- inherits Builder from BRepFeat;
128
129
130     class SplitShape;          -- inherits MakeShape from BRepBuilderAPI;
131
132     deferred class Form;       -- inherits MakeShape from BRepBuilderAPI;  
133
134     deferred class RibSlot;       -- inherits MakeShape from BRepBuilderAPI;  
135
136     class MakePrism;           -- inherits Form from BRepFeat
137
138     class MakeRevol;           -- inherits Form from BRepFeat
139
140     class MakePipe;            -- inherits Form from BRepFeat
141
142     class Gluer;               -- inherits MakeShape from BRepBuilderAPI
143
144     class MakeDPrism;
145
146     class MakeLinearForm;
147
148     class MakeRevolutionForm;
149
150     enumeration Status is   -- to be completed
151
152         NoError,
153         InvalidPlacement,
154         HoleTooLong
155
156     end Status;
157     
158     enumeration PerfSelection is 
159
160         NoSelection,
161         SelectionFU,
162         SelectionU,
163         SelectionSh,
164         SelectionShU
165         ---Purpose: To declare the type of selection semantics for local operation Perform methods
166         -- -   NoSelection
167         -- -   SelectionFU - selection of a face up to which a
168         --   local operation will be performed
169         -- -   SelectionU - selection of a point up to which a
170         --   local operation will be performed
171         -- -   SelectionSh - selection of a shape on which a
172         --   local operation will be performed
173         -- -   SelectionShU - selection of a shape up to which a
174         --   local operation will be performed.
175     end PerfSelection;
176     
177
178     SampleEdges(S : Shape from TopoDS;
179                 Pt: in out SequenceOfPnt from TColgp);
180
181
182
183     Barycenter(S :        Shape from TopoDS;
184                Pt: in out Pnt   from gp); 
185                
186     ParametricBarycenter(S :        Shape from TopoDS;
187                          C :        Curve from Geom)
188                           
189         returns Real from Standard;
190
191     ParametricMinMax(S :         Shape      from TopoDS;
192                      C :         Curve      from Geom;
193                      prmin : out Real       from Standard;
194                      prmax : out Real       from Standard;
195                      prbmin: out Real       from Standard;
196                      prbmax: out Real       from Standard;
197                      flag :  out Boolean    from Standard;
198                      Ori  :  Boolean from Standard = Standard_False);
199         ---Purpose:  Ori = True taking account the orientation
200                 
201     IsInside(F1 :        Face from TopoDS;
202              F2 :        Face from TopoDS)
203                           
204         returns Boolean from Standard;
205
206     IsInOut (FC :        FClass2d from BRepTopAdaptor;
207              AC :        Curve    from Geom2dAdaptor)
208
209              
210         returns Boolean from Standard;     
211
212  --   TangSli(E :        Edge  from TopoDS;
213  --         F :        Shape from TopoDS)
214                           
215  --     returns Boolean from Standard;
216
217
218     FaceUntil (S :         Shape from TopoDS;
219                F : in out  Face  from TopoDS);
220                
221
222     Tool (SRef :         Shape       from TopoDS;
223           Fac  :         Face        from TopoDS;
224           Orf  :         Orientation from TopAbs)
225              
226         returns Solid from TopoDS;     
227
228     Print(SE  : StatusError  from BRepFeat; S  : in out OStream) returns OStream;
229         ---Purpose: Prints the Error description of the State <St> as a String on
230         --          the Stream <S> and returns <S>.
231         --          
232         ---C++: return &
233           
234 end BRepFeat;