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