59caa1d754958704bcb947c9a55eeb8b9a30bfdf
[occt.git] / src / AIS / AIS.cdl
1 -- Created on: 1996-12-11
2 -- Created by: Robert COUBLANC
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 package AIS 
24
25          ---Purpose: Application Interactive Services provide the means to
26          -- create links between an application GUI viewer and
27          -- the packages which are used to manage selection
28          -- and presentation. The tools AIS defined in order to
29          -- do this include different sorts of entities: both the
30          -- selectable viewable objects themselves and the
31          -- context and attribute managers to define their
32          -- selection and display.
33          -- To orient the user as he works in a modeling
34          -- environment, views and selections must be
35          -- comprehensible. There must be several different sorts
36          -- of selectable and viewable object defined. These must
37          -- also be interactive, that is, connecting graphic
38          -- representation and the underlying reference
39          -- geometry. These entities are called Interactive
40          -- Objects, and are divided into four types:
41          -- -   the Datum
42          -- -   the Relation
43          -- -   the Object
44          -- -   None.
45          --   The Datum groups together the construction elements
46          -- such as lines, circles, points, trihedra, plane trihedra,
47          -- planes and axes.
48          -- The Relation is made up of constraints on one or
49          -- more interactive shapes and the corresponding
50          -- reference geometry. For example, you might want to
51          -- constrain two edges in a parallel relation. This
52          -- contraint is considered as an object in its own right,
53          -- and is shown as a sensitive primitive. This takes the
54          -- graphic form of a perpendicular arrow marked with
55          -- the || symbol and lying between the two edges.
56          -- The Object type includes topological shapes, and
57          -- connections between shapes.
58          -- None, in order not to eliminate the object, tells the
59          -- application to look further until it finds an object
60          -- definition in its generation which is accepted.
61          -- Inside these categories, you have the possibility
62          -- of   an additional characterization by means of a
63          -- signature. The signature provides an index to the
64          -- further characterization. By default, the   Interactive
65          -- Object has a None type and a signature of 0
66          -- (equivalent to None.) If you want to give a particular
67          -- type and signature to your interactive object, you must
68          -- redefine the two virtual methods: Type and Signature.
69          -- In the C++ inheritance structure of the package, each
70          -- class representing a specific Interactive Object
71          -- inherits AIS_InteractiveObject. Among these
72          -- inheriting classes, AIS_Relation functions as the
73          -- abstract mother class for tinheriting classes defining
74          -- display of specific relational constraints and types of
75          -- dimension. Some of these include:
76          -- -   display of constraints based on relations of
77          -- symmetry, tangency, parallelism and concentricity
78          -- -   display of dimensions for angles, offsets,
79          -- diameters, radii and chamfers.
80          --  No viewer can show everything at once with any
81          -- coherence or clarity. Views must be managed
82          -- carefully both sequentially and at any given instant.
83          -- Another function of the view is that of a context to
84          -- carry out design in. The design changes are applied
85          -- to the objects in the view and then extended to the
86          -- underlying reference geometry by a solver. To make
87          -- sense of this complicated visual data, several display
88          -- and selection tools are required. To facilitate
89          -- management, each object and each construction
90          -- element has a selection priority. There are also
91          -- means to modify the default priority.
92          -- To define an environment of dynamic detection, you
93          -- can use standard filter classes or create your own. A
94          -- filter questions the owner of the sensitive primitive in
95          -- local context to determine if it has the the desired
96          -- qualities. If it answers positively, it is kept. If not, it is rejected.
97          -- The standard filters supplied in AIS include:
98          -- AIS_AttributeFilter
99          -- AIS_SignatureFilter
100          -- AIS_TypeFilter.
101          -- Only the type filter can be used in the default
102          -- operating mode, the neutral point. The others can
103          -- only be used in open local contexts.
104          -- Neutral point and local context constitute the two
105          -- operating modes of the central entity which pilots
106          -- visualizations and selections, the Interactive Context.
107          -- It is linked to a main viewer and if you like, a trash bin
108          -- viewer as well.
109          -- The neutral point, which is the default mode, allows
110          -- you to easily visualize and select interactive objects
111          -- which have been loaded into the context. Opening
112          -- local contexts allows you to prepare and use a
113          -- temporary selection environment without disturbing
114          -- the neutral point. A set of functions allows you to
115          -- choose the interactive objects which you want to act
116          -- on, the selection modes which you want to activate,
117          -- and the temporary visualizations which you will
118          -- execute. When the operation is finished, you close the
119          -- current local context and return to the state in which
120          -- you were before opening it (neutral point or previous
121          -- local context).
122          -- An interactive object can have a certain number of
123          -- graphic attributes which are specific to it, such as
124          -- visualization mode, color, and material. By the same
125          -- token, the interactive context has a set of graphic
126          -- attributes, the Drawer which is valid by default for the
127          -- objects it controls.   When an interactive object is
128          -- visualized, the required graphic attributes are first
129          -- taken from the object's own Drawer if one exists, or
130          -- from the context drawer for the others.
131
132     
133 uses
134     TCollection,
135     MMgt,
136     Quantity,
137     TColgp,
138     TColStd,
139     TopLoc,
140     gp,
141     Geom,
142     Bnd,
143     Aspect,
144     Graphic3d,
145     V3d,
146     TopAbs,
147     TopoDS,
148     Prs3d,
149     PrsMgr,
150     Select3D,
151     SelectMgr,
152     StdSelect,
153     DsgPrs,
154     TopTools,
155     Poly
156
157 is
158     
159     
160     enumeration DisplayMode is WireFrame, Shaded;
161          ---Purpose:
162          -- Sets display modes other than neutral point ones,
163          -- for interactive objects. The possibilities include:
164          -- -   wireframe,
165          -- -   shaded,
166         
167     enumeration ConnectStatus is 
168     CS_None,
169     CS_Connection,
170     CS_Transform,
171     CS_Both;
172          ---Purpose: Gives the status of connection of an Interactive
173          -- Object. This will be one of the following:
174          -- -   No connection
175          -- -   Connection
176          -- -   Transformation
177          -- -   Both connection and transformation
178          --   This enumeration is used in
179          -- AIS_ConnectedInteractive. Transform indicates
180          -- that the Interactive Object reference geometry has
181          -- changed location relative to the reference geometry.
182         
183     enumeration TypeOfIso is
184     TOI_IsoU,
185     TOI_IsoV,
186     TOI_Both;
187          ---Purpose: Declares the type of isoparameter displayed.           
188     
189     enumeration DisplayStatus is 
190     DS_Displayed,  
191     DS_Erased,     
192     DS_FullErased,
193     DS_Temporary, 
194     DS_None;     
195          ---Purpose:
196          -- To give the display status of an Interactive Object.
197          -- This will be one of the following:
198          -- -   DS_Displayed: the Interactive Object is
199          --   displayed in the main viewer;
200          -- -   DS_Erased: the Interactive Object is erased in the collector;
201          -- -   DS_FullErased: the Interactive Object is erased
202          --   but not in the collector;
203          -- -   DS_Temporary: the Interactive Object is temporarily displayed;
204          -- -   DS_None: the Interactive Object is nowhere displayed.
205         
206     enumeration SelectStatus is 
207     SS_Added,
208     SS_Removed,
209     SS_NotDone
210     end SelectStatus;
211
212     enumeration StatusOfPick is
213     SOP_Error,
214     SOP_NothingSelected,
215     SOP_Removed,
216     SOP_OneSelected,
217     SOP_SeveralSelected
218     end StatusOfPick;
219
220     enumeration StatusOfDetection is
221     SOD_Error,
222     SOD_Nothing,
223     SOD_AllBad,
224     SOD_Selected,
225     SOD_OnlyOneDetected,
226     SOD_OnlyOneGood,
227     SOD_SeveralGood
228     end StatusOfDetection;
229
230     enumeration KindOfDimension is 
231     KOD_NONE,
232     KOD_LENGTH,
233     KOD_PLANEANGLE,
234     KOD_SOLIDANGLE,
235     KOD_AREA,
236     KOD_VOLUME,
237     KOD_MASS,
238     KOD_TIME,
239     KOD_RADIUS,
240     KOD_DIAMETER,
241     KOD_CHAMF2D,
242     KOD_CHAMF3D,
243     KOD_OFFSET,
244     KOD_ELLIPSERADIUS;
245          ---Purpose: Declares the kinds of dimensions needed in the
246          -- display of Interactive Objects.
247         
248     enumeration KindOfInteractive is
249     KOI_None,
250     KOI_Datum,
251     KOI_Shape,
252     KOI_Object,
253     KOI_Relation;
254          --- Purpose: Declares the type of Interactive Object. 
255          -- This is one of the following:
256          -- -   the Datum
257          -- -   the Object
258          -- -   the Relation
259          -- -   the None type.
260          --  The Datum is the construction element. These include
261          -- points, lines, axes and planes. The object brings
262          -- together topological shapes. The Relation includes
263          -- dimensions and constraints. When the object is of an
264          -- unknown type, the None type is declared.
265     
266     enumeration ClearMode is
267     CM_All,
268     CM_Interactive,
269     CM_Filters,
270     CM_StandardModes,
271     CM_TemporaryShapePrs
272     end ClearMode;
273          ---Purpose: Declares which entities in an opened local context
274          -- are to be cleared of mode settings. Temporary
275          -- graphic presentations such as those for sub-shapes,
276          -- for example, are only created for the selection
277          -- process. By means of these enumerations, they can
278          -- be cleared from local context.
279         
280     enumeration KindOfUnit is 
281     TOU_LENGTH,
282     TOU_SURFACE,
283     TOU_VOLUME,
284     TOU_PLANE_ANGLE,
285     TOU_SOLID_ANGLE,
286     TOU_MASS,
287     TOU_FORCE,
288     TOU_TIME;
289          ---Purpose: Declares the type of Interactive Object unit.
290         
291     enumeration TypeOfAxis is TOAX_Unknown,TOAX_XAxis,TOAX_YAxis,TOAX_ZAxis;
292          ---Purpose: Declares the type of axis.
293         
294     enumeration TypeOfPlane is TOPL_Unknown,TOPL_XYPlane,TOPL_XZPlane,TOPL_YZPlane;
295          ---Purpose: Declares the type of plane.
296     enumeration TypeOfDist is TOD_Unknown,TOD_Horizontal,TOD_Vertical;
297 ---Purpose: To declare the type of distance.
298     
299     enumeration TypeOfAttribute is 
300     TOA_Line,
301     TOA_Angle,
302     TOA_Wire,
303     TOA_Plane,
304     TOA_Vector,
305     TOA_UIso,
306     TOA_VIso,
307     TOA_Free,
308     TOA_UnFree,
309     TOA_Section, 
310     TOA_Hidden,
311     TOA_Seen,
312     TOA_FirstAxis,
313     TOA_SecondAxis,
314     TOA_ThirdAxis;
315     
316     enumeration StandardDatum is SD_None,SD_Point,SD_Axis,SD_Trihedron,SD_PlaneTrihedron,SD_Line,SD_Circle,SD_Plane;
317         --- Purpose: Declares the type of standard datum of an Interactive Object. 
318
319 -- New ------------------------------------------------
320
321     enumeration KindOfSurface is KOS_Plane, KOS_Cylinder, KOS_Cone, KOS_Sphere, KOS_Torus,
322                 KOS_Revolution, KOS_Extrusion, KOS_OtherSurface;
323 -------------------------------------------------------    
324    
325     class Triangulation;
326
327     class TexturedShape;
328
329     class Drawer;
330     
331     class InteractiveContext;
332
333     class GraphicTool;
334                             
335     class LocalContext;    
336
337     private class LocalStatus;
338
339     private class GlobalStatus;
340  
341     deferred class InteractiveObject;
342
343             ---Category: VARIOUS STANDARD INTERACTIVE OBJECTS
344             --           each type of Datum has a given signature.
345             --           the other interactive objects don't
346             --           implement this signature.
347             --           Mainly used for selection with Filters...
348
349     ---Category: Datum
350     class Point;                         --signature 1
351     class Axis;                          --signature 2
352     class Trihedron;                     --signature 3
353     class PlaneTrihedron;                --signature 4
354     class Line;                          --signature 5
355     class Circle;                        --signature 6
356     class Plane;                         --signature 7 
357
358     
359     ---Category: Object of type Shape
360     class Shape;                         --signature 0
361     class ConnectedShape;                --signature 1
362     class MultipleConnectedShape;        --signature 2        
363
364
365
366     ---Category: General Objects
367     class ConnectedInteractive;          --signature 0
368     class MultipleConnectedInteractive;  --signature 1        
369
370             ---Category:  DIMENSIONS AND RELATIONS
371  
372     class DimensionOwner;
373
374     deferred class Relation; 
375     deferred class EllipseRadiusDimension; 
376     class MaxRadiusDimension; 
377     class MinRadiusDimension; 
378     class LengthDimension;
379     class AngleDimension;
380     class RadiusDimension;
381     class DiameterDimension;
382     class Chamf2dDimension;
383     class Chamf3dDimension;
384     class OffsetDimension;
385     class FixRelation;
386     class PerpendicularRelation;
387     class ParallelRelation;
388     class TangentRelation;         
389     class ConcentricRelation;     
390     class IdenticRelation;
391     class SymmetricRelation; -- axial symmetry
392     class MidPointRelation; -- equal distance from point
393     class EqualRadiusRelation;
394     class EqualDistanceRelation;
395
396     
397             ---Category: FILTERS
398  
399     
400     class TypeFilter;
401     class SignatureFilter;    
402     class ExclusionFilter;
403     class AttributeFilter;
404     class C0RegularityFilter;
405     class BadEdgeFilter;
406
407     pointer PToContext to InteractiveContext from AIS;
408
409
410
411
412     class Selection;
413
414
415                     ---Category: The Collections
416
417
418     class ListOfInteractive instantiates List from TCollection
419     (InteractiveObject from AIS);
420
421     class SequenceOfInteractive instantiates Sequence from TCollection
422     (InteractiveObject from AIS);
423     
424     class SequenceOfDimension   instantiates Sequence from TCollection
425     (Relation from AIS);
426             
427     class MapOfInteractive instantiates Map from TCollection
428     (InteractiveObject from AIS,MapTransientHasher from TColStd);
429     
430     
431     class DataMapofIntegerListOfinteractive instantiates DataMap from
432     TCollection(Integer from Standard, ListOfInteractive from AIS,MapIntegerHasher  from  TColStd);
433     -- for further management of layers 
434
435     private class DataMapOfIOStatus instantiates DataMap from
436     TCollection(InteractiveObject from AIS,GlobalStatus from AIS,MapTransientHasher  from  TColStd);
437     -- Management of interactiveObjects Status...
438
439     class IndexedDataMapOfOwnerPrs instantiates IndexedDataMap from TCollection 
440     (EntityOwner from SelectMgr,Presentation from Prs3d ,MapTransientHasher from TColStd); 
441     -- for dynamic selection management in local context...
442     
443     -- san: 18/04/2003 AIS_Selection class optimization
444     -- agv: 04/05/2003 Replace NCollection_List for CDL list
445     imported NListTransient;
446     imported NListIteratorOfListTransient;
447     imported NDataMapOfTransientIteratorOfListTransient;
448     -- service map for AIS_Selection class optimized logic
449
450     private class  DataMapOfILC  instantiates  DataMap  from  TCollection 
451     (Integer  from  Standard,  LocalContext  from  AIS,  MapIntegerHasher  from  TColStd);
452
453     private class DataMapOfSelStat instantiates DataMap from TCollection 
454     (SelectableObject from SelectMgr,LocalStatus from AIS,MapTransientHasher  from  TColStd); 
455     -- to tell if an object is sensitive to Standard Modes Of Selection....
456
457 -- Methods for dimensions
458
459     Nearest( aShape : Shape from TopoDS;
460              aPoint : Pnt from gp )
461     returns Pnt from gp;
462          ---Purpose:
463          -- Returns the nearest point in a shape. This is used by
464          -- several classes in calculation of dimensions.
465     
466     Farest( aShape : Shape from TopoDS;
467             aPoint : Pnt from gp )
468     returns Pnt from gp;
469
470     ComputeGeometry(anEdge   : Edge from TopoDS;
471                     aCurve   : out Curve from Geom;
472                     FirstPnt : out Pnt from gp;
473                     LastPnt  : out Pnt from gp)
474     ---Purpose: Used by 2d Relation only
475     --          Computes the 3d geometry of <anEdge> in the current WorkingPlane
476     --          and the extremities if any
477     --          Return TRUE if ok
478     returns Boolean  from Standard;
479     
480     ComputeGeometry(anEdge   : Edge from TopoDS;
481                     aCurve   : out Curve from Geom;
482                     FirstPnt : out Pnt from gp;
483                     LastPnt  : out Pnt from gp;
484                     extCurve : out Curve from Geom;
485                     isinfinite: out Boolean from Standard;
486                     isOnPlane : out Boolean from Standard;      
487                     aPlane   : Plane from Geom)
488     ---Purpose: Used by 2d Relation only
489     --          Computes the 3d geometry of <anEdge> in the current WorkingPlane
490     --          and the extremities if any.
491     --          If <aCurve> is not in the current plane, <extCurve> contains
492     --          the not projected curve associated to <anEdge>.
493     --          If <anEdge> is infinite, <isinfinite> = true and the 2
494     --          parameters <FirstPnt> and <LastPnt> have no signification.
495     --          Return TRUE if ok
496     returns Boolean from Standard;
497     
498     ComputeGeometry     (anEdge1   : Edge from TopoDS;
499                          anEdge2   : Edge from TopoDS;
500                          aCurve1   : out Curve from Geom;
501                          aCurve2   : out Curve from Geom;
502                          FirstPnt1 : out Pnt from gp;
503                          LastPnt1  : out Pnt from gp;
504                          FirstPnt2 : out Pnt from gp;
505                          LastPnt2  : out Pnt from gp;
506                          aPlane    : Plane from Geom)
507     ---Purpose: Used by 2d Relation only
508     --          Computes the 3d geometry of <anEdge> in the current WorkingPlane
509     --          and the extremities if any
510     --          Return TRUE if ok
511     returns Boolean from Standard;
512
513
514     ComputeGeometry    (anEdge1   : Edge from TopoDS;
515                         anEdge2   : Edge from TopoDS;
516                         indexExt  : out Integer from Standard;
517                         aCurve1   : out Curve from Geom;
518                         aCurve2   : out Curve from Geom;
519                         FirstPnt1 : out Pnt from gp;
520                         LastPnt1  : out Pnt from gp;
521                         FirstPnt2 : out Pnt from gp;
522                         LastPnt2  : out Pnt from gp;
523                         ExtCurve  : out Curve from Geom;
524                         isinfinite1 : out Boolean from Standard;
525                         isinfinite2 : out Boolean from Standard;                        
526                         aPlane    : Plane from Geom)
527                         
528     ---Purpose: Used  by  2d Relation  only Computes  the  3d geometry
529     --          of<anEdge1> and <anEdge2> in the current Plane and the
530     --          extremities if any.   Return in ExtCurve  the 3d curve
531     --          (not projected  in the  plane)  of the  first edge  if
532     --          <indexExt> =1 or of the 2nd edge if <indexExt> = 2. If
533     --          <indexExt> = 0, ExtCurve is Null.  if there is an edge
534     --          external to the  plane,  <isinfinite> is true if  this
535     --          edge is infinite.  So, the extremities of it are not
536     --          significant.  Return TRUE if ok
537     returns Boolean from Standard;
538
539     ComputeGeomCurve   (aCurve    : in out Curve from Geom;
540                         first1    : Real from Standard;
541                         last1     : Real from Standard;
542                         FirstPnt1 : out Pnt from gp;
543                         LastPnt1  : out Pnt from gp;
544                         aPlane    : Plane from Geom;
545                         isOnPlane: out Boolean from Standard)
546                         
547     ---Purpose: Checks if aCurve belongs to aPlane; if not, projects aCurve in aPlane 
548     --          and returns aCurve;
549     --          Return TRUE if ok
550     returns Boolean from Standard;
551
552     ComputeGeometry(aVertex  : Vertex      from TopoDS;
553                     point    : out Pnt     from gp;
554                     aPlane   : Plane       from Geom;
555                     isOnPlane: out Boolean from Standard)
556     returns Boolean from Standard;
557     
558
559     GetPlaneFromFace( aFace     : Face            from TopoDS;
560                       aPlane    : out Pln         from gp;
561                       aSurf     : out Surface     from Geom;
562                       aSurfType : out KindOfSurface from AIS;
563                       Offset    : out Real from Standard )
564     returns Boolean from Standard;
565     ---Purpose: Tryes to get Plane from Face.  Returns Surface of Face
566     --          in aSurf.  Returns Standard_True  and Plane of Face in
567     --           aPlane in following  cases:
568     --          Face is Plane, Offset of Plane,
569     --                  Extrusion of Line  and Offset of  Extrusion of Line
570     --          Returns pure type of Surface which can be:
571     --          Plane, Cylinder, Cone, Sphere, Torus, 
572     --          SurfaceOfRevolution, SurfaceOfExtrusion
573
574     InitFaceLength(  aFace         :  Face                from  TopoDS; 
575                      aPlane        :  out  Pln            from  gp; 
576                      aSurface      :  out  Surface        from  Geom; 
577                      aSurfaceType  :  out  KindOfSurface  from  AIS; 
578                      anOffset      :  out  Real           from  Standard  ); 
579                      
580     ComputeLengthBetweenPlanarFaces( FirstFace     : Face        from TopoDS;
581                                      SecondFace    : Face        from TopoDS;
582                                      Plane1        : Pln         from gp;
583                                      Plane2        : Pln         from gp;
584                                      Value         : out Real    from Standard;
585                                      FirstAttach   : out Pnt     from gp ;
586                                      SecondAttach  : out Pnt     from gp ;
587                                      DirAttach     : out Dir     from gp ;
588                                      AutomaticPos  : Boolean     from Standard;
589                                      Position      : in out Pnt  from gp);
590     
591      ComputeLengthBetweenCurvilinearFaces( FirstFace      : Face from TopoDS;
592                                            SecondFace     : Face from TopoDS;
593                                            FirstSurf      : in out Surface from Geom;
594                                            SecondSurf     : in out Surface from Geom;
595                                            AutomaticPos   : Boolean from Standard; 
596                                            Value          : out Real from Standard;
597                                            Position       : out Pnt from gp;
598                                            FirstAttach    : out Pnt from gp;
599                                            SecondAttach   : out Pnt from gp;
600                                            DirAttach      : out Dir from gp );
601                                           
602      ComputeAngleBetweenPlanarFaces( FirstFace    : Face from TopoDS;
603                                      SecondFace   : Face from TopoDS;
604                                      Surf2        : Surface from Geom;
605                                      Axis         : Ax1 from gp;
606                                      Value        : Real from Standard;
607                                      AutomaticPos : Boolean from Standard; 
608                                      Position     : out Pnt from gp;
609                                      Center       : out Pnt from gp;
610                                      FirstAttach  : out Pnt from gp;
611                                      SecondAttach : out Pnt from gp;
612                                      FirstDir     : out Dir from gp;
613                                      SecondDir    : out Dir from gp);
614     ---Purpose: Computes geometric   parameters for planar   faces for
615     --          Angular dimensions
616  
617      ComputeAngleBetweenCurvilinearFaces( FirstFace    : Face from TopoDS;
618                                           SecondFace   : Face from TopoDS;
619                                           FirstSurf    : Surface from Geom;
620                                           SecondSurf   : Surface from Geom;
621                                           FirstSurfType  : KindOfSurface from AIS;
622                                           SecondSurfType : KindOfSurface from AIS;
623                                           Axis         : Ax1 from gp;
624                                           Value        : Real from Standard;
625                                           AutomaticPos : Boolean from Standard; 
626                                           Position     : out Pnt from gp;
627                                           Center       : out Pnt from gp;
628                                           FirstAttach  : out Pnt from gp;
629                                           SecondAttach : out Pnt from gp;
630                                           FirstDir     : out Dir from gp;
631                                           SecondDir    : out Dir from gp;
632                                           Plane        : out Plane from Geom );
633     ---Purpose: Computes geometric   parameters for curvilinear   faces for
634     --          Angular dimensions
635
636     ProjectPointOnPlane( aPoint : Pnt from gp; aPlane : Pln from gp )
637     returns Pnt from gp;
638                     
639     ProjectPointOnLine( aPoint : Pnt from gp; aLine : Lin from gp )
640     returns Pnt from gp; 
641      
642     TranslatePointToBound( aPoint : Pnt from gp; aDir : Dir from gp; aBndBox: Box from Bnd )
643     returns Pnt from gp;
644          
645     InDomain( aFirstPar    :  Real  from  Standard; 
646               aLastPar     :  Real  from  Standard;  
647               anAttachPar  :  Real  from  Standard)  
648     returns  Boolean  from  Standard;      
649     ---Purpose: returns  True  if  point  with anAttachPar  is 
650     --          in  domain  of  arc   
651   
652     NearestApex(elips  :  Elips from  gp;
653                 pApex  :  Pnt   from  gp; 
654                 nApex  :  Pnt   from  gp;
655                 fpara  :  Real  from  Standard ;
656                 lpara  :  Real  from  Standard ; 
657                 IsInDomain  :  out  Boolean  from  Standard) 
658     returns  Pnt  from  gp;
659     ---Purpose:  computes  nearest  to  ellipse  arc  apex 
660  
661     DistanceFromApex(elips  :  Elips  from  gp;
662                      Apex   :  Pnt    from  gp;
663                      par    :  Real   from  Standard )        
664     returns  Real  from  Standard;                   
665     ---Purpose:  computes  length  of  ellipse  arc  in  parametric  units   
666      
667     
668     ComputeProjEdgePresentation(aPres    : mutable Presentation from Prs3d; 
669                                 aDrawer  : mutable Drawer       from AIS;        
670                                 anEdge   : Edge                 from TopoDS;
671                                 ProjCurve: Curve                from Geom;
672                                 FirstP   : Pnt                  from gp;
673                                 LastP    : Pnt                  from gp;
674                                 aColor   : NameOfColor          from Quantity = Quantity_NOC_PURPLE;
675                                 aWidth   : Real                 from Standard = 2;
676                                 aProjTOL : TypeOfLine           from Aspect   = Aspect_TOL_DASH;
677                                 aCallTOL : TypeOfLine           from Aspect   = Aspect_TOL_DOT);
678     
679     ComputeProjVertexPresentation(aPres    : mutable Presentation from Prs3d; 
680                                   aDrawer  : mutable Drawer       from AIS;        
681                                   aVertex  : Vertex               from TopoDS;
682                                   ProjPoint: Pnt                  from gp;
683                                   aColor   : NameOfColor          from Quantity = Quantity_NOC_PURPLE;
684                                   aWidth   : Real                 from Standard = 2;
685                                   aProjTOM : TypeOfMarker         from Aspect   = Aspect_TOM_PLUS;
686                                   aCallTOL : TypeOfLine           from Aspect   = Aspect_TOL_DOT);
687
688 end AIS;