0024927: Getting rid of "Persistent" functionality -- Storable
[occt.git] / src / GccAna / GccAna_Lin2dTanPer.cdl
1 -- Created on: 1991-04-03
2 -- Created by: Remi GILET
3 -- Copyright (c) 1991-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 class Lin2dTanPer
18
19 from GccAna
20
21         ---Purpose: This class implements the algorithms used to 
22         --          create 2d lines tangent to a circle or a point and 
23         --          perpendicular to a line or a circle.
24         -- Describes functions for building a 2D line perpendicular
25         -- to a line and:
26         -- -   tangential to a circle, or
27         -- -   passing through a point.
28         -- A Lin2dTanPer object provides a framework for:
29         -- -   defining the construction of 2D line(s),
30         -- -   implementing the construction algorithm, and
31         -- -   consulting the result(s).
32
33 uses   Pnt2d            from gp,
34        Lin2d            from gp, 
35        Circ2d           from gp,
36        QualifiedCirc    from GccEnt,
37        Array1OfReal     from TColStd,
38        Array1OfLin2d    from TColgp,
39        Array1OfPnt2d    from TColgp,
40        Position         from GccEnt,
41        Array1OfPosition from GccEnt
42
43 raises BadQualifier      from GccEnt,
44        OutOfRange        from Standard,
45        ConstructionError from Standard,
46        NotDone           from StdFail
47
48 is
49
50 Create(ThePnt    : Pnt2d          from gp;
51        TheLin    : Lin2d          from gp) returns Lin2dTanPer;
52         ---Purpose: This method implements the algorithms used to 
53         --          create 2d lines passing through a point and 
54         --          perpendicular to a line.
55
56 Create(ThePnt    : Pnt2d          from gp;
57        TheCircle : Circ2d         from gp) returns Lin2dTanPer
58 raises ConstructionError;
59         ---Purpose: This method implements the algorithms used to 
60         --          create 2d lines passing through a point and 
61         --          perpendicular to a circle.
62
63 Create(Qualified1 : QualifiedCirc from GccEnt;
64        TheLin     : Lin2d         from gp    ) returns Lin2dTanPer
65 raises BadQualifier;
66 -- Raises BadQualifier in case of EnclosedCirc.
67         ---Purpose: This method implements the algorithms used to 
68         --          create 2d lines tangent to a circle and 
69         --          perpendicular to a line.
70
71 Create(Qualified1 : QualifiedCirc from GccEnt;
72        TheCircle  : Circ2d        from gp    ) returns Lin2dTanPer
73 raises BadQualifier,ConstructionError;
74 -- Raises BadQualifier in case of EnclosedCirc.
75         ---Purpose: This method implements the algorithms used to 
76         --          create 2d lines tangent to a circle and 
77         --          perpendicular to a circle.
78
79 -- .........................................................................
80
81 IsDone(me) returns Boolean from Standard
82 is static;
83         ---Purpose : Returns True if the algorithm succeeded.
84
85 NbSolutions(me) returns Integer from Standard
86         ---Purpose : Returns the number of solutions. 
87         -- Raises NotDone if the construction algorithm didn't succeed.
88 raises NotDone
89 is static;
90  
91
92 WhichQualifier(me                                  ;
93                Index   :     Integer  from Standard;
94                Qualif1 : out Position from GccEnt  )
95 raises OutOfRange, NotDone
96 is static;
97         ---Purpose: Returns the qualifier Qualif1 of the tangency argument
98         -- for the solution of index Index computed by this algorithm.
99         -- The returned qualifier is:
100         -- -   that specified at the start of construction when the
101         --   solutions are defined as enclosing or outside with
102         --   respect to the argument, or
103         -- -   that computed during construction (i.e. enclosing or
104         --   outside) when the solutions are defined as unqualified
105         --   with respect to the argument, or
106         -- -   GccEnt_noqualifier if the tangency argument is a point.
107         -- Exceptions
108         -- Standard_OutOfRange if Index is less than zero or
109         -- greater than the number of solutions computed by this algorithm.
110         -- StdFail_NotDone if the construction fails. 
111         
112 ThisSolution(me                           ;
113              Index : Integer from Standard) returns Lin2d from gp
114         ---Purpose : Returns the solution number Index and raises OutOfRange 
115         --           exception if Index is greater than the number of solutions.
116         --           Be careful: the Index is only a way to get all the 
117         --           solutions, but is not associated to those outside the 
118         --           context of the algorithm-object.
119         --    Raises NotDone if the construction algorithm 
120         --          didn't succeed.
121         --          It raises OutOfRange if Index is greater than the 
122         --          number of solutions.
123 raises OutOfRange, NotDone
124 is static;
125    
126 Tangency1(me                                     ;
127           Index         : Integer   from Standard;  
128           ParSol,ParArg : out Real  from Standard;
129           Pnt           : out Pnt2d from gp      )
130         ---Purpose : Returns informations about the tangency point between the 
131         --           result number Index and the first argument.
132         --           ParSol is the intrinsic parameter of the point on the 
133         --           solution curv.
134         --           ParArg is the intrinsic parameter of the point on the 
135         --           argument curv.
136         --           If the first argument is a point ParArg is equal zero.
137         --    raises NotDone if the construction algorithm didn't succeed.
138         --          It raises OutOfRange if Index is greater than the 
139         --          number of solutions.
140 raises OutOfRange, NotDone
141 is static;
142    
143
144 Intersection2 (me                                     ;
145                Index         : Integer   from Standard;
146                ParSol,ParArg : out Real  from Standard;
147                PntSol        : out Pnt2d from gp      )
148         ---Purpose : Returns informations about the intersection between the 
149         --           solution number Index and the second argument.
150         --           It returns the first intersection in a case of 
151         --           Lin2dTanPer which is perpendicular to a circle .
152         --           ParSol is the intrinsic parameter of the point on the 
153         --           solution curv.
154         --           ParArg is the intrinsic parameter of the point on the 
155         --           argument curv. Raises NotDone if the construction algorithm 
156         --          didn't succeed.
157         --          It raises OutOfRange if Index is greater than the 
158         --          number of solutions.
159
160 raises OutOfRange, NotDone
161 is static;
162    
163
164 fields
165
166     WellDone : Boolean from Standard;
167         ---Purpose: True if the algorithm succeeded.
168
169     NbrSol   : Integer from Standard;
170         ---Purpose: The number of possible solutions. We have to decide 
171         --          about the status of the multiple solutions...
172
173     linsol   : Array1OfLin2d from TColgp;
174         ---Purpose: The solutions.
175
176     qualifier1 : Array1OfPosition from GccEnt;
177         ---Purpose: The qualifiers of the first argument.
178
179     pnttg1sol   : Array1OfPnt2d from TColgp;
180         ---Purpose: The tangency point between the solution and the first 
181         --          argument on the solution.
182
183     pntint2sol   : Array1OfPnt2d from TColgp;
184         ---Purpose: The tangency point between the solution and the second 
185         --          argument on the solution.
186
187     par1sol   : Array1OfReal from TColStd;
188         ---Purpose: The parameter of the tangency point between the solution 
189         --          and the first argument on the solution.
190     
191     par2sol   : Array1OfReal from TColStd;
192         ---Purpose: The parameter of the tangency point between the solution 
193         --          and the second argument on the solution.
194
195     pararg1   : Array1OfReal from TColStd;
196         ---Purpose: The parameter of the tangency point between the solution 
197         --          and the first argument on the first argument.
198
199     pararg2   : Array1OfReal from TColStd;
200         ---Purpose: The parameter of the tangency point between the solution 
201         --          and the second argument on the second argument.
202
203 end Lin2dTanPer;
204