0026304: Visualization - wrong calculation of point in SelectMgr_RectangularFrustum...
[occt.git] / dox / technical_overview / technical_overview.md
CommitLineData
72b7576f 1Technical Overview {#technical_overview}
2========================================
3
e5bd0d98 4@tableofcontents
5
2683e647 6Open CASCADE Technology (OCCT) is an object-oriented C++ class library designed for rapid production of sophisticated domain-specific CAD/CAM/CAE applications.
72b7576f 7
013a8549 8A typical application developed using OCCT deals with two or three-dimensional (2D or 3D) geometric modeling
72b7576f 9in general-purpose or specialized Computer Aided Design (CAD) systems, manufacturing
2683e647 10or analysis applications, simulation applications, or even illustration tools.
72b7576f 11
013a8549 12@figure{/technical_overview/images/technical_overview_over.png}
13
2683e647 14OCCT library is designed to be truly modular and extensible, providing C++ classes for:
15 * Basic data structures (geometric modeling, visualization, interactive selection and application specific services);
16 * Modeling algorithms;
17 * Working with mesh (faceted) data;
18 * Data interoperability with neutral formats (IGES, STEP);
72b7576f 19
2683e647 20The C++ classes and other types are grouped into packages. Packages are organized into toolkits (libraries), to which you can link your application. Finally, toolkits are grouped into seven modules.
72b7576f 21
2683e647 22This modular structure is illustrated in the diagram below.
72b7576f 23
2683e647 24@figure{/technical_overview/images/technical_overview_schema.png}
72b7576f 25
2683e647 26* @ref OCCT_TOVW_SECTION_2 "Foundation Classes" module underlies all other OCCT classes;
27* @ref OCCT_TOVW_SECTION_3 "Modeling Data" module supplies data structures to represent 2D and 3D geometric primitives and their compositions into CAD models;
28* @ref OCCT_TOVW_SECTION_4 "Modeling Algorithms" module contains a vast range of geometrical and topological algorithms;
29* @ref OCCT_TOVW_SECTION_4a "Mesh" module implements tessellated representations of objects;
30* @ref OCCT_TOVW_SECTION_5 "Visualization" module provides complex mechanisms for graphical data representation;
31* @ref OCCT_TOVW_SECTION_6 "Data Exchange" module inter-operates with popular data formats and relies on @ref OCCT_TOVW_SECTION_6a "Shape Healing" to improve compatibility between CAD software of different vendors;
32* @ref OCCT_TOVW_SECTION_7 "Application Framework" module offers ready-to-use solutions for handling application-specific data (user attributes) and commonly used functionality (save/restore, undo/redo, copy/paste, tracking CAD modifications, etc).
72b7576f 33
2683e647 34In addition, @ref OCCT_TOVW_SECTION_8 "Open CASCADE Test Harness", also called Draw, provides an entry point to the library and can be used as a testing tool for its modules.
72b7576f 35
2683e647 36@section OCCT_TOVW_SECTION_2 Foundation Classes
72b7576f 37
2683e647 38**Foundation Classes** module contains data structures and services used by higher-level Open CASCADE Technology classes:
39
40 * Primitive types, such as Boolean, Character, Integer or Real;
41 * String classes that handle ASCII and Unicode strings;
42 * Collection classes that handle statically or dynamically sized aggregates of data, such as arrays, lists, queues, sets and hash tables (data maps).
43 * Classes providing commonly used numerical algorithms and basic linear algebra calculations (addition, multiplication, transposition of vectors and matrices, solving linear systems etc).
44 * Fundamental types representing physical quantities and supporting date and time information;
45 * Primitive geometry types providing implementation of basic geometric and algebraic entities that define and manipulate elementary data structures.
46 * Exception classes that describe situations, when the normal execution of program is abandoned;
47
48This module also provides a variety of general-purpose services, such as:
49 * Safe handling of dynamically created objects, ensuring automatic deletion of unreferenced objects (smart pointers);
50 * Configurable optimized memory manager increasing the performance of applications that intensively use dynamically created objects;
51 * Extended run-time type information (RTTI) mechanism maintaining a full type hierarchy and providing means to iterate over it;
52 * Encapsulation of C++ streams;
53 * Automated management of heap memory by means of specific allocators;
54 * Basic interpreter of expressions facilitating the creation of customized scripting tools, generic definition of expressions, etc.;
55 * Tools for dealing with configuration resource files and customizable message files facilitating multi-language support in applications;
56 * Progress indication and user break interfaces, giving a possibility even for low-level algorithms to communicate with the user in a universal and convenient way;
57 * and many others...
58
59Please, see the details in @ref occt_user_guides__foundation_classes "Foundation Classes User's Guide"
72b7576f 60
dd21889e 61See also: our web site at <a href="http://www.opencascade.org/support/training/">E-learning and Training</a>.
72b7576f 62
2683e647 63@section OCCT_TOVW_SECTION_3 Modeling Data
72b7576f 64
2683e647 65**Modeling Data** supplies data structures to implement boundary representation (BRep) of objects in 3D. In BRep the shape is represented as an aggregation of geometry within topology. The geometry is understood as a mathematical description of a shape, e.g. as curves and surfaces (simple or canonical, Bezier, NURBS, etc). The topology is a data structure binding geometrical objects together.
66
67Geometry types and utilities provide geometric data structures and services for:
68 * Description of points, vectors, curves and surfaces:
69 * their positioning in 3D space using axis or coordinate systems, and
70 * their geometric transformation, by applying translations, rotations, symmetries, scaling transformations and combinations thereof.
71 * Creation of parametric curves and surfaces by interpolation and approximation;
72 * Algorithms of direct construction;
73 * Conversion of curves and surfaces to NURBS form;
74 * Computation of point coordinates on 2D and 3D curves;
75 * Calculation of extrema between geometric objects.
76
77Topology defines relationships between simple geometric entities. A shape, which is a basic topological entity, can be divided into components (sub-shapes):
78 * Vertex – a zero-dimensional shape corresponding to a point;
79 * Edge - a shape corresponding to a curve and bounded by a vertex at each extremity;
80 * Wire - a sequence of edges connected by their vertices;
81 * Face - a part of a plane (in 2D) or a surface (in 3D) bounded by wires;
82 * Shell - a collection of faces connected by edges of their wire boundaries;
83 * Solid - a finite closed part of 3D space bounded by shells;
84 * Compound solid - a collection of solids connected by faces of their shell boundaries.
72b7576f 85
2683e647 86Complex shapes can be defined as assemblies of simpler entities.
72b7576f 87
2683e647 88Please, see the details in @ref occt_user_guides__modeling_data "Modeling Data User's Guide"
72b7576f 89
2683e647 903D geometric models can be stored in OCCT native BREP format.
91See @ref occt_user_guides__brep_wp "BREP Format Description White Paper" for details on the format.
72b7576f 92
dd21889e 93See also: our web site at <a href="http://www.opencascade.org/support/training/">E-learning and Training</a>.
72b7576f 94
2683e647 95@section OCCT_TOVW_SECTION_4 Modeling Algorithms
013a8549 96
2683e647 97**Modeling Algorithms** module groups a wide range of topological and geometric algorithms used in geometric modeling. Basically, there are two groups of algorithms in Open CASCADE Technology:
98* High-level modeling routines used in the real design;
99* Low-level mathematical support functions used as a groundwork for the modeling API;
013a8549 100
2683e647 101* Low-level geometric tools provide the algorithms, which:
102 * Calculate the intersection of two curves, surfaces, or a curve and a surface;
103 * Project points onto 2D and 3D curves, points onto surfaces and 3D curves onto surfaces;
104 * Construct lines and circles from constraints;
105 * Construct free-form curves and surfaces from constraints (interpolation, approximation, skinning, gap filling, etc);
106
107* Low-level topological tools provide the algorithms, which:
108 * Tessellate shapes;
109 * Check correct definition of shapes;
110 * Determine the local and global properties of shapes (derivatives, mass-inertia properties, etc);
111 * Perform affine transformations;
112 * Find planes in which edges are located;
113 * Convert shapes to NURBS geometry;
114 * Sew connected topologies (shells and wires) from separate topological elements (faces and edges).
115
116Top-level API provides the following functionality:
117
118* Construction of Primitives:
119 * Boxes;
120 * Prisms;
121 * Cylinders;
122 * Cones;
123 * Spheres;
124 * Toruses.
125* Kinematic Modeling:
126 * Prisms - linear sweeps;
127 * Revolutions - rotational sweeps;
128 * Pipes - general-form sweeps;
129 * Lofting.
130
131@figure{/technical_overview/images/0001.png "Shapes containing pipes with variable radius produced by sweeping"}
132
133* Boolean Operations, which allow creating new shapes from the combinations of source shapes. For two shapes *S1* and *S2*:
134 * *Common* contains all points that are in *S1* and *S2*;
135 * *Fuse* contains all points that are in *S1* or *S2*;
136 * *Cut* contains all points in that are in *S1* and not in *S2*
137
138See @ref occt_user_guides__boolean_operations "Boolean Operations" User's Guide for detailed documentation.
013a8549 139
2683e647 140* Algorithms for local modifications such as:
141 * Hollowing;
142 * Shelling;
143 * Creation of tapered shapes using draft angles;
144 * Algorithms to make fillets and chamfers on shape edges, including those with variable radius (chord).
013a8549 145
2683e647 146* Algorithms for creation of mechanical features, i.e. depressions, protrusions, ribs and grooves or slots along planar or revolution surfaces.
013a8549 147
2683e647 148@figure{/technical_overview/images/0004.png}
013a8549 149
013a8549 150
2683e647 151
152Please, see the details in @ref occt_user_guides__modeling_algos "Modeling Algorithms User's Guide".
013a8549 153
2683e647 154See also: our web site at <a href="http://www.opencascade.org/support/training/">E-learning and Training</a>.
013a8549 155
2683e647 156@section OCCT_TOVW_SECTION_4a Mesh
013a8549 157
2683e647 158**Mesh** module provides the functionality to work with tessellated representations of objects in form of triangular facets. This module contains:
159- data structures to store surface mesh data associated to shapes and basic algorithms to handle them;
160- data structures and algorithms to a build triangular surface mesh from *BRep* objects (shapes);
161- tools for displaying meshes with associated pre- and post-processor data (scalars or vectors).
013a8549 162
2683e647 163Open CASCADE Technology includes two mesh converters:
164- VRML converter translates Open CASCADE shapes to VRML 1.0 files (Virtual Reality Modeling Language). Two representation modes are possible: shaded, which presents shapes as sets of triangles computed by the mesh algorithm, or wireframe, which presents shapes as sets of curves.
165- STL converter translates Open CASCADE shapes to STL files. STL (STtereoLithography) format is widely used for rapid prototyping (3D printing).
013a8549 166
2683e647 167Open CASCADE SAS also offers Advanced Mesh Products:
168- <a href="http://www.opencascade.org/support/products/omf">Open CASCADE Mesh Framework (OMF)</a>
169- <a href="http://www.opencascade.org/support/products/emesh">Express Mesh</a>
72b7576f 170
2683e647 171@figure{/technical_overview/images/0003.png}
72b7576f 172
2683e647 173@section OCCT_TOVW_SECTION_5 Visualization
72b7576f 174
2683e647 175**Visualization** module provides ready-to-use algorithms to create graphic presentations from various objects: shapes, meshes, etc.
72b7576f 176
2683e647 177In Open CASCADE Technology visualization is based on the separation of CAD data and its graphical presentation. The presentations can be customized to take the specificity of your application into account.
72b7576f 178
2683e647 179The module also supports a fast and powerful interactive selection mechanism.
72b7576f 180
2683e647 181The view facilities provided by OCCT range from low-level tools working with basic geometry and topology (such as NURBS visualization with control points and nodes, rendering of isolines to estimate speed and quality of parameterization, or rendering of a parametric profile of edges) to high-level tools for real time quality rendering of models using ray tracing: shades, reflections, transparency, anti-aliasing, etc.
72b7576f 182
2683e647 183Here are just a few examples:
72b7576f 184
2683e647 185* Camera-driven view projection and orientation. It is possible to choose between perspective, orthographic and stereographic projection.
dd21889e 186
2683e647 187* Real-time ray tracing technique using recursive Whitted's algorithm and Bounded Volume Hierarchy effective optimization structure.
72b7576f 188
2683e647 189@figure{/technical_overview/images/0002.png, "Real time visualization by ray tracing method"}
72b7576f 190
2683e647 191* Support of GLSL shaders. The shader management is fully automatic, like with any other OpenGL resource.
72b7576f 192
2683e647 193@figure{/technical_overview/images/0013.png, "Fragment shader implementing custom clipping surface"}
72b7576f 194
2683e647 195* Support of standard and custom materials, defined by transparency, diffuse, ambient and specular reflection and refraction index. The latter allows implementing transparent materials, such as glass, diamond and water.
72b7576f 196
2683e647 197@figure{/technical_overview/images/0012.png, "Simulation of a glass cover"}
72b7576f 198
2683e647 199* Optimization of rendering performance through the algorithms of:
200 * View frustum culling, which skips the presentation outside camera at the rendering stage and
201 * Back face culling, which reduces the rendered number of triangles and eliminates artifacts at shape boundaries.
202
203* Definition of clipping planes through the plane equation coefficients. Ability to define visual attributes for cross-section at the level or individual clipping planes. In the image below different parts of the rocket are clipped with different planes and hatched.
72b7576f 204
2683e647 205* Possibility to flexibly adjust appearance of dimensions in a 3D view. The 3D text object represents a given text string as a true 3D object in the model space.
72b7576f 206
2683e647 207@figure{/technical_overview/images/0008.png, "Display of shape cross-section and dimensions"}
013a8549 208
2683e647 209For more details see @ref occt_user_guides__visualization "Visualization User's Guide".
013a8549 210
2683e647 211The visualization of OCCT topological shapes by means of VTK library provided by VIS component is described in a separate @ref occt_user_guides__vis "VTK Integration Services" User's Guide.
013a8549 212
2683e647 213Open CASCADE Technology also supports voxel representation providing basic data containers and visualization of voxels as colored or grayscale bricks.
013a8549 214
2683e647 215See @ref occt_user_guides__voxels_wp "Voxels User's Guide" for more information.
013a8549 216
2683e647 217See also: our web site at <a href="http://www.opencascade.org/support/training/">E-learning and Training</a>.
013a8549 218
013a8549 219
2683e647 220@section OCCT_TOVW_SECTION_6 Data Exchange
013a8549 221
2683e647 222**Data Exchange** allows developing OCCT-based applications that can interact with other CAD systems by writing and reading CAD models to and from external data. The exchanges run smoothly regardless of the quality of external data or requirements to its internal representation, for example, to the data types, accepted geometric inaccuracies, etc.
013a8549 223
2683e647 224@figure{/technical_overview/images/0014.png,"Shape imported from STEP"}
013a8549 225
2683e647 226**Data Exchange** is organized in a modular way as a set of interfaces that comply with various CAD formats: IGES, STEP, STL, VRML, etc. The interfaces allow software based on OCCT to exchange data with various CAD/PDM software packages, maintaining a good level of interoperability.
013a8549 227
2683e647 228* **Standardized Data Exchange** interfaces allow querying and examining the input file, converting its contents to a CAD model and running validity checks on a fully translated shape. The following formats are currently supported.
229 * @ref occt_user_guides__step "STEP" (AP203 : Mechanical Design, this covers General 3D CAD; AP214: Automotive Design)
230 * @ref occt_user_guides__iges "IGES" (up to 5.3)
231 * VRML and STL meshes.
232* @ref occt_user_guides__xde "Extended data exchange" (XDE) allows translating additional attributes attached to geometric data (colors, layers, names, materials etc).
233* <a href="http://www.opencascade.org/support/products/dataex/">Advanced Data Exchange Components</a> are available in addition to standard Data Exchange interfaces to support interoperability and data adaptation (also using @ref OCCT_TOVW_SECTION_6a "Shape Healing") with CAD software using the following proprietary formats:
234 * <a href="http://www.opencascade.org/support/products/dataex/acis/">ACIS SAT</a>
235 * <a href="http://www.opencascade.org/support/products/dataex/parasolid/">Parasolid</a>
236 * <a href="http://www.opencascade.org/support/products/dataex/dxf/">DXF</a>
013a8549 237
2683e647 238These components are based on the same architecture as interfaces with STEP and IGES.
013a8549 239
2683e647 240@section OCCT_TOVW_SECTION_6a Shape Healing
013a8549 241
2683e647 242**Shape Healing** library provides algorithms to correct and adapt the geometry and topology of shapes imported to OCCT from other CAD systems.
013a8549 243
2683e647 244Shape Healing algorithms include, but are not limited to, the following operations:
245* analyze shape characteristics and, in particular, identify the shapes that do not comply with OCCT geometry and topology validity rules by analyzing geometrical objects and topology:
246 - check edge and wire consistency;
247 - check edge order in a wire;
248 - check the orientation of face boundaries;
249 - analyze shape tolerances;
250 - identify closed and open wires in a boundary.
251* fix incorrect or incomplete shapes:
252 - provide consistency between a 3D curve and its corresponding parametric curve;
253 - repair defective wires;
254 - fit the shapes to a user-defined tolerance value;
255 - fill gaps between patches and edges.
256* upgrade and change shape characteristics:
257 - reduce curve and surface degree;
258 - split shapes to obtain C1 continuity;
259 - convert any types of curves or surfaces to Bezier or B-Spline curves or surfaces and back;
260 - split closed surfaces and revolution surfaces.
013a8549 261
2683e647 262Each sub-domain of Shape Healing has its own scope of functionality:
013a8549 263
2683e647 264| Sub-domain | Description | Impact on the shape |
265| :--- | :---- | :---- |
266| Analysis | Explores shape properties, computes shape features, detects violation of OCCT requirements. | The shape itself is not modified. |
267| Fixing | Fixes the shape to meet the OCCT requirements. | The shape may change its original form: modification, removal or creation of sub-shapes, etc.) |
268| Upgrade | Improves the shape to fit some particular algorithms. | The shape is replaced with a new one, but geometrically they are the same. |
269| Customization | Modifies the shape representation to fit specific needs. | The shape is not modified, only the mathematical form of its internal representation is changed. |
270| Processing | Mechanism of shape modification via a user-editable resource file. | |
013a8549 271
2683e647 272For more details refer to @ref occt_user_guides__shape_healing "Shape Healing User's guide".
013a8549 273
2683e647 274See also: our web site at <a href="http://www.opencascade.org/support/training/">E-learning and Training</a>.
72b7576f 275
72b7576f 276
277@section OCCT_TOVW_SECTION_7 Application Framework
278
2683e647 279**Open CASCADE Application Framework** (OCAF) handles Application Data basing on the Application/Document paradigm. It uses an associativity engine to simplify the development of a CAD application thanks to the following ready-to-use features and services:
013a8549 280
2683e647 281* Data attributes managing the application data, which can be organized according to the development needs;
282* Data storage and persistence (open/save);
283* Possibility to modify and recompute attributes in documents. With OCAF it is easy to represent the history of modification and parametric dependencies within your model;
013a8549 284* Possibility to manage multiple documents;
2683e647 285* Predefined attributes common to CAD/CAM/CAE applications (e.g. to store dimensions);
286* Undo-Redo and Copy-Paste functions.
013a8549 287
2683e647 288Since OCAF handles the application structure, the only development task is the creation of application-specific data and GUIs.
013a8549 289
2683e647 290OCAF differs from any other CAD framework in the organization of application data, as there the data structures are based on reference keys rather than on shapes. In a model, such attributes as shape data, color and material are attached to an invariant structure, which is deeper than the shapes. A shape object becomes the value of *Shape* attribute, in the same way as an integer number is the value of *Integer* attribute and a string is the value of *Name* attribute.
013a8549 291
2683e647 292OCAF organizes and embeds these attributes in a document. OCAF documents, in their turn, are managed by an OCAF application.
013a8549 293
294For more details see @ref occt_user_guides__ocaf "OCAF User's Guide" and the OCAF white papers:
295* @ref occt_user_guides__ocaf_wp "Application Framework"
296* @ref occt_user_guides__ocaf_tree_wp "Distribution of Data through OCAF Tree"
297* @ref occt_user_guides__ocaf_functionmechanism_wp "Application Framework Function Mechanism"
72b7576f 298
2683e647 299See also: <a href="http://www.opencascade.org/support/training/">E-learning and Training</a>.
72b7576f 300
72b7576f 301
2683e647 302@section OCCT_TOVW_SECTION_8 Draw Test Harness
72b7576f 303
2683e647 304**Test Harness** or **Draw** is a convenient testing tool for OCCT libraries. It can be used to test and prototype various algorithms before building an entire application. It includes:
013a8549 305- A command interpreter based on the TCL language;
2683e647 306- A number of 2D and 3D viewers;
013a8549 307- A set of predefined commands.
308
2683e647 309The viewers support operations such as zoom, pan, rotation and full-screen views.
310
311The basic commands provide general-purpose services such as:
013a8549 312- Getting help;
313- Evaluating a script from a file;
314- Capturing commands in a file;
315- Managing views;
316- Displaying objects.
317
2683e647 318In addition, **Test Harness** provides commands to create and manipulate curves and surfaces (geometry) and shapes, access visualization services, work with OCAF documents, perform data exchange, etc.
013a8549 319
2683e647 320You can add custom commands to test or demonstrate any new functionalities, which you develop.
013a8549 321
322For more details see @ref occt_user_guides__test_harness "Draw Test Harness Manual".