0024927: Getting rid of "Persistent" functionality -- Storable
[occt.git] / src / gp / gp_Cylinder.cdl
1 -- Copyright (c) 1991-1999 Matra Datavision
2 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
3 --
4 -- This file is part of Open CASCADE Technology software library.
5 --
6 -- This library is free software; you can redistribute it and/or modify it under
7 -- the terms of the GNU Lesser General Public License version 2.1 as published
8 -- by the Free Software Foundation, with special exception defined in the file
9 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 -- distribution for complete text of the license and disclaimer of any warranty.
11 --
12 -- Alternatively, this file may be used under the terms of Open CASCADE
13 -- commercial license or contractual agreement.
14
15 class Cylinder   from gp
16
17         --- Purpose :
18         --  Describes an infinite cylindrical surface.
19         -- A cylinder is defined by its radius and positioned in space
20         -- with a coordinate system (a gp_Ax3 object), the "main
21         -- Axis" of which is the axis of the cylinder. This coordinate
22         -- system is the "local coordinate system" of the cylinder.
23         -- Note: when a gp_Cylinder cylinder is converted into a
24         -- Geom_CylindricalSurface cylinder, some implicit
25         -- properties of its local coordinate system are used explicitly:
26         -- -   its origin, "X Direction", "Y Direction" and "main
27         -- Direction" are used directly to define the parametric
28         -- directions on the cylinder and the origin of the parameters,
29         -- -   its implicit orientation (right-handed or left-handed)
30         --   gives an orientation (direct or indirect) to the
31         --   Geom_CylindricalSurface cylinder.
32         -- See Also
33         -- gce_MakeCylinder which provides functions for more
34         -- complex cylinder constructions
35         -- Geom_CylindricalSurface which provides additional
36         -- functions for constructing cylinders and works, in
37         -- particular, with the parametric equations of cylinders gp_Ax3
38
39 uses Ax1  from gp,
40      Ax2  from gp, 
41      Ax3  from gp, 
42      Dir  from gp,
43      Pnt  from gp,
44      Trsf from gp,
45      Vec  from gp
46
47 raises ConstructionError from Standard
48
49 is
50
51  Create   returns Cylinder;
52         ---C++: inline
53         --- Purpose : Creates a indefinite cylinder.
54
55   Create (A3 : Ax3; Radius : Real)  returns Cylinder
56         ---C++: inline
57         --- Purpose : Creates a cylinder of radius Radius, whose axis is the "main
58         --  Axis" of A3. A3 is the local coordinate system of the cylinder.   Raises ConstructionErrord if R < 0.0
59      raises ConstructionError;
60
61   SetAxis (me : in out; A1 : Ax1)
62         ---C++: inline
63         --- Purpose : Changes the symmetry axis of the cylinder. Raises ConstructionError if the direction of A1 is parallel to the "XDirection"
64         --  of the coordinate system of the cylinder.
65      raises ConstructionError
66  
67      is static;
68
69   SetLocation (me : in out; Loc : Pnt)  is static;
70         ---C++:inline
71         --- Purpose : Changes the location of the surface.
72
73   SetPosition (me : in out; A3 : Ax3)  is static;
74        ---C++:inline
75        --- Purpose : Change the local coordinate system of the surface.
76
77   SetRadius (me : in out; R : Real)
78         ---C++: inline
79         ---Purpose: Modifies the radius of this cylinder.
80         -- Exceptions
81         -- Standard_ConstructionError if R is negative.
82      raises ConstructionError
83      is static;
84
85   UReverse (me : in out)
86         ---C++:inline
87         ---Purpose: Reverses the   U   parametrization of   the cylinder
88         --          reversing the YAxis.
89   is static;
90
91   VReverse (me : in out)
92         ---C++:inline
93         ---Purpose: Reverses the   V   parametrization of   the  plane
94         --          reversing the Axis.
95   is static;
96
97   Direct (me) returns Boolean from Standard
98         ---C++: inline
99         ---Purpose: Returns true if the local coordinate system of this cylinder is right-handed.
100   is static;
101
102   Axis (me)  returns Ax1  is static;
103         ---C++: inline
104         --- Purpose : Returns the symmetry axis of the cylinder.
105         ---C++: return const&
106
107   Coefficients (me; A1, A2, A3, B1, B2, B3, C1, C2, C3, D : out Real)
108      is static;
109        --- Purpose :
110        --  Computes the coefficients of the implicit equation of the quadric
111        --  in the absolute cartesian coordinate system :
112        --  A1.X**2 + A2.Y**2 + A3.Z**2 + 2.(B1.X.Y + B2.X.Z + B3.Y.Z) +
113        --  2.(C1.X + C2.Y + C3.Z) + D = 0.0
114
115   Location (me) returns Pnt  is static;
116         ---C++: inline
117         --- Purpose :  Returns the "Location" point of the cylinder.
118         ---C++: return const&
119
120   Position (me)  returns Ax3  is static;
121         --- Purpose :
122         --  Returns the local coordinate system of the cylinder.
123         ---C++: inline
124         ---C++: return const&
125
126   Radius (me)   returns Real   is static;
127         ---C++: inline
128         --- Purpose : Returns the radius of the cylinder.
129
130   XAxis (me) returns Ax1  is static;
131         ---C++: inline
132         --- Purpose : Returns the axis X of the cylinder.
133
134   YAxis (me) returns Ax1  is static;
135         ---C++: inline
136         --- Purpose : Returns the axis Y of the cylinder.
137
138
139
140
141
142   Mirror (me : in out; P : Pnt)            is static;
143
144   Mirrored (me; P : Pnt)  returns Cylinder is static;
145
146         --- Purpose :
147         --  Performs the symmetrical transformation of a cylinder 
148         --  with respect to the point P which is the center of the 
149         --  symmetry.
150                     
151
152
153   Mirror (me : in out; A1 : Ax1)              is static;
154
155   Mirrored (me; A1 : Ax1)   returns Cylinder  is static;
156         --- Purpose :
157         --  Performs the symmetrical transformation of a cylinder with
158         --  respect to an axis placement which is the axis of the
159         --  symmetry.
160
161
162  
163
164   Mirror (me : in out; A2 : Ax2)               is static;
165
166   Mirrored (me; A2 : Ax2)    returns Cylinder  is static;
167
168         --- Purpose :
169         --  Performs the symmetrical transformation of a cylinder with respect 
170         --  to a plane. The axis placement A2 locates the plane of the
171         --  of the symmetry : (Location, XDirection, YDirection).
172
173   
174
175   Rotate (me : in out; A1 : Ax1; Ang : Real)           is static;
176         ---C++: inline
177   Rotated (me; A1 : Ax1; Ang : Real) returns Cylinder  is static;
178         ---C++: inline
179         --- Purpose :
180         --  Rotates a cylinder. A1 is the axis of the rotation.
181         --  Ang is the angular value of the rotation in radians.
182
183
184   Scale (me : in out; P : Pnt; S : Real)            is static;
185         ---C++: inline
186   Scaled (me; P : Pnt; S : Real)  returns Cylinder  is static;
187         ---C++: inline
188         --- Purpose : 
189         --  Scales a cylinder. S is the scaling value.
190         --  The absolute value of S is used to scale the cylinder
191
192
193
194
195   Transform (me : in out; T : Trsf)                 is static;
196         ---C++: inline
197   Transformed (me; T : Trsf)     returns Cylinder   is static;
198         ---C++: inline
199         --- Purpose :
200         --  Transforms a cylinder with the transformation T from class Trsf.
201
202
203  
204   Translate (me : in out; V : Vec)            is static;
205         ---C++: inline
206   Translated (me; V : Vec)  returns Cylinder  is static;
207         ---C++: inline
208         --- Purpose :
209         --  Translates a cylinder in the direction of the vector V.
210         --  The magnitude of the translation is the vector's magnitude.
211
212
213
214
215   Translate (me : in out; P1, P2 : Pnt)            is static; 
216         ---C++: inline
217   Translated (me; P1, P2 : Pnt)  returns Cylinder  is static;
218         ---C++: inline
219         --- Purpose :
220         --  Translates a cylinder from the point P1 to the point P2.
221
222
223
224 fields
225
226   pos    : Ax3;
227   radius : Real;
228
229 end;