85 lines
5.1 KiB
C++
85 lines
5.1 KiB
C++
// Created on: 1996-12-11
|
|
// Created by: Robert COUBLANC
|
|
// Copyright (c) 1996-1999 Matra Datavision
|
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
|
//
|
|
// This file is part of Open CASCADE Technology software library.
|
|
//
|
|
// This library is free software; you can redistribute it and/or modify it under
|
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
|
// by the Free Software Foundation, with special exception defined in the file
|
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
|
// distribution for complete text of the license and disclaimer of any warranty.
|
|
//
|
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
|
// commercial license or contractual agreement.
|
|
|
|
#ifndef _AIS_HeaderFile
|
|
#define _AIS_HeaderFile
|
|
|
|
#include "Prs3d_Presentation.hxx"
|
|
#include "Standard.hxx"
|
|
#include "Standard_DefineAlloc.hxx"
|
|
|
|
//! Application Interactive Services provide the means to create links between an application GUI
|
|
//! viewer and the packages which are used to manage selection and presentation. The tools AIS
|
|
//! defined in order to do this include different sorts of entities: both the selectable viewable
|
|
//! objects themselves and the context and attribute managers to define their selection and display.
|
|
//! To orient the user as he works in a modeling environment, views and selections must be
|
|
//! comprehensible. There must be several different sorts of selectable and viewable object defined.
|
|
//! These must also be interactive, that is, connecting graphic representation and the underlying
|
|
//! reference geometry. These entities are called Interactive Objects, and are divided into four
|
|
//! types:
|
|
//! - the Datum
|
|
//! - the Relation
|
|
//! - the Object
|
|
//! - None.
|
|
//! The Datum groups together the construction elements such as lines, circles, points, trihedra,
|
|
//! plane trihedra, planes and axes. The Relation is made up of constraints on one or more
|
|
//! interactive shapes and the corresponding reference geometry. For example, you might want to
|
|
//! constrain two edges in a parallel relation. This constraint is considered as an object in its
|
|
//! own right, and is shown as a sensitive primitive. This takes the graphic form of a perpendicular
|
|
//! arrow marked with the || symbol and lying between the two edges. The Object type includes
|
|
//! topological shapes, and connections between shapes. 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. Inside these categories, you have the possibility of an additional
|
|
//! characterization by means of a signature. The signature provides an index to the further
|
|
//! characterization. By default, the Interactive Object has a None type and a signature of 0
|
|
//! (equivalent to None.) If you want to give a particular type and signature to your interactive
|
|
//! object, you must redefine the two virtual methods: Type and Signature. In the C++ inheritance
|
|
//! structure of the package, each class representing a specific Interactive Object inherits
|
|
//! AIS_InteractiveObject. 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. Some of these include:
|
|
//! - display of constraints based on relations of symmetry, tangency, parallelism and
|
|
//! concentricity
|
|
//! - display of dimensions for angles, offsets, diameters, radii and chamfers.
|
|
//! No viewer can show everything at once with any coherence or clarity.
|
|
//! Views must be managed carefully both sequentially and at any given instant.
|
|
//! Another function of the view is that of a context to carry out design in.
|
|
//! The design changes are applied to the objects in the view and then extended to the underlying
|
|
//! reference geometry by a solver. To make sense of this complicated visual data, several display
|
|
//! and selection tools are required. To facilitate management, each object and each construction
|
|
//! element has a selection priority. There are also means to modify the default priority. To define
|
|
//! an environment of dynamic detection, you can use standard filter classes or create your own. A
|
|
//! filter questions the owner of the sensitive primitive to determine if it has the desired
|
|
//! qualities. If it answers positively, it is kept. If not, it is rejected. The standard filters
|
|
//! supplied in AIS include:
|
|
//! - AIS_AttributeFilter
|
|
//! - AIS_SignatureFilter
|
|
//! - AIS_TypeFilter.
|
|
//! 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. An interactive object can have a certain number of
|
|
//! graphic attributes which are specific to it, such as visualization mode, color, and material. 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. 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.
|
|
class AIS
|
|
{
|
|
public:
|
|
DEFINE_STANDARD_ALLOC
|
|
};
|
|
|
|
#endif // _AIS_HeaderFile
|