0023634: Eliminate Polyline and Polygon usage in drawers
[occt.git] / src / AIS / AIS_AngleDimension.cdl
1 -- Created on: 1996-12-03
2 -- Created by: Arnaud BOUZY/Odile Olivier
3 -- Copyright (c) 1996-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 class AngleDimension from AIS inherits Relation from AIS
24
25       
26          ---Purpose: A framework to define display of angles.
27          -- These displays are particularly useful in viewing draft prisms.
28          -- The angle displayed may define an intersection
29          -- can be between two edges or two faces of a shape
30          -- or a plane. The display consists of arrows and text.
31
32 uses Shape                 from TopoDS,
33      Presentation          from Prs3d,
34      PresentationManager3d from PrsMgr,
35      Selection             from SelectMgr,
36      Pnt                   from gp,
37      Dir                   from gp,
38      Circ                  from gp,
39      Line                  from Geom,
40      Ax1                   from gp,
41      Projector             from Prs3d,
42     Transformation        from Geom,
43      PresentationManager2d from PrsMgr,
44      GraphicObject         from Graphic2d,
45      Plane                 from Geom,
46      Surface               from Geom,
47      ExtendedString        from TCollection,
48      ArrowSide             from DsgPrs,
49      KindOfDimension       from AIS,   
50      Edge                  from TopoDS,    
51      Face                  from TopoDS    
52 is
53
54     Create (aFirstEdge       : Edge           from TopoDS;
55             aSecondEdge      : Edge           from TopoDS;
56             aPlane           : Plane          from Geom;
57             aVal             : Real           from Standard;
58             aText            : ExtendedString from TCollection)    
59          ---Purpose:  Constructs the angle display object defined by the
60          -- shapes aFShape, aSShape, the plane aPlane, the
61          -- value aVal and the text aText.
62          -- aFShape and aSShape are edges.
63     returns mutable AngleDimension from AIS;
64     
65  
66     Create (aFirstEdge       : Edge           from TopoDS;
67             aSecondEdge      : Edge           from TopoDS;
68             aPlane           : Plane          from Geom;
69             aVal             : Real           from Standard;
70             aText            : ExtendedString from TCollection;    
71             aPosition        : Pnt            from gp;
72             aSymbolPrs       : ArrowSide      from DsgPrs;    
73             anArrowSize      : Real           from Standard = 0.0)
74          ---Purpose: Constructs the angle display object defined by the
75          -- shapes aFShape, aSShape, the plane aPlane, the
76          -- value aVal, the text aText, the point aPosition, the
77          -- type of arrow aSymbolPrs, and the arrow length anArrowSize.
78          -- aFShape and aSShape are edges.
79     returns mutable AngleDimension from AIS;
80
81     Create (aCone       : Face           from TopoDS;
82             aVal        : Real           from Standard;
83             aText       : ExtendedString from TCollection)    
84          ---Purpose:  Angle of cone  
85     returns mutable AngleDimension from AIS;
86     
87    
88     Create (aCone            : Face           from TopoDS;
89             aVal             : Real           from Standard;
90             aText            : ExtendedString from TCollection;
91             aPosition        : Pnt            from gp;
92             aSymbolPrs       : ArrowSide      from DsgPrs;    
93             anArrowSize      : Real           from Standard = 0.01 )    
94          ---Purpose:  Angle of cone  
95     returns mutable AngleDimension from AIS;
96  --===================================================================       
97     
98     Create (aFirstFace  : Face           from TopoDS;
99             aSecondFace : Face           from TopoDS;
100             anAxis      : Ax1            from gp;
101             aVal        : Real           from Standard;
102             aText       : ExtendedString from TCollection)    
103           ---Purpose:  TwoPlanarFaceAngle dimension
104     returns mutable AngleDimension from AIS;
105
106     Create (aFirstFace  : Face           from TopoDS;
107             aSecondFace : Face           from TopoDS;
108             anAxis      : Ax1            from gp;
109             aVal        : Real           from Standard;
110             aText       : ExtendedString from TCollection;          
111             aPosition   : Pnt            from gp;
112             aSymbolPrs  : ArrowSide      from DsgPrs;    
113             anArrowSize : Real           from Standard = 0.0)
114           ---Purpose: TwoPlanarFacesAngle dimension  with   position
115           --           and text Face  can be Plane or Extrusion of line
116           --           or Offset of  those
117     returns mutable AngleDimension from AIS;
118
119
120     Create (aFFace      : Face           from TopoDS;
121             aSFace      : Face           from TopoDS;
122             aVal        : Real           from Standard;
123             aText       : ExtendedString from TCollection)    
124           ---Purpose:  Angle dimension between two curvilinear faces
125           --           Warning:
126           --           Requaired 0 <= aVal < PI,
127           --                     aVal must be defined exactly.
128     returns mutable AngleDimension from AIS;
129
130     Create (aFFace      : Face           from TopoDS;
131             aSFace      : Face           from TopoDS;
132             aVal        : Real           from Standard;
133             aText       : ExtendedString from TCollection;          
134             aPosition   : Pnt            from gp;
135             aSymbolPrs  : ArrowSide      from DsgPrs;    
136             anArrowSize : Real           from Standard = 0.001)
137          ---Purpose:  Angle dimension between two curvilinear faces
138          --           with position and text. Face can be Cone, Cylinder
139          --           Offset of Cone, Offset of Cylinder 
140     returns mutable AngleDimension from AIS;
141
142
143     Axis (me) 
144          ---Purpose:
145          -- Returns the axis set by the SetAxis method, which
146          -- serves to locate the angle between two faces.
147          ---C++: return const &
148          ---C++: inline 
149     returns Ax1 from gp 
150     is static;
151
152     SetAxis(me: mutable;anAxis : Ax1 from gp)
153          ---C++: inline
154          ---Purpose:
155          -- Sets the axis, anAxis, which serves to locate the
156          -- angle between two faces.
157     is static;
158
159     SetConeFace( me: mutable; aConeFace : Face from TopoDS )
160     is  static;
161
162     SetFirstShape( me: mutable; aFShape : Shape from TopoDS )
163     is redefined static;
164
165     SetSecondShape( me: mutable; aSShape : Shape from TopoDS )
166     is redefined static;
167
168
169     KindOfDimension(me) 
170          ---Purpose: Returns PLANEANGLE as the kind of dimension.
171          ---C++: inline
172     returns KindOfDimension from AIS 
173     is redefined;
174
175     IsMovable(me) returns Boolean from Standard 
176          ---C++: inline    
177          ---Purpose: Returns true if the angle dimension is movable.
178         
179     is redefined;
180     
181   -- Methods from PresentableObject
182
183     Compute(me            : mutable;
184             aPresentationManager: PresentationManager3d from PrsMgr;
185             aPresentation : mutable Presentation from Prs3d;
186             aMode         : Integer from Standard= 0) 
187     is redefined static private;
188     
189     Compute(me:mutable;
190                 aProjector: Projector from Prs3d;
191                 aPresentation: mutable Presentation from Prs3d)
192     is redefined static private;     
193
194     Compute(me:mutable;
195             aPresentationManager: PresentationManager2d from PrsMgr;
196             aPresentation: mutable GraphicObject from Graphic2d;
197             aMode: Integer from Standard = 0)
198     is redefined static private;        
199     
200     Compute(me            : mutable;
201             aProjector    : Projector from Prs3d;
202             aTrsf         : Transformation from Geom;
203             aPresentation : mutable Presentation from Prs3d)
204     is redefined;
205          ---Purpose: Computes the presentation according to a point of view
206          --          given by <aProjector>. 
207          --          This method should be used when the associated degenerated Presentations 
208          --          have been transformed by <aTrsf> which is not a Pure
209          --          Translation. The HLR Prs can't be deducted automatically
210          --          WARNING :<aTrsf> must be applied
211          --           to the object to display before computation  !!!
212
213 -- Methods from SelectableObject
214
215     ComputeSelection(me         : mutable;
216                      aSelection : mutable Selection from SelectMgr;
217                      aMode      : Integer from Standard)
218     is redefined private;
219
220     
221 --
222 --     Computation private methods
223 --
224
225     ComputeConeAngle(me: mutable; 
226                         aPresentation : mutable Presentation from Prs3d)
227     is private;
228
229     ComputeTwoFacesAngle(me: mutable;
230                           aPresentation : mutable Presentation from Prs3d)
231     is private;
232     
233     ComputeTwoPlanarFacesAngle(me: mutable;
234                           aPresentation : mutable Presentation from Prs3d)
235     is private;
236     
237     ComputeTwoCurvilinearFacesAngle(me: mutable;
238                           aPresentation : mutable Presentation from Prs3d)
239     is private;
240     
241     ComputeTwoEdgesAngle(me: mutable;
242                           aPresentation : mutable Presentation from Prs3d)
243     is private;
244     ComputeTwoEdgesNullAngle(me: mutable;
245                             aPresentation : mutable Presentation from Prs3d;  
246                             l1    : Line from Geom;
247                             l2    : Line from Geom;
248                             ptat11 : Pnt from gp;
249                             ptat12 : Pnt from gp;
250                             ptat21 : Pnt from gp;
251                             ptat22 : Pnt from gp;
252                             isInf1 : Boolean from Standard;
253                             isInf2 : Boolean from Standard )                        
254     is private;
255     
256     ComputeTwoEdgesNotNullAngle(me: mutable;
257                             aPresentation : mutable Presentation from Prs3d;  
258                             l1    : Line from Geom;
259                             l2    : Line from Geom;
260                             ptat11 : Pnt from gp;
261                             ptat12 : Pnt from gp;
262                             ptat21 : Pnt from gp;
263                             ptat22 : Pnt from gp;
264                             isInf1 : Boolean from Standard;
265                             isInf2 : Boolean from Standard )                        
266     is private;
267
268     Compute3DSelection(me         : mutable;
269                        aSelection : mutable Selection from SelectMgr)
270     is private;
271     
272     Compute2DSelection(me         : mutable;
273                        aSelection : mutable Selection from SelectMgr)
274     is private;
275     ComputeNull2DSelection(me         : mutable;
276                            aSelection : mutable Selection from SelectMgr; 
277                            distFS     : Real from Standard)
278     is private;
279
280     ComputeConeAngleSelection(me         : mutable;
281                               aSelection : mutable Selection from SelectMgr)
282     is private;    
283
284 fields
285
286     myNbShape  : Integer from Standard;
287     myCenter   : Pnt     from gp;
288     myFAttach  : Pnt     from gp;
289     mySAttach  : Pnt     from gp;
290     myFDir     : Dir     from gp;
291     mySDir     : Dir     from gp;
292     myAxis     : Ax1     from gp;
293     myCone     : Face    from TopoDS;
294    
295 end AngleDimension;