42cf5bc1 |
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 |
5 | // |
6 | // This file is part of Open CASCADE Technology software library. |
7 | // |
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. |
13 | // |
14 | // Alternatively, this file may be used under the terms of Open CASCADE |
15 | // commercial license or contractual agreement. |
16 | |
17 | #ifndef _AIS_HeaderFile |
18 | #define _AIS_HeaderFile |
19 | |
7dd7c146 |
20 | #include <Prs3d_Presentation.hxx> |
42cf5bc1 |
21 | #include <Standard.hxx> |
22 | #include <Standard_DefineAlloc.hxx> |
42cf5bc1 |
23 | |
8c088c52 |
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: |
42cf5bc1 |
32 | //! - the Datum |
33 | //! - the Relation |
34 | //! - the Object |
35 | //! - None. |
8c088c52 |
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. |
42cf5bc1 |
62 | //! The standard filters supplied in AIS include: |
8c088c52 |
63 | //! - AIS_AttributeFilter |
64 | //! - AIS_SignatureFilter |
65 | //! - AIS_TypeFilter. |
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. |
42cf5bc1 |
70 | class AIS |
71 | { |
72 | public: |
73 | |
74 | DEFINE_STANDARD_ALLOC |
75 | |
42cf5bc1 |
76 | }; |
77 | |
42cf5bc1 |
78 | #endif // _AIS_HeaderFile |