318badff8054c99049c5ec57cfe0ac4a08511a09
[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_Temporary, 
193     DS_None;     
194          ---Purpose:
195          -- To give the display status of an Interactive Object.
196          -- This will be one of the following:
197          -- -   DS_Displayed: the Interactive Object is
198          --   displayed in the main viewer;
199          -- -   DS_Erased: the Interactive Object is erased in the collector;
200          -- -   DS_FullErased: the Interactive Object is erased
201          --   but not in the collector;
202          -- -   DS_Temporary: the Interactive Object is temporarily displayed;
203          -- -   DS_None: the Interactive Object is nowhere displayed.
204         
205     enumeration SelectStatus is 
206     SS_Added,
207     SS_Removed,
208     SS_NotDone
209     end SelectStatus;
210
211     enumeration StatusOfPick is
212     SOP_Error,
213     SOP_NothingSelected,
214     SOP_Removed,
215     SOP_OneSelected,
216     SOP_SeveralSelected
217     end StatusOfPick;
218
219     enumeration StatusOfDetection is
220     SOD_Error,
221     SOD_Nothing,
222     SOD_AllBad,
223     SOD_Selected,
224     SOD_OnlyOneDetected,
225     SOD_OnlyOneGood,
226     SOD_SeveralGood
227     end StatusOfDetection;
228
229     enumeration KindOfDimension is 
230     KOD_NONE,
231     KOD_LENGTH,
232     KOD_PLANEANGLE,
233     KOD_SOLIDANGLE,
234     KOD_AREA,
235     KOD_VOLUME,
236     KOD_MASS,
237     KOD_TIME,
238     KOD_RADIUS,
239     KOD_DIAMETER,
240     KOD_CHAMF2D,
241     KOD_CHAMF3D,
242     KOD_OFFSET,
243     KOD_ELLIPSERADIUS;
244          ---Purpose: Declares the kinds of dimensions needed in the
245          -- display of Interactive Objects.
246         
247     enumeration KindOfInteractive is
248     KOI_None,
249     KOI_Datum,
250     KOI_Shape,
251     KOI_Object,
252     KOI_Relation;
253          --- Purpose: Declares the type of Interactive Object. 
254          -- This is one of the following:
255          -- -   the Datum
256          -- -   the Object
257          -- -   the Relation
258          -- -   the None type.
259          --  The Datum is the construction element. These include
260          -- points, lines, axes and planes. The object brings
261          -- together topological shapes. The Relation includes
262          -- dimensions and constraints. When the object is of an
263          -- unknown type, the None type is declared.
264     
265     enumeration ClearMode is
266     CM_All,
267     CM_Interactive,
268     CM_Filters,
269     CM_StandardModes,
270     CM_TemporaryShapePrs
271     end ClearMode;
272          ---Purpose: Declares which entities in an opened local context
273          -- are to be cleared of mode settings. Temporary
274          -- graphic presentations such as those for sub-shapes,
275          -- for example, are only created for the selection
276          -- process. By means of these enumerations, they can
277          -- be cleared from local context.
278
279     enumeration KindOfUnit is 
280     TOU_LENGTH,
281     TOU_SURFACE,
282     TOU_VOLUME,
283     TOU_PLANE_ANGLE,
284     TOU_SOLID_ANGLE,
285     TOU_MASS,
286     TOU_FORCE,
287     TOU_TIME;
288     ---Purpose: Declares the type of Interactive Object unit.
289
290     enumeration TypeOfAxis is TOAX_Unknown,TOAX_XAxis,TOAX_YAxis,TOAX_ZAxis;
291     ---Purpose: Declares the type of axis.
292
293     enumeration TypeOfPlane is TOPL_Unknown,TOPL_XYPlane,TOPL_XZPlane,TOPL_YZPlane;
294      ---Purpose: Declares the type of plane.
295     enumeration TypeOfDist is TOD_Unknown,TOD_Horizontal,TOD_Vertical;
296     ---Purpose: To declare the type of distance.
297
298     enumeration TypeOfAttribute is 
299     TOA_Line,
300     TOA_Dimension,
301     TOA_Wire,
302     TOA_Plane,
303     TOA_Vector,
304     TOA_UIso,
305     TOA_VIso,
306     TOA_Free,
307     TOA_UnFree,
308     TOA_Section, 
309     TOA_Hidden,
310     TOA_Seen,
311     TOA_FirstAxis,
312     TOA_SecondAxis,
313     TOA_ThirdAxis;
314
315     enumeration StandardDatum is SD_None,SD_Point,SD_Axis,SD_Trihedron,SD_PlaneTrihedron,SD_Line,SD_Circle,SD_Plane;
316     --- Purpose: Declares the type of standard datum of an Interactive Object. 
317
318     enumeration KindOfSurface is KOS_Plane, KOS_Cylinder, KOS_Cone, KOS_Sphere, KOS_Torus,
319                                  KOS_Revolution, KOS_Extrusion, KOS_OtherSurface;
320
321 -- Enumerations for dimensions management --
322
323     enumeration DisplaySpecialSymbol is DSS_No, DSS_Before, DSS_After;
324     ---Purpose: Specifies dimension special symbol display options
325
326     enumeration DimensionDisplayMode is DDM_All, DDM_Line, DDM_Text;
327     ---Purpose: Specifies dimension display modes for advanced highlighting and selection.
328
329     class Triangulation;
330
331     class TexturedShape;
332
333     class Drawer;
334     
335     class InteractiveContext;
336
337     class GraphicTool;
338                             
339     class LocalContext;    
340
341     private class LocalStatus;
342
343     private class GlobalStatus;
344  
345     deferred class InteractiveObject;
346
347             ---Category: VARIOUS STANDARD INTERACTIVE OBJECTS
348             --           each type of Datum has a given signature.
349             --           the other interactive objects don't
350             --           implement this signature.
351             --           Mainly used for selection with Filters...
352
353     ---Category: Datum
354     class Point;                         --signature 1
355     class Axis;                          --signature 2
356     class Trihedron;                     --signature 3
357     class PlaneTrihedron;                --signature 4
358     class Line;                          --signature 5
359     class Circle;                        --signature 6
360     class Plane;                         --signature 7 
361
362     
363     ---Category: Object of type Shape
364     class Shape;                         --signature 0
365     class ConnectedShape;                --signature 1
366     class MultipleConnectedShape;        --signature 2        
367
368
369
370     ---Category: General Objects
371     class ConnectedInteractive;          --signature 0
372     class MultipleConnectedInteractive;  --signature 1        
373
374             ---Category:  DIMENSIONS AND RELATIONS
375  
376     class DimensionOwner;
377
378     deferred class Relation; 
379     deferred class EllipseRadiusDimension; 
380     class MaxRadiusDimension; 
381     class MinRadiusDimension; 
382     imported LengthDimension;
383     imported AngleDimension;
384     imported RadiusDimension;
385     imported DiameterDimension;
386     class Chamf2dDimension;
387     class Chamf3dDimension;
388     class OffsetDimension;
389     class FixRelation;
390     class PerpendicularRelation;
391     class ParallelRelation;
392     class TangentRelation;         
393     class ConcentricRelation;     
394     class IdenticRelation;
395     class SymmetricRelation; -- axial symmetry
396     class MidPointRelation; -- equal distance from point
397     class EqualRadiusRelation;
398     class EqualDistanceRelation;
399
400     
401             ---Category: FILTERS
402  
403     
404     class TypeFilter;
405     class SignatureFilter;    
406     class ExclusionFilter;
407     class AttributeFilter;
408     class C0RegularityFilter;
409     class BadEdgeFilter;
410
411     pointer PToContext to InteractiveContext from AIS;
412
413
414
415
416     class Selection;
417
418
419                     ---Category: The Collections
420
421
422     class ListOfInteractive instantiates List from TCollection
423     (InteractiveObject from AIS);
424
425     class SequenceOfInteractive instantiates Sequence from TCollection
426     (InteractiveObject from AIS);
427     
428     class SequenceOfDimension   instantiates Sequence from TCollection
429     (Relation from AIS);
430             
431     class MapOfInteractive instantiates Map from TCollection
432     (InteractiveObject from AIS,MapTransientHasher from TColStd);
433     
434     
435     class DataMapofIntegerListOfinteractive instantiates DataMap from
436     TCollection(Integer from Standard, ListOfInteractive from AIS,MapIntegerHasher  from  TColStd);
437     -- for further management of layers 
438
439     private class DataMapOfIOStatus instantiates DataMap from
440     TCollection(InteractiveObject from AIS,GlobalStatus from AIS,MapTransientHasher  from  TColStd);
441     -- Management of interactiveObjects Status...
442
443     class IndexedDataMapOfOwnerPrs instantiates IndexedDataMap from TCollection 
444     (EntityOwner from SelectMgr,Presentation from Prs3d ,MapTransientHasher from TColStd); 
445     -- for dynamic selection management in local context...
446     
447     -- san: 18/04/2003 AIS_Selection class optimization
448     -- agv: 04/05/2003 Replace NCollection_List for CDL list
449     imported NListTransient;
450     imported NListIteratorOfListTransient;
451     imported NDataMapOfTransientIteratorOfListTransient;
452     -- service map for AIS_Selection class optimized logic
453
454     private class  DataMapOfILC  instantiates  DataMap  from  TCollection 
455     (Integer  from  Standard,  LocalContext  from  AIS,  MapIntegerHasher  from  TColStd);
456
457     private class DataMapOfSelStat instantiates DataMap from TCollection 
458     (SelectableObject from SelectMgr,LocalStatus from AIS,MapTransientHasher  from  TColStd); 
459     -- to tell if an object is sensitive to Standard Modes Of Selection....
460
461 -- Methods for dimensions
462
463     Nearest( aShape : Shape from TopoDS;
464              aPoint : Pnt from gp )
465     returns Pnt from gp;
466          ---Purpose:
467          -- Returns the nearest point in a shape. This is used by
468          -- several classes in calculation of dimensions.
469     
470     Farest( aShape : Shape from TopoDS;
471             aPoint : Pnt from gp )
472     returns Pnt from gp;
473
474     ComputeGeometry(anEdge   : Edge from TopoDS;
475                     aCurve   : out Curve from Geom;
476                     FirstPnt : out Pnt from gp;
477                     LastPnt  : out Pnt from gp)
478     ---Purpose: Used by 2d Relation only
479     --          Computes the 3d geometry of <anEdge> in the current WorkingPlane
480     --          and the extremities if any
481     --          Return TRUE if ok
482     returns Boolean  from Standard;
483     
484     ComputeGeometry(anEdge   : Edge from TopoDS;
485                     aCurve   : out Curve from Geom;
486                     FirstPnt : out Pnt from gp;
487                     LastPnt  : out Pnt from gp;
488                     extCurve : out Curve from Geom;
489                     isinfinite: out Boolean from Standard;
490                     isOnPlane : out Boolean from Standard;      
491                     aPlane   : Plane from Geom)
492     ---Purpose: Used by 2d Relation only
493     --          Computes the 3d geometry of <anEdge> in the current WorkingPlane
494     --          and the extremities if any.
495     --          If <aCurve> is not in the current plane, <extCurve> contains
496     --          the not projected curve associated to <anEdge>.
497     --          If <anEdge> is infinite, <isinfinite> = true and the 2
498     --          parameters <FirstPnt> and <LastPnt> have no signification.
499     --          Return TRUE if ok
500     returns Boolean from Standard;
501     
502     ComputeGeometry     (anEdge1   : Edge from TopoDS;
503                          anEdge2   : Edge from TopoDS;
504                          aCurve1   : out Curve from Geom;
505                          aCurve2   : out Curve from Geom;
506                          FirstPnt1 : out Pnt from gp;
507                          LastPnt1  : out Pnt from gp;
508                          FirstPnt2 : out Pnt from gp;
509                          LastPnt2  : out Pnt from gp;
510                          aPlane    : Plane from Geom)
511     ---Purpose: Used by 2d Relation only
512     --          Computes the 3d geometry of <anEdge> in the current WorkingPlane
513     --          and the extremities if any
514     --          Return TRUE if ok
515     returns Boolean from Standard;
516
517
518     ComputeGeometry    (anEdge1   : Edge from TopoDS;
519                         anEdge2   : Edge from TopoDS;
520                         indexExt  : out Integer from Standard;
521                         aCurve1   : out Curve from Geom;
522                         aCurve2   : out Curve from Geom;
523                         FirstPnt1 : out Pnt from gp;
524                         LastPnt1  : out Pnt from gp;
525                         FirstPnt2 : out Pnt from gp;
526                         LastPnt2  : out Pnt from gp;
527                         ExtCurve  : out Curve from Geom;
528                         isinfinite1 : out Boolean from Standard;
529                         isinfinite2 : out Boolean from Standard;                        
530                         aPlane    : Plane from Geom)
531                         
532     ---Purpose: Used  by  2d Relation  only Computes  the  3d geometry
533     --          of<anEdge1> and <anEdge2> in the current Plane and the
534     --          extremities if any.   Return in ExtCurve  the 3d curve
535     --          (not projected  in the  plane)  of the  first edge  if
536     --          <indexExt> =1 or of the 2nd edge if <indexExt> = 2. If
537     --          <indexExt> = 0, ExtCurve is Null.  if there is an edge
538     --          external to the  plane,  <isinfinite> is true if  this
539     --          edge is infinite.  So, the extremities of it are not
540     --          significant.  Return TRUE if ok
541     returns Boolean from Standard;
542
543     ComputeGeomCurve   (aCurve    : in out Curve from Geom;
544                         first1    : Real from Standard;
545                         last1     : Real from Standard;
546                         FirstPnt1 : out Pnt from gp;
547                         LastPnt1  : out Pnt from gp;
548                         aPlane    : Plane from Geom;
549                         isOnPlane: out Boolean from Standard)
550                         
551     ---Purpose: Checks if aCurve belongs to aPlane; if not, projects aCurve in aPlane 
552     --          and returns aCurve;
553     --          Return TRUE if ok
554     returns Boolean from Standard;
555
556     ComputeGeometry(aVertex  : Vertex      from TopoDS;
557                     point    : out Pnt     from gp;
558                     aPlane   : Plane       from Geom;
559                     isOnPlane: out Boolean from Standard)
560     returns Boolean from Standard;
561     
562
563     GetPlaneFromFace( aFace     : Face            from TopoDS;
564                       aPlane    : out Pln         from gp;
565                       aSurf     : out Surface     from Geom;
566                       aSurfType : out KindOfSurface from AIS;
567                       Offset    : out Real from Standard )
568     returns Boolean from Standard;
569     ---Purpose: Tryes to get Plane from Face.  Returns Surface of Face
570     --          in aSurf.  Returns Standard_True  and Plane of Face in
571     --           aPlane in following  cases:
572     --          Face is Plane, Offset of Plane,
573     --                  Extrusion of Line  and Offset of  Extrusion of Line
574     --          Returns pure type of Surface which can be:
575     --          Plane, Cylinder, Cone, Sphere, Torus, 
576     --          SurfaceOfRevolution, SurfaceOfExtrusion
577
578     InitFaceLength(  aFace         :  Face                from  TopoDS; 
579                      aPlane        :  out  Pln            from  gp; 
580                      aSurface      :  out  Surface        from  Geom; 
581                      aSurfaceType  :  out  KindOfSurface  from  AIS; 
582                      anOffset      :  out  Real           from  Standard  ); 
583                      
584     ComputeLengthBetweenPlanarFaces( FirstFace     : Face        from TopoDS;
585                                      SecondFace    : Face        from TopoDS;
586                                      Plane1        : Pln         from gp;
587                                      Plane2        : Pln         from gp;
588                                      Value         : out Real    from Standard;
589                                      FirstAttach   : out Pnt     from gp ;
590                                      SecondAttach  : out Pnt     from gp ;
591                                      DirAttach     : out Dir     from gp ;
592                                      AutomaticPos  : Boolean     from Standard;
593                                      Position      : in out Pnt  from gp);
594     
595      ComputeLengthBetweenCurvilinearFaces( FirstFace      : Face from TopoDS;
596                                            SecondFace     : Face from TopoDS;
597                                            FirstSurf      : in out Surface from Geom;
598                                            SecondSurf     : in out Surface from Geom;
599                                            AutomaticPos   : Boolean from Standard; 
600                                            Value          : out Real from Standard;
601                                            Position       : out Pnt from gp;
602                                            FirstAttach    : out Pnt from gp;
603                                            SecondAttach   : out Pnt from gp;
604                                            DirAttach      : out Dir from gp );
605                                           
606      ComputeAngleBetweenPlanarFaces( FirstFace    : Face from TopoDS;
607                                      SecondFace   : Face from TopoDS;
608                                      Surf2        : Surface from Geom;
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     ---Purpose: Computes geometric   parameters for planar   faces for
619     --          Angular dimensions
620  
621      ComputeAngleBetweenCurvilinearFaces( FirstFace    : Face from TopoDS;
622                                           SecondFace   : Face from TopoDS;
623                                           FirstSurf    : Surface from Geom;
624                                           SecondSurf   : Surface from Geom;
625                                           FirstSurfType  : KindOfSurface from AIS;
626                                           SecondSurfType : KindOfSurface from AIS;
627                                           Axis         : Ax1 from gp;
628                                           Value        : Real from Standard;
629                                           AutomaticPos : Boolean from Standard; 
630                                           Position     : out Pnt from gp;
631                                           Center       : out Pnt from gp;
632                                           FirstAttach  : out Pnt from gp;
633                                           SecondAttach : out Pnt from gp;
634                                           FirstDir     : out Dir from gp;
635                                           SecondDir    : out Dir from gp;
636                                           Plane        : out Plane from Geom );
637     ---Purpose: Computes geometric   parameters for curvilinear   faces for
638     --          Angular dimensions
639
640     ProjectPointOnPlane( aPoint : Pnt from gp; aPlane : Pln from gp )
641     returns Pnt from gp;
642                     
643     ProjectPointOnLine( aPoint : Pnt from gp; aLine : Lin from gp )
644     returns Pnt from gp; 
645      
646     TranslatePointToBound( aPoint : Pnt from gp; aDir : Dir from gp; aBndBox: Box from Bnd )
647     returns Pnt from gp;
648          
649     InDomain( aFirstPar    :  Real  from  Standard; 
650               aLastPar     :  Real  from  Standard;  
651               anAttachPar  :  Real  from  Standard)  
652     returns  Boolean  from  Standard;      
653     ---Purpose: returns  True  if  point  with anAttachPar  is 
654     --          in  domain  of  arc   
655   
656     NearestApex(elips  :  Elips from  gp;
657                 pApex  :  Pnt   from  gp; 
658                 nApex  :  Pnt   from  gp;
659                 fpara  :  Real  from  Standard ;
660                 lpara  :  Real  from  Standard ; 
661                 IsInDomain  :  out  Boolean  from  Standard) 
662     returns  Pnt  from  gp;
663     ---Purpose:  computes  nearest  to  ellipse  arc  apex 
664  
665     DistanceFromApex(elips  :  Elips  from  gp;
666                      Apex   :  Pnt    from  gp;
667                      par    :  Real   from  Standard )        
668     returns  Real  from  Standard;                   
669     ---Purpose:  computes  length  of  ellipse  arc  in  parametric  units   
670      
671     
672     ComputeProjEdgePresentation(aPres    : mutable Presentation from Prs3d; 
673                                 aDrawer  : mutable Drawer       from AIS;        
674                                 anEdge   : Edge                 from TopoDS;
675                                 ProjCurve: Curve                from Geom;
676                                 FirstP   : Pnt                  from gp;
677                                 LastP    : Pnt                  from gp;
678                                 aColor   : NameOfColor          from Quantity = Quantity_NOC_PURPLE;
679                                 aWidth   : Real                 from Standard = 2;
680                                 aProjTOL : TypeOfLine           from Aspect   = Aspect_TOL_DASH;
681                                 aCallTOL : TypeOfLine           from Aspect   = Aspect_TOL_DOT);
682     
683     ComputeProjVertexPresentation(aPres    : mutable Presentation from Prs3d; 
684                                   aDrawer  : mutable Drawer       from AIS;        
685                                   aVertex  : Vertex               from TopoDS;
686                                   ProjPoint: Pnt                  from gp;
687                                   aColor   : NameOfColor          from Quantity = Quantity_NOC_PURPLE;
688                                   aWidth   : Real                 from Standard = 2;
689                                   aProjTOM : TypeOfMarker         from Aspect   = Aspect_TOM_PLUS;
690                                   aCallTOL : TypeOfLine           from Aspect   = Aspect_TOL_DOT);
691
692 end AIS;