Integration of OCCT 6.5.0 from SVN
[occt.git] / src / BRepFilletAPI / BRepFilletAPI_MakeFillet.cdl
1 -- File:        BRepFilletAPI_MakeFillet.cdl
2 -- Created:     Fri Jun 17 13:39:07 1994
3 -- Author:      Modeling
4 --              <modeling@phylox>
5 ---Copyright:    Matra Datavision 1994
6
7
8 class MakeFillet from BRepFilletAPI inherits LocalOperation from BRepFilletAPI
9
10         ---Purpose: Describes functions to build fillets on the broken edges of a shell or solid.
11         -- A MakeFillet object provides a framework for:
12         -- -   initializing the construction algorithm with a given shape,
13         -- -   acquiring the data characterizing the fillets,
14         -- -   building the fillets and constructing the resulting shape, and
15         -- -   consulting the result. 
16         
17         
18 uses
19
20     Array1OfPnt2d     from TColgp,
21     Shape             from GeomAbs,
22     Surface           from Geom , 
23     Shape             from TopoDS,
24     Face              from TopoDS,
25     Edge              from TopoDS,
26     Vertex            from TopoDS,
27     Function          from Law,
28     ListOfShape       from TopTools,
29     SecHArray1        from ChFiDS,
30     ErrorStatus      from ChFiDS,
31     FilBuilder        from ChFi3d,
32     FilletShape       from ChFi3d,
33     HBuilder          from TopOpeBRepBuild,
34     MapOfShape        from TopTools,
35     ShapeModification from BRepBuilderAPI
36     
37 raises
38     NotDone     from StdFail ,
39     NoSuchObject from Standard
40 is
41
42     Create(S : Shape from TopoDS; 
43            FShape: FilletShape from ChFi3d = ChFi3d_Rational)
44         ---Purpose: Initializes   the computation    of   the  fillets.
45         --          <FShape> sets   the type   of fillet  surface. The
46         --          default value is ChFi3d_Rational (classical  nurbs
47         --          representation of  circles).   ChFi3d_QuasiAngular
48         --          corresponds to  a  nurbs representation of circles
49         --          which   parameterisation matches  the  circle one.
50         --          ChFi3d_Polynomial  corresponds to  a    polynomial
51         --          representation of circles.
52         ---Level: Public
53     returns MakeFillet from BRepFilletAPI;
54
55     SetParams(me : in out; 
56               Tang, Tesp, T2d, TApp3d, TolApp2d, Fleche: Real from Standard)
57         ---Level: Advanced
58     is static;
59
60     SetContinuity(me : in out; 
61                   InternalContinuity : Shape from GeomAbs;
62                   AngularTolerance   : Real);
63         ---Purpose: Changes     the      parameters     of  continiuity
64         --          InternalContinuity to produce fillet'surfaces with
65         --          an continuity   Ci (i=0,1 or    2). 
66         --          By defaultInternalContinuity = GeomAbs_C1.
67         --          AngularTolerance  is the G1 tolerance between fillet
68         --          and support'faces. 
69
70   
71
72     Add(me : in out; E : Edge from TopoDS) 
73         ---Purpose: Adds a  fillet contour in  the  builder  (builds a
74         --          contour  of tangent edges).
75         --          The Radius must be set after.
76         --          
77         ---Level: Public
78     is static;
79
80     Add(me : in out; Radius : Real; E : Edge from TopoDS) 
81         ---Purpose: Adds a  fillet description in  the  builder
82         --          - builds a contour  of tangent edges,
83         --          - sets the radius. 
84         --          
85         ---Level: Public
86     is static;
87
88     Add(me : in out; R1,R2 : Real; E : Edge from TopoDS) 
89         ---Purpose: Adds a  fillet description in  the  builder
90         --          - builds a contour  of tangent edges,
91         --          - sets a linear radius evolution law between 
92         --            the first and last vertex of the spine. 
93         --          
94         ---Level: Public
95     is static;
96
97     Add(me : in out; L : Function from Law; E : Edge from TopoDS) 
98         ---Purpose: Adds a  fillet description in  the  builder
99         --          - builds a contour  of tangent edges,
100         --          - sest the radius evolution law. 
101         --          
102         ---Level: Public
103     is static;
104
105     Add(me : in out; UandR : Array1OfPnt2d from TColgp; E : Edge from TopoDS) 
106         ---Purpose: Adds a  fillet description in  the  builder
107         --          - builds a contour  of tangent edges,
108         --          - sets the radius evolution law interpolating the values
109         --          given in the array UandR :
110         --          
111         --          p2d.X() = relative parameter on the spine [0,1]
112         --          p2d.Y() = value of the radius.
113         --          
114         ---Level: Public
115     is static;
116
117     SetRadius(me     : in out; 
118               Radius : Real from Standard;
119               IC     : Integer from Standard;
120               IinC   : Integer from Standard)
121         ---Purpose: Sets the parameters of the fillet
122         -- along the contour of index IC generated using the Add function
123         -- in the internal data structure of
124         -- this algorithm, where Radius is the radius of the fillet.
125     is static;
126
127     SetRadius(me     : in out; 
128               R1,R2  : Real from Standard;
129               IC     : Integer from Standard;
130               IinC   : Integer from Standard)
131         ---Purpose: Sets the parameters of the fillet
132         -- along the contour of index IC generated using the Add function
133         -- in the internal data structure of this algorithm, where the radius of the
134         --   fillet evolves according to a linear evolution law defined
135         --   from R1 to R2, between the first and last vertices of the contour of index IC.
136     is static;
137
138     SetRadius(me : in out; 
139               L    : Function from Law; 
140               IC   : Integer from Standard;
141               IinC : Integer from Standard)
142         ---Purpose: Sets the parameters of the fillet
143         -- along the contour of index IC generated using the Add function
144         -- in the internal data structure of this algorithm, where the radius of the
145         --   fillet evolves according to the evolution law L, between the
146         --   first and last vertices of the contour of index IC.
147     is static;
148
149     SetRadius(me    : in out; 
150               UandR : Array1OfPnt2d from TColgp;
151               IC    : Integer from Standard;
152               IinC  : Integer from Standard)
153         ---Purpose: Sets the parameters of the fillet
154         -- along the contour of index IC generated using the Add function
155         -- in the internal data structure of this algorithm,
156         -- where the radius of the fillet evolves according to the evolution law
157         -- which interpolates the set of parameter and radius pairs given
158         -- in the array UandR as follows:
159         -- -   the X coordinate of a point in UandR defines a
160         --   relative parameter on the contour (i.e. a parameter between 0 and 1),
161         -- -          the Y coordinate of a point in UandR gives the
162         --   corresponding value of the radius, and the radius evolves
163         --   between the first and last vertices of the contour of index IC.
164     is static;
165
166     ResetContour(me     : in out; 
167                  IC     : Integer from Standard) 
168         ---Purpose: Erases the radius information on the contour of index
169         -- IC in the internal data structure of this algorithm.
170         -- Use the SetRadius function to reset this data.
171         -- Warning
172         -- Nothing is done if IC is outside the bounds of the table of contours.
173     is static;
174
175     IsConstant(me     : in out; 
176                IC     : Integer from Standard)
177     returns Boolean from Standard
178         ---Purpose: Returns true if the radius of the fillet along the contour of index IC
179         --   in the internal data structure of this algorithm is constant,
180         --   Warning
181         -- False is returned if IC is outside the bounds of the table
182         -- of contours or if E does not belong to the contour of index IC.
183     is static; 
184
185     Radius(me     : in out; 
186            IC     : Integer from Standard)
187     returns Real from Standard
188         ---Purpose: Returns the radius of the fillet along the contour of index IC in the
189         --  internal data structure of this algorithm
190         --     Warning
191         -- -   Use this function only if the radius is constant.
192         -- -   -1. is returned if IC is outside the bounds of the
193         --   table of contours or if E does not belong to the contour of index IC.
194         is static; 
195
196   
197     IsConstant(me     : in out; 
198                IC     : Integer from Standard;
199                E      : Edge from TopoDS) 
200     returns Boolean from Standard
201         ---Purpose: Returns true if the radius of the fillet along the edge E of the
202         --  contour of index IC in the internal data structure of
203         --  this algorithm is constant.
204         --   Warning
205         -- False is returned if IC is outside the bounds of the table
206         -- of contours or if E does not belong to the contour of index IC.
207     is static; 
208
209     Radius(me     : in out; 
210            IC     : Integer from Standard;
211            E      : Edge from TopoDS) 
212     returns Real from Standard
213         ---Purpose: Returns the radius of the fillet along the edge E of the contour of index
214         -- IC in the internal data structure of this algorithm.
215         -- Warning
216         -- -   Use this function only if the radius is constant.
217         -- -   -1 is returned if IC is outside the bounds of the
218         -- table of contours or if E does not belong to the contour of index IC.
219     is static; 
220
221     SetRadius(me     : in out; 
222               Radius : Real; 
223               IC     : Integer from Standard;
224               E      : Edge from TopoDS) 
225         ---Purpose: Assigns Radius as the radius of the fillet on the edge E
226     is static;
227     
228     SetRadius(me     : in out; 
229               Radius : Real; 
230               IC     : Integer from Standard;
231               V      : Vertex from TopoDS) 
232         --Purpose: Assigns Radius as the radius of the fillet on the vertex V.
233         --  These two functions are only used on contours where
234         -- the radius has not been defined. They enable radius
235         -- values to be assigned locally either to points on the
236         -- contour (in particular, the first and last vertices) or to
237         -- portions of the contour. During construction of the fillet,
238         -- an interpolation using the given values is carried out.
239         -- Warning
240         -- Nothing is done if:
241         -- -   the edge E does not belong to the contour of index IC, or
242         -- -   IC is outside the bound of the table of contours, or
243     is static; 
244     
245     
246         
247     GetBounds(me     : in out; 
248               IC     : Integer from Standard;
249               E      : Edge from TopoDS;
250               F,L    : out Real from Standard)
251     returns Boolean from Standard; 
252
253     GetLaw(me     : in out; 
254            IC     : Integer from Standard;
255            E      : Edge from TopoDS)
256     returns mutable Function from Law; 
257
258     SetLaw(me     : in out; 
259            IC     : Integer from Standard;
260            E      : Edge from TopoDS;
261            L      : Function from Law);
262
263     
264
265     ------------------------------------------------------------------
266
267     SetFilletShape(me: in out; FShape: FilletShape from ChFi3d)
268         ---Purpose: Assigns FShape as the type of fillet shape built by this algorithm.
269     is static;
270
271     GetFilletShape(me)
272         ---Purpose: Returns the type of fillet shape built by this algorithm.
273     returns FilletShape from ChFi3d
274     is static;
275
276     NbContours(me) 
277         ---Purpose: Returns the number of contours generated using the
278         -- Add function in the internal data structure of this algorithm.
279     returns Integer from Standard is static;
280
281     Contour(me; E : Edge from TopoDS) 
282         ---Purpose: Returns the index of the contour in the internal data
283         -- structure of this algorithm which contains the edge E of the shape.
284         -- This function returns 0 if the edge E does not belong to any contour.
285         -- Warning
286         -- This index can change if a contour is removed from the
287         -- internal data structure of this algorithm using the function Remove.
288     returns Integer from Standard is static;
289
290     NbEdges(me; I : Integer from Standard) 
291         ---Purpose: Returns the number of edges in the contour of index I in
292         -- the internal data structure of this algorithm.
293         -- Warning
294         -- Returns 0 if I is outside the bounds of the table of contours.
295     returns Integer from Standard       
296     is static;
297     
298     Edge(me; I,J : Integer from Standard) 
299         ---Purpose: Returns the edge of index J in the contour of index I in
300         -- the internal data structure of this algorithm.
301         -- Warning
302         -- Returns a null shape if:
303         -- -   I is outside the bounds of the table of contours, or
304         -- -   J is outside the bounds of the table of edges of the index I contour.
305         ---C++: return const &
306     returns Edge from TopoDS 
307     is static;
308
309     Remove(me : in out; E : Edge from TopoDS) 
310         ---Purpose: Removes the contour in the internal data structure of
311         -- this algorithm which contains the edge E of the shape.
312         -- Warning
313         -- Nothing is done if the edge E does not belong to the
314         -- contour in the internal data structure of this algorithm.
315     is static;
316
317     Length(me; IC : Integer from Standard) returns Real from Standard
318         ---Purpose: Returns the length of the contour of index IC in the
319         -- internal data structure of this algorithm.
320         -- Warning
321         -- Returns -1. if IC is outside the bounds of the table of contours.
322     is static; 
323
324     FirstVertex(me; IC : Integer from Standard) returns Vertex from TopoDS
325         ---Purpose: Returns the first vertex of the contour of index IC
326         -- in the internal data structure of this algorithm.
327         -- Warning
328         -- Returns a null shape if IC is outside the bounds of the table of contours.
329     is static;
330
331     LastVertex(me; IC : Integer from Standard) returns Vertex from TopoDS
332         ---Purpose: Returns the  last vertex of the contour of index IC
333         -- in the internal data structure of this algorithm.
334         -- Warning
335         -- Returns a null shape if IC is outside the bounds of the table of contours.
336     is static;
337
338     Abscissa(me; 
339              IC : Integer from Standard;
340              V  : Vertex  from TopoDS) 
341     returns Real from Standard
342         ---Purpose: Returns the curvilinear abscissa of the vertex V on the
343         -- contour of index IC in the internal data structure of this algorithm.
344         -- Warning
345         -- Returns -1. if:
346         -- -   IC is outside the bounds of the table of contours, or
347         -- -   V is not on the contour of index IC.
348       is static;
349
350     RelativeAbscissa(me; 
351                      IC : Integer from Standard;
352                      V  : Vertex  from TopoDS) 
353     returns Real from Standard
354         ---Purpose: Returns the relative curvilinear abscissa (i.e. between 0
355         -- and 1) of the vertex V on the contour of index IC in the
356         -- internal data structure of this algorithm.
357         -- Warning
358         -- Returns -1. if:
359         -- -   IC is outside the bounds of the table of contours, or
360         -- -   V is not on the contour of index IC.
361     is static;
362
363     ClosedAndTangent(me; IC : Integer from Standard) 
364     returns Boolean from Standard
365         ---Purpose: Returns true if the contour of index IC in the internal
366         -- data structure of this algorithm is closed and tangential
367         -- at the point of closure.
368         -- Warning
369         -- Returns false if IC is outside the bounds of the table of contours.
370     is static; 
371
372     Closed(me; IC : Integer from Standard) 
373     returns Boolean from Standard
374         ---Purpose: Returns true if the contour of index IC in the internal
375         -- data structure of this algorithm is closed.
376         -- Warning
377         -- Returns false if IC is outside the bounds of the table of contours.
378     is static; 
379
380     Build(me : in out)
381     is redefined;
382         ---Purpose: Builds the fillets on all the contours in the internal data
383         -- structure of this algorithm and constructs the resulting shape.
384         -- Use the function IsDone to verify that the filleted shape
385         -- is built. Use the function Shape to retrieve the filleted shape.
386         -- Warning
387         -- The construction of fillets implements highly complex
388         -- construction algorithms. Consequently, there may be
389         -- instances where the algorithm fails, for example if the
390         -- data defining the radius of the fillet is not compatible
391         -- with the geometry of the initial shape. There is no initial
392         -- analysis of errors and they only become evident at the
393         -- construction stage.
394         -- Additionally, in the current software release, the
395         -- following cases are not handled:
396         -- -   the end point of the contour is the point of
397         --   intersection of 4 or more edges of the shape, or
398         -- -   the intersection of the fillet with a face which limits
399         --   the contour is not fully contained in this face.
400  
401     Reset(me : in out)
402         ---Purpose: Reinitializes this algorithm, thus canceling the effects of the Build function.
403         -- This function allows modifications to be made to the
404         -- contours and fillet parameters in order to rebuild the shape.
405     is static;
406  
407     Builder(me) returns HBuilder from TopOpeBRepBuild
408         ---Purpose: Returns the internal topology building algorithm.
409         ---Level: Advanced
410     is static;
411
412
413     -------------------------------------------
414     -- Methods usefull for historical utilities --
415     -------------------------------------------
416     Generated (me: in out; EorV : Shape from TopoDS)
417         ---Purpose: Returns the  list   of shapes generated   from the
418         --          shape <EorV>. 
419         ---C++: return const & 
420         ---Level: Public
421     returns ListOfShape from TopTools
422     is redefined virtual;
423     
424
425     Modified (me: in out; F : Shape from TopoDS)
426         ---Purpose: Returns the list  of shapes modified from the shape
427         --          <F>. 
428         ---C++: return const & 
429         ---Level: Public
430     returns ListOfShape from TopTools
431     is redefined virtual;
432
433
434     IsDeleted (me: in out; F : Shape from TopoDS)
435     returns Boolean
436     is redefined virtual;
437
438     -------------------------------------------
439     -- Methods usefull for BRepCtx utilities --
440     -------------------------------------------
441
442     NbSurfaces(me)
443         ---Purpose: returns the number of surfaces
444         --          after the shape creation.
445         ---Level: Public
446     returns Integer from Standard;
447
448
449     NewFaces(me: in out; I: Integer) 
450         ---Purpose: Return the faces created for surface <I>.
451         ---C++:     return const &
452         ---Level: Public
453     returns ListOfShape from TopTools;
454
455     -------------------------------
456     ---Methods for quick simulation
457     -------------------------------
458
459     Simulate(me : in out; 
460              IC : Integer from Standard);
461
462     NbSurf(me; IC : Integer from Standard)
463     returns Integer from Standard;
464          
465     Sect(me; IC, IS : Integer from Standard)
466     returns mutable SecHArray1 from ChFiDS;
467
468
469     -------------------------------------
470     --- Methods for managing errors 
471     -------------------------------------
472
473     NbFaultyContours(me)
474     ---Purpose: Returns the number of contours where the computation 
475     -- of the fillet failed 
476     returns Integer from Standard is static;
477
478     FaultyContour(me; I : Integer from Standard)
479     ---Purpose: for each I in [1.. NbFaultyContours] returns the index IC of 
480     -- the contour where the computation of the fillet failed.  
481     -- the method NbEdges(IC) gives the number of edges in the contour IC
482     -- the method Edge(IC,ie) gives the edge number ie of the contour IC          
483     returns Integer from Standard is static;
484
485     NbComputedSurfaces(me; IC : Integer from Standard)
486     ---Purpose: returns the number of surfaces which have been 
487     --          computed on the contour IC 
488     returns Integer from Standard is static;
489
490     ComputedSurface(me; IC, IS : Integer from Standard)
491     ---Purpose: returns the surface number IS concerning the contour IC
492     returns Surface from Geom is static;
493
494     NbFaultyVertices(me)
495     ---Purpose: returns the number of vertices where the computation failed
496     returns Integer from Standard is static;
497
498     FaultyVertex(me; IV : Integer from Standard)
499     ---Purpose: returns the vertex where the computation failed
500     returns Vertex from TopoDS is static;
501
502     HasResult(me) returns Boolean from Standard is static;
503     ---Purpose: returns true if a part of the result has been computed
504     -- if the filling in a corner failed a shape with a hole is returned
505     
506     BadShape(me) returns Shape from TopoDS 
507     ---Purpose: if (HasResult()) returns the partial result  
508     raises NoSuchObject from Standard
509     is static;
510     
511     StripeStatus(me;IC : Integer from Standard) returns ErrorStatus from ChFiDS 
512     ---Purpose: returns the status concerning the contour IC in case of error  
513     -- ChFiDS_Ok : the computation is Ok
514     -- ChFiDS_StartsolFailure : the computation can't start, perhaps the 
515     --                          the radius is too big 
516     -- ChFiDS_TwistedSurface : the computation failed because of a twisted 
517     --                         surface
518     -- ChFiDS_WalkingFailure : there is a problem in the walking 
519     -- ChFiDS_Error:  other error different from above  
520     is static;
521
522 fields
523
524     myBuilder : FilBuilder from ChFi3d;
525     myMap     : MapOfShape from TopTools;
526
527 end MakeFillet;