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