0023654: Problem with displaying vertices in OCC view after closing all OCC views...
[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_Angle,
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 -- New ------------------------------------------------
319
320     enumeration KindOfSurface is KOS_Plane, KOS_Cylinder, KOS_Cone, KOS_Sphere, KOS_Torus,
321                 KOS_Revolution, KOS_Extrusion, KOS_OtherSurface;
322 -------------------------------------------------------    
323    
324     class Triangulation;
325
326     class TexturedShape;
327
328     class Drawer;
329     
330     class InteractiveContext;
331
332     class GraphicTool;
333                             
334     class LocalContext;    
335
336     private class LocalStatus;
337
338     private class GlobalStatus;
339  
340     deferred class InteractiveObject;
341
342             ---Category: VARIOUS STANDARD INTERACTIVE OBJECTS
343             --           each type of Datum has a given signature.
344             --           the other interactive objects don't
345             --           implement this signature.
346             --           Mainly used for selection with Filters...
347
348     ---Category: Datum
349     class Point;                         --signature 1
350     class Axis;                          --signature 2
351     class Trihedron;                     --signature 3
352     class PlaneTrihedron;                --signature 4
353     class Line;                          --signature 5
354     class Circle;                        --signature 6
355     class Plane;                         --signature 7 
356
357     
358     ---Category: Object of type Shape
359     class Shape;                         --signature 0
360     class ConnectedShape;                --signature 1
361     class MultipleConnectedShape;        --signature 2        
362
363
364
365     ---Category: General Objects
366     class ConnectedInteractive;          --signature 0
367     class MultipleConnectedInteractive;  --signature 1        
368
369             ---Category:  DIMENSIONS AND RELATIONS
370  
371     class DimensionOwner;
372
373     deferred class Relation; 
374     deferred class EllipseRadiusDimension; 
375     class MaxRadiusDimension; 
376     class MinRadiusDimension; 
377     class LengthDimension;
378     class AngleDimension;
379     class RadiusDimension;
380     class DiameterDimension;
381     class Chamf2dDimension;
382     class Chamf3dDimension;
383     class OffsetDimension;
384     class FixRelation;
385     class PerpendicularRelation;
386     class ParallelRelation;
387     class TangentRelation;         
388     class ConcentricRelation;     
389     class IdenticRelation;
390     class SymmetricRelation; -- axial symmetry
391     class MidPointRelation; -- equal distance from point
392     class EqualRadiusRelation;
393     class EqualDistanceRelation;
394
395     
396             ---Category: FILTERS
397  
398     
399     class TypeFilter;
400     class SignatureFilter;    
401     class ExclusionFilter;
402     class AttributeFilter;
403     class C0RegularityFilter;
404     class BadEdgeFilter;
405
406     pointer PToContext to InteractiveContext from AIS;
407
408
409
410
411     class Selection;
412
413
414                     ---Category: The Collections
415
416
417     class ListOfInteractive instantiates List from TCollection
418     (InteractiveObject from AIS);
419
420     class SequenceOfInteractive instantiates Sequence from TCollection
421     (InteractiveObject from AIS);
422     
423     class SequenceOfDimension   instantiates Sequence from TCollection
424     (Relation from AIS);
425             
426     class MapOfInteractive instantiates Map from TCollection
427     (InteractiveObject from AIS,MapTransientHasher from TColStd);
428     
429     
430     class DataMapofIntegerListOfinteractive instantiates DataMap from
431     TCollection(Integer from Standard, ListOfInteractive from AIS,MapIntegerHasher  from  TColStd);
432     -- for further management of layers 
433
434     private class DataMapOfIOStatus instantiates DataMap from
435     TCollection(InteractiveObject from AIS,GlobalStatus from AIS,MapTransientHasher  from  TColStd);
436     -- Management of interactiveObjects Status...
437
438     class IndexedDataMapOfOwnerPrs instantiates IndexedDataMap from TCollection 
439     (EntityOwner from SelectMgr,Presentation from Prs3d ,MapTransientHasher from TColStd); 
440     -- for dynamic selection management in local context...
441     
442     -- san: 18/04/2003 AIS_Selection class optimization
443     -- agv: 04/05/2003 Replace NCollection_List for CDL list
444     imported NListTransient;
445     imported NListIteratorOfListTransient;
446     imported NDataMapOfTransientIteratorOfListTransient;
447     -- service map for AIS_Selection class optimized logic
448
449     private class  DataMapOfILC  instantiates  DataMap  from  TCollection 
450     (Integer  from  Standard,  LocalContext  from  AIS,  MapIntegerHasher  from  TColStd);
451
452     private class DataMapOfSelStat instantiates DataMap from TCollection 
453     (SelectableObject from SelectMgr,LocalStatus from AIS,MapTransientHasher  from  TColStd); 
454     -- to tell if an object is sensitive to Standard Modes Of Selection....
455
456 -- Methods for dimensions
457
458     Nearest( aShape : Shape from TopoDS;
459              aPoint : Pnt from gp )
460     returns Pnt from gp;
461          ---Purpose:
462          -- Returns the nearest point in a shape. This is used by
463          -- several classes in calculation of dimensions.
464     
465     Farest( aShape : Shape from TopoDS;
466             aPoint : Pnt from gp )
467     returns Pnt from gp;
468
469     ComputeGeometry(anEdge   : Edge from TopoDS;
470                     aCurve   : out Curve from Geom;
471                     FirstPnt : out Pnt from gp;
472                     LastPnt  : out Pnt from gp)
473     ---Purpose: Used by 2d Relation only
474     --          Computes the 3d geometry of <anEdge> in the current WorkingPlane
475     --          and the extremities if any
476     --          Return TRUE if ok
477     returns Boolean  from Standard;
478     
479     ComputeGeometry(anEdge   : Edge from TopoDS;
480                     aCurve   : out Curve from Geom;
481                     FirstPnt : out Pnt from gp;
482                     LastPnt  : out Pnt from gp;
483                     extCurve : out Curve from Geom;
484                     isinfinite: out Boolean from Standard;
485                     isOnPlane : out Boolean from Standard;      
486                     aPlane   : Plane from Geom)
487     ---Purpose: Used by 2d Relation only
488     --          Computes the 3d geometry of <anEdge> in the current WorkingPlane
489     --          and the extremities if any.
490     --          If <aCurve> is not in the current plane, <extCurve> contains
491     --          the not projected curve associated to <anEdge>.
492     --          If <anEdge> is infinite, <isinfinite> = true and the 2
493     --          parameters <FirstPnt> and <LastPnt> have no signification.
494     --          Return TRUE if ok
495     returns Boolean from Standard;
496     
497     ComputeGeometry     (anEdge1   : Edge from TopoDS;
498                          anEdge2   : Edge from TopoDS;
499                          aCurve1   : out Curve from Geom;
500                          aCurve2   : out Curve from Geom;
501                          FirstPnt1 : out Pnt from gp;
502                          LastPnt1  : out Pnt from gp;
503                          FirstPnt2 : out Pnt from gp;
504                          LastPnt2  : out Pnt from gp;
505                          aPlane    : Plane from Geom)
506     ---Purpose: Used by 2d Relation only
507     --          Computes the 3d geometry of <anEdge> in the current WorkingPlane
508     --          and the extremities if any
509     --          Return TRUE if ok
510     returns Boolean from Standard;
511
512
513     ComputeGeometry    (anEdge1   : Edge from TopoDS;
514                         anEdge2   : Edge from TopoDS;
515                         indexExt  : out Integer from Standard;
516                         aCurve1   : out Curve from Geom;
517                         aCurve2   : out Curve from Geom;
518                         FirstPnt1 : out Pnt from gp;
519                         LastPnt1  : out Pnt from gp;
520                         FirstPnt2 : out Pnt from gp;
521                         LastPnt2  : out Pnt from gp;
522                         ExtCurve  : out Curve from Geom;
523                         isinfinite1 : out Boolean from Standard;
524                         isinfinite2 : out Boolean from Standard;                        
525                         aPlane    : Plane from Geom)
526                         
527     ---Purpose: Used  by  2d Relation  only Computes  the  3d geometry
528     --          of<anEdge1> and <anEdge2> in the current Plane and the
529     --          extremities if any.   Return in ExtCurve  the 3d curve
530     --          (not projected  in the  plane)  of the  first edge  if
531     --          <indexExt> =1 or of the 2nd edge if <indexExt> = 2. If
532     --          <indexExt> = 0, ExtCurve is Null.  if there is an edge
533     --          external to the  plane,  <isinfinite> is true if  this
534     --          edge is infinite.  So, the extremities of it are not
535     --          significant.  Return TRUE if ok
536     returns Boolean from Standard;
537
538     ComputeGeomCurve   (aCurve    : in out Curve from Geom;
539                         first1    : Real from Standard;
540                         last1     : Real from Standard;
541                         FirstPnt1 : out Pnt from gp;
542                         LastPnt1  : out Pnt from gp;
543                         aPlane    : Plane from Geom;
544                         isOnPlane: out Boolean from Standard)
545                         
546     ---Purpose: Checks if aCurve belongs to aPlane; if not, projects aCurve in aPlane 
547     --          and returns aCurve;
548     --          Return TRUE if ok
549     returns Boolean from Standard;
550
551     ComputeGeometry(aVertex  : Vertex      from TopoDS;
552                     point    : out Pnt     from gp;
553                     aPlane   : Plane       from Geom;
554                     isOnPlane: out Boolean from Standard)
555     returns Boolean from Standard;
556     
557
558     GetPlaneFromFace( aFace     : Face            from TopoDS;
559                       aPlane    : out Pln         from gp;
560                       aSurf     : out Surface     from Geom;
561                       aSurfType : out KindOfSurface from AIS;
562                       Offset    : out Real from Standard )
563     returns Boolean from Standard;
564     ---Purpose: Tryes to get Plane from Face.  Returns Surface of Face
565     --          in aSurf.  Returns Standard_True  and Plane of Face in
566     --           aPlane in following  cases:
567     --          Face is Plane, Offset of Plane,
568     --                  Extrusion of Line  and Offset of  Extrusion of Line
569     --          Returns pure type of Surface which can be:
570     --          Plane, Cylinder, Cone, Sphere, Torus, 
571     --          SurfaceOfRevolution, SurfaceOfExtrusion
572
573     InitFaceLength(  aFace         :  Face                from  TopoDS; 
574                      aPlane        :  out  Pln            from  gp; 
575                      aSurface      :  out  Surface        from  Geom; 
576                      aSurfaceType  :  out  KindOfSurface  from  AIS; 
577                      anOffset      :  out  Real           from  Standard  ); 
578                      
579     ComputeLengthBetweenPlanarFaces( FirstFace     : Face        from TopoDS;
580                                      SecondFace    : Face        from TopoDS;
581                                      Plane1        : Pln         from gp;
582                                      Plane2        : Pln         from gp;
583                                      Value         : out Real    from Standard;
584                                      FirstAttach   : out Pnt     from gp ;
585                                      SecondAttach  : out Pnt     from gp ;
586                                      DirAttach     : out Dir     from gp ;
587                                      AutomaticPos  : Boolean     from Standard;
588                                      Position      : in out Pnt  from gp);
589     
590      ComputeLengthBetweenCurvilinearFaces( FirstFace      : Face from TopoDS;
591                                            SecondFace     : Face from TopoDS;
592                                            FirstSurf      : in out Surface from Geom;
593                                            SecondSurf     : in out Surface from Geom;
594                                            AutomaticPos   : Boolean from Standard; 
595                                            Value          : out Real from Standard;
596                                            Position       : out Pnt from gp;
597                                            FirstAttach    : out Pnt from gp;
598                                            SecondAttach   : out Pnt from gp;
599                                            DirAttach      : out Dir from gp );
600                                           
601      ComputeAngleBetweenPlanarFaces( FirstFace    : Face from TopoDS;
602                                      SecondFace   : Face from TopoDS;
603                                      Surf2        : Surface from Geom;
604                                      Axis         : Ax1 from gp;
605                                      Value        : Real from Standard;
606                                      AutomaticPos : Boolean from Standard; 
607                                      Position     : out Pnt from gp;
608                                      Center       : out Pnt from gp;
609                                      FirstAttach  : out Pnt from gp;
610                                      SecondAttach : out Pnt from gp;
611                                      FirstDir     : out Dir from gp;
612                                      SecondDir    : out Dir from gp);
613     ---Purpose: Computes geometric   parameters for planar   faces for
614     --          Angular dimensions
615  
616      ComputeAngleBetweenCurvilinearFaces( FirstFace    : Face from TopoDS;
617                                           SecondFace   : Face from TopoDS;
618                                           FirstSurf    : Surface from Geom;
619                                           SecondSurf   : Surface from Geom;
620                                           FirstSurfType  : KindOfSurface from AIS;
621                                           SecondSurfType : KindOfSurface from AIS;
622                                           Axis         : Ax1 from gp;
623                                           Value        : Real from Standard;
624                                           AutomaticPos : Boolean from Standard; 
625                                           Position     : out Pnt from gp;
626                                           Center       : out Pnt from gp;
627                                           FirstAttach  : out Pnt from gp;
628                                           SecondAttach : out Pnt from gp;
629                                           FirstDir     : out Dir from gp;
630                                           SecondDir    : out Dir from gp;
631                                           Plane        : out Plane from Geom );
632     ---Purpose: Computes geometric   parameters for curvilinear   faces for
633     --          Angular dimensions
634
635     ProjectPointOnPlane( aPoint : Pnt from gp; aPlane : Pln from gp )
636     returns Pnt from gp;
637                     
638     ProjectPointOnLine( aPoint : Pnt from gp; aLine : Lin from gp )
639     returns Pnt from gp; 
640      
641     TranslatePointToBound( aPoint : Pnt from gp; aDir : Dir from gp; aBndBox: Box from Bnd )
642     returns Pnt from gp;
643          
644     InDomain( aFirstPar    :  Real  from  Standard; 
645               aLastPar     :  Real  from  Standard;  
646               anAttachPar  :  Real  from  Standard)  
647     returns  Boolean  from  Standard;      
648     ---Purpose: returns  True  if  point  with anAttachPar  is 
649     --          in  domain  of  arc   
650   
651     NearestApex(elips  :  Elips from  gp;
652                 pApex  :  Pnt   from  gp; 
653                 nApex  :  Pnt   from  gp;
654                 fpara  :  Real  from  Standard ;
655                 lpara  :  Real  from  Standard ; 
656                 IsInDomain  :  out  Boolean  from  Standard) 
657     returns  Pnt  from  gp;
658     ---Purpose:  computes  nearest  to  ellipse  arc  apex 
659  
660     DistanceFromApex(elips  :  Elips  from  gp;
661                      Apex   :  Pnt    from  gp;
662                      par    :  Real   from  Standard )        
663     returns  Real  from  Standard;                   
664     ---Purpose:  computes  length  of  ellipse  arc  in  parametric  units   
665      
666     
667     ComputeProjEdgePresentation(aPres    : mutable Presentation from Prs3d; 
668                                 aDrawer  : mutable Drawer       from AIS;        
669                                 anEdge   : Edge                 from TopoDS;
670                                 ProjCurve: Curve                from Geom;
671                                 FirstP   : Pnt                  from gp;
672                                 LastP    : Pnt                  from gp;
673                                 aColor   : NameOfColor          from Quantity = Quantity_NOC_PURPLE;
674                                 aWidth   : Real                 from Standard = 2;
675                                 aProjTOL : TypeOfLine           from Aspect   = Aspect_TOL_DASH;
676                                 aCallTOL : TypeOfLine           from Aspect   = Aspect_TOL_DOT);
677     
678     ComputeProjVertexPresentation(aPres    : mutable Presentation from Prs3d; 
679                                   aDrawer  : mutable Drawer       from AIS;        
680                                   aVertex  : Vertex               from TopoDS;
681                                   ProjPoint: Pnt                  from gp;
682                                   aColor   : NameOfColor          from Quantity = Quantity_NOC_PURPLE;
683                                   aWidth   : Real                 from Standard = 2;
684                                   aProjTOM : TypeOfMarker         from Aspect   = Aspect_TOM_PLUS;
685                                   aCallTOL : TypeOfLine           from Aspect   = Aspect_TOL_DOT);
686
687 end AIS;