1 // Created on: 1996-12-11
2 // Created by: Robert COUBLANC
3 // Copyright (c) 1996-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
17 #ifndef _AIS_HeaderFile
18 #define _AIS_HeaderFile
20 #include <Prs3d_Presentation.hxx>
21 #include <Standard.hxx>
22 #include <Standard_DefineAlloc.hxx>
24 //! Application Interactive Services provide the means to create links between an application GUI viewer and
25 //! the packages which are used to manage selection and presentation.
26 //! The tools AIS defined in order to do this include different sorts of entities:
27 //! both the selectable viewable objects themselves and the context and attribute managers to define their selection and display.
28 //! To orient the user as he works in a modeling environment, views and selections must be comprehensible.
29 //! There must be several different sorts of selectable and viewable object defined.
30 //! These must also be interactive, that is, connecting graphic representation and the underlying reference geometry.
31 //! These entities are called Interactive Objects, and are divided into four types:
36 //! The Datum groups together the construction elements such as lines, circles, points, trihedra, plane trihedra, planes and axes.
37 //! The Relation is made up of constraints on one or more interactive shapes and the corresponding reference geometry.
38 //! For example, you might want to constrain two edges in a parallel relation.
39 //! This contraint is considered as an object in its own right, and is shown as a sensitive primitive.
40 //! This takes the graphic form of a perpendicular arrow marked with the || symbol and lying between the two edges.
41 //! The Object type includes topological shapes, and connections between shapes.
42 //! None, in order not to eliminate the object, tells the application to look further until it finds an object definition in its generation which is accepted.
43 //! Inside these categories, you have the possibility of an additional characterization by means of a signature.
44 //! The signature provides an index to the further characterization.
45 //! By default, the Interactive Object has a None type and a signature of 0 (equivalent to None.)
46 //! If you want to give a particular type and signature to your interactive object, you must redefine the two virtual methods: Type and Signature.
47 //! In the C++ inheritance structure of the package, each class representing a specific Interactive Object inherits AIS_InteractiveObject.
48 //! Among these inheriting classes, AIS_Relation functions as the abstract mother class for tinheriting classes defining display of specific relational constraints and types of dimension.
49 //! Some of these include:
50 //! - display of constraints based on relations of symmetry, tangency, parallelism and concentricity
51 //! - display of dimensions for angles, offsets, diameters, radii and chamfers.
52 //! No viewer can show everything at once with any coherence or clarity.
53 //! Views must be managed carefully both sequentially and at any given instant.
54 //! Another function of the view is that of a context to carry out design in.
55 //! The design changes are applied to the objects in the view and then extended to the underlying reference geometry by a solver.
56 //! To make sense of this complicated visual data, several display and selection tools are required.
57 //! To facilitate management, each object and each construction element has a selection priority.
58 //! There are also means to modify the default priority.
59 //! To define an environment of dynamic detection, you can use standard filter classes or create your own.
60 //! A filter questions the owner of the sensitive primitive to determine if it has the the desired qualities.
61 //! If it answers positively, it is kept. If not, it is rejected.
62 //! The standard filters supplied in AIS include:
63 //! - AIS_AttributeFilter
64 //! - AIS_SignatureFilter
66 //! A set of functions allows you to choose the interactive objects which you want to act on, the selection modes which you want to activate.
67 //! An interactive object can have a certain number of graphic attributes which are specific to it, such as visualization mode, color, and material.
68 //! By the same token, the interactive context has a set of graphic attributes, the Drawer which is valid by default for the objects it controls.
69 //! When an interactive object is visualized, the required graphic attributes are first taken from the object's own Drawer if one exists, or from the context drawer for the others.
78 #endif // _AIS_HeaderFile