72b7576f |
1 | Technical Overview {#technical_overview} |
2 | ======================================== |
3 | |
e5bd0d98 |
4 | @tableofcontents |
5 | |
2683e647 |
6 | Open 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 |
8 | A typical application developed using OCCT deals with two or three-dimensional (2D or 3D) geometric modeling |
72b7576f |
9 | in general-purpose or specialized Computer Aided Design (CAD) systems, manufacturing |
2683e647 |
10 | or analysis applications, simulation applications, or even illustration tools. |
72b7576f |
11 | |
013a8549 |
12 | @figure{/technical_overview/images/technical_overview_over.png} |
13 | |
2683e647 |
14 | OCCT 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 |
20 | The 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 |
22 | This 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; |
8b742dc1 |
29 | * @ref OCCT_TOVW_SECTION_4a "Mesh" toolkit from "Modeling Algorithms" module implements tessellated representations of objects; |
2683e647 |
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 |
34 | In 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; |
8b742dc1 |
41 | * String classes that handle Unicode strings; |
2683e647 |
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). |
8b742dc1 |
44 | * Fundamental types like color, date and time information; |
2683e647 |
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 | |
48 | This 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); |
8b742dc1 |
50 | * Standard and specialized memory allocators; |
2683e647 |
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; |
2683e647 |
53 | * Basic interpreter of expressions facilitating the creation of customized scripting tools, generic definition of expressions, etc.; |
8b742dc1 |
54 | * Tools for dealing with configuration resource files and customizable message files facilitating multi-language support in applications; |
2683e647 |
55 | * 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; |
56 | * and many others... |
57 | |
07f2b741 |
58 | See the details in @ref occt_user_guides__foundation_classes "Foundation Classes User's Guide" |
72b7576f |
59 | |
7863dabb |
60 | See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings. |
72b7576f |
61 | |
2683e647 |
62 | @section OCCT_TOVW_SECTION_3 Modeling Data |
72b7576f |
63 | |
8b742dc1 |
64 | **Modeling Data** supplies data structures to implement boundary representation (BRep) of objects in 3D. |
65 | In BRep the shape is represented as an aggregation of geometry within topology. |
66 | The geometry is understood as a mathematical description of a shape, e.g. as curves and surfaces (simple or canonical, Bezier, NURBS, etc). |
67 | The topology is a data structure binding geometrical objects together. |
2683e647 |
68 | |
69 | Geometry types and utilities provide geometric data structures and services for: |
70 | * Description of points, vectors, curves and surfaces: |
8b742dc1 |
71 | * their positioning in 3D space using axis or coordinate systems, and |
72 | * their geometric transformation, by applying translations, rotations, symmetries, scaling transformations and combinations thereof. |
2683e647 |
73 | * Creation of parametric curves and surfaces by interpolation and approximation; |
74 | * Algorithms of direct construction; |
75 | * Conversion of curves and surfaces to NURBS form; |
76 | * Computation of point coordinates on 2D and 3D curves; |
77 | * Calculation of extrema between geometric objects. |
78 | |
8b742dc1 |
79 | Topology defines relationships between simple geometric entities. |
80 | A shape, which is a basic topological entity, can be divided into components (sub-shapes): |
3f812249 |
81 | * Vertex -- a zero-dimensional shape corresponding to a point; |
82 | * Edge -- a shape corresponding to a curve and bounded by a vertex at each extremity; |
83 | * Wire -- a sequence of edges connected by their vertices; |
84 | * Face -- a part of a plane (in 2D) or a surface (in 3D) bounded by wires; |
85 | * Shell -- a collection of faces connected by edges of their wire boundaries; |
86 | * Solid -- a finite closed part of 3D space bounded by shells; |
8b742dc1 |
87 | * Composite solid -- a collection of solids connected by faces of their shell boundaries; |
88 | * Compound -- a collection of shapes of arbitrary type. |
72b7576f |
89 | |
8b742dc1 |
90 | Complex shapes can be defined as assemblies (compounds) of simpler entities. |
72b7576f |
91 | |
07f2b741 |
92 | See the details in @ref occt_user_guides__modeling_data "Modeling Data User's Guide" |
72b7576f |
93 | |
2683e647 |
94 | 3D geometric models can be stored in OCCT native BREP format. |
95 | See @ref occt_user_guides__brep_wp "BREP Format Description White Paper" for details on the format. |
72b7576f |
96 | |
7863dabb |
97 | See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings. |
72b7576f |
98 | |
2683e647 |
99 | @section OCCT_TOVW_SECTION_4 Modeling Algorithms |
013a8549 |
100 | |
8b742dc1 |
101 | **Modeling Algorithms** module groups a wide range of topological and geometric algorithms used in geometric modeling. |
102 | Basically, there are two groups of algorithms in Open CASCADE Technology: |
103 | * High-level modeling routines used in the real design; |
104 | * Low-level mathematical support functions used as a groundwork for the modeling API. |
013a8549 |
105 | |
8b742dc1 |
106 | Low-level *geometric tools* provide the algorithms, which: |
107 | * Calculate the intersection of two curves, surfaces, or a curve and a surface; |
108 | * Project points onto 2D and 3D curves, points onto surfaces and 3D curves onto surfaces; |
109 | * Construct lines and circles from constraints; |
110 | * Construct free-form curves and surfaces from constraints (interpolation, approximation, skinning, gap filling, etc). |
2683e647 |
111 | |
8b742dc1 |
112 | Low-level *topological tools* provide the algorithms, which: |
113 | * Tessellate shapes; |
114 | * Check correct definition of shapes; |
115 | * Determine the local and global properties of shapes (derivatives, mass-inertia properties, etc); |
116 | * Perform affine transformations; |
117 | * Find planes in which edges are located; |
118 | * Convert shapes to NURBS geometry; |
119 | * Sew connected topologies (shells and wires) from separate topological elements (faces and edges). |
2683e647 |
120 | |
121 | Top-level API provides the following functionality: |
8b742dc1 |
122 | * Construction of Primitives: |
123 | * Boxes; |
124 | * Prisms; |
125 | * Cylinders; |
126 | * Cones; |
127 | * Spheres; |
128 | * Toruses. |
129 | * Kinematic Modeling: |
130 | * Prisms -- linear sweeps; |
131 | * Revolutions -- rotational sweeps; |
132 | * Pipes -- general-form sweeps; |
133 | * Lofting. |
2683e647 |
134 | |
7e3451c7 |
135 | @figure{/technical_overview/images/0001.png "Shapes containing pipes with variable radius produced by sweeping"} |
2683e647 |
136 | |
8b742dc1 |
137 | * Boolean Operations, which allow creating new shapes from the combinations of source shapes. For two shapes *S1* and *S2*: |
138 | * *Common* contains all points that are in *S1* and *S2*; |
139 | * *Fuse* contains all points that are in *S1* or *S2*; |
140 | * *Cut* contains all points in that are in *S1* and not in *S2*. |
141 | |
2683e647 |
142 | See @ref occt_user_guides__boolean_operations "Boolean Operations" User's Guide for detailed documentation. |
013a8549 |
143 | |
8b742dc1 |
144 | * Algorithms for local modifications such as: |
145 | * Hollowing; |
146 | * Shelling; |
147 | * Creation of tapered shapes using draft angles; |
148 | * Algorithms to make fillets and chamfers on shape edges, including those with variable radius (chord). |
013a8549 |
149 | |
8b742dc1 |
150 | * Algorithms for creation of mechanical features, i.e. depressions, protrusions, ribs and grooves or slots along planar or revolution surfaces. |
013a8549 |
151 | |
7e3451c7 |
152 | @figure{/technical_overview/images/0004.png} |
2683e647 |
153 | |
07f2b741 |
154 | See the details in @ref occt_user_guides__modeling_algos "Modeling Algorithms User's Guide". |
013a8549 |
155 | |
7863dabb |
156 | See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings. |
013a8549 |
157 | |
8b742dc1 |
158 | @subsection OCCT_TOVW_SECTION_4a Mesh |
013a8549 |
159 | |
8b742dc1 |
160 | **Mesh** toolkit provides the functionality to work with tessellated representations of objects in form of triangular facets. This toolkit contains: |
2683e647 |
161 | - data structures to store surface mesh data associated to shapes and basic algorithms to handle them; |
8b742dc1 |
162 | - data structures and algorithms to build triangular surface mesh from *BRep* objects (shapes); |
2683e647 |
163 | - tools for displaying meshes with associated pre- and post-processor data (scalars or vectors). |
013a8549 |
164 | |
2683e647 |
165 | Open CASCADE SAS also offers Advanced Mesh Products: |
7863dabb |
166 | - <a href="https://www.opencascade.com/content/mesh-framework">Open CASCADE Mesh Framework (OMF)</a> |
167 | - <a href="https://www.opencascade.com/content/express-mesh">Express Mesh</a> |
72b7576f |
168 | |
2683e647 |
169 | @figure{/technical_overview/images/0003.png} |
72b7576f |
170 | |
2683e647 |
171 | @section OCCT_TOVW_SECTION_5 Visualization |
72b7576f |
172 | |
8b742dc1 |
173 | **Visualization** module provides ready-to-use algorithms to create graphic presentations from various objects: shapes, meshes, etc. |
72b7576f |
174 | |
8b742dc1 |
175 | In Open CASCADE Technology visualization is based on the separation of CAD data and its graphical presentation. |
2683e647 |
176 | The module also supports a fast and powerful interactive selection mechanism. |
72b7576f |
177 | |
8b742dc1 |
178 | Visualization module relies on the following key toolkits: |
179 | - *TKV3d* toolkit defines a high-level API called (Application Interactive Services* (AIS) for working with interactive objects. |
180 | - *TKService* toolkit defines a low-level API for managing and creating presentations from primitive arrays. |
181 | This toolkit defines an abstraction layer for defining an arbitrary graphic driver responsible for actual rendering. |
182 | - *TKOpenGl* toolkit implements the graphic driver using OpenGL and OpenGL ES libraries. |
183 | |
184 | While low-level API operates with primitive arrays (triangles, lines, points), the higher level includes services for building presentations for B-Rep shapes (shaded and wireframe). |
185 | A comprehensive list of standard interactive objects includes topological shape, mesh presentation, various dimensions, manipulators and others. |
186 | It provides a solid basis for rapid application development, while flexible and extensible API allows development of highly customized application-specific presentations. |
187 | |
188 | Here are a few examples of OCCT Visualization features: |
189 | * Camera-driven view projection and orientation. |
190 | Perspective, orthographic and stereographic projections are supported. |
191 | * Support of Common (diffuse/ambient/specular) and PBR metallic-roughness material models. |
192 | * Possibility to flexibly adjust appearance of dimensions in a 3D view. |
193 | The 3D text object represents a given text string as a true 3D object in the model space. |
194 | * Definition of clipping planes through the plane equation coefficients. |
195 | Ability to define visual attributes for cross-section at the level or individual clipping planes. |
196 | In the image below different parts of the rocket are clipped with different planes and hatched. |
197 | @figure{/technical_overview/images/0008.png, "Display of shape cross-section and dimensions"} |
72b7576f |
198 | |
8b742dc1 |
199 | * Support of built-in and application-specific GLSL shaders. |
2683e647 |
200 | @figure{/technical_overview/images/0013.png, "Fragment shader implementing custom clipping surface"} |
72b7576f |
201 | |
8b742dc1 |
202 | * Optimization of rendering performance through the algorithms of: |
203 | * View frustum culling, which skips the presentation outside camera at the rendering stage; |
204 | * Back face culling, which reduces the rendered number of triangles and eliminates artifacts at shape boundaries. |
205 | * Real-time ray tracing technique using recursive Whitted's algorithm and Bounded Volume Hierarchy effective optimization structure. |
206 | @figure{/technical_overview/images/0002.png, "Real time visualization by ray tracing method"} |
2683e647 |
207 | @figure{/technical_overview/images/0012.png, "Simulation of a glass cover"} |
72b7576f |
208 | |
07f2b741 |
209 | For more details, see @ref occt_user_guides__visualization "Visualization User's Guide". |
013a8549 |
210 | |
2683e647 |
211 | The 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 | |
7863dabb |
213 | See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings. |
013a8549 |
214 | |
2683e647 |
215 | @section OCCT_TOVW_SECTION_6 Data Exchange |
013a8549 |
216 | |
8b742dc1 |
217 | **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. |
013a8549 |
218 | |
2683e647 |
219 | @figure{/technical_overview/images/0014.png,"Shape imported from STEP"} |
013a8549 |
220 | |
8b742dc1 |
221 | **Data Exchange** is organized in a modular way as a set of interfaces that comply with various CAD formats: IGES, STEP, STL, VRML, etc. |
222 | The interfaces allow software based on OCCT to exchange data with various CAD/PDM software packages, maintaining a good level of interoperability. |
223 | This module handles various problems of interoperability between CAD systems, caused by differences in model validity criteria and requirements to internal representation. |
224 | |
225 | * **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. |
226 | The following formats are currently supported: |
227 | * @ref occt_user_guides__step "STEP" (AP203: Mechanical Design, this covers General 3D CAD; AP214: Automotive Design; AP242). |
228 | * @ref occt_user_guides__iges "IGES" (up to 5.3). |
229 | * **glTF** 2.0 reader and writer. |
230 | * **OBJ** mesh file reader. |
231 | * **VRML** converter translates Open CASCADE shapes to VRML 1.0 files (Virtual Reality Modeling Language). |
232 | * **STL** converter translates Open CASCADE shapes to STL files. |
233 | STL (STtereoLithography) format is widely used for rapid prototyping (3D printing). |
2683e647 |
234 | * @ref occt_user_guides__xde "Extended data exchange" (XDE) allows translating additional attributes attached to geometric data (colors, layers, names, materials etc). |
8b742dc1 |
235 | * <a href="https://www.opencascade.com/content/advanced-data-exchange-components">Advanced Data Exchange Components</a> |
236 | 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: |
7863dabb |
237 | * <a href="https://www.opencascade.com/content/acis-sat-import-export">ACIS SAT</a> |
238 | * <a href="https://www.opencascade.com/content/parasolid-import">Parasolid</a> |
239 | * <a href="https://www.opencascade.com/content/dxf-import-export">DXF</a> |
240 | * <a href="https://www.opencascade.com/content/ifc-import">IFC</a> |
241 | * <a href="https://www.opencascade.com/content/jt-import-export">JT</a> |
013a8549 |
242 | |
2683e647 |
243 | These components are based on the same architecture as interfaces with STEP and IGES. |
013a8549 |
244 | |
2683e647 |
245 | @section OCCT_TOVW_SECTION_6a Shape Healing |
013a8549 |
246 | |
2683e647 |
247 | **Shape Healing** library provides algorithms to correct and adapt the geometry and topology of shapes imported to OCCT from other CAD systems. |
013a8549 |
248 | |
2683e647 |
249 | Shape Healing algorithms include, but are not limited to, the following operations: |
8b742dc1 |
250 | * 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: |
251 | - check edge and wire consistency; |
252 | - check edge order in a wire; |
253 | - check the orientation of face boundaries; |
254 | - analyze shape tolerances; |
255 | - identify closed and open wires in a boundary. |
256 | * Fix incorrect or incomplete shapes: |
257 | - provide consistency between a 3D curve and its corresponding parametric curve; |
258 | - repair defective wires; |
259 | - fit the shapes to a user-defined tolerance value; |
260 | - fill gaps between patches and edges. |
261 | * Upgrade and change shape characteristics: |
262 | - reduce curve and surface degree; |
263 | - split shapes to obtain C1 continuity; |
264 | - convert any types of curves or surfaces to Bezier or B-Spline curves or surfaces and back; |
265 | - split closed surfaces and revolution surfaces. |
013a8549 |
266 | |
2683e647 |
267 | Each sub-domain of Shape Healing has its own scope of functionality: |
013a8549 |
268 | |
2683e647 |
269 | | Sub-domain | Description | Impact on the shape | |
270 | | :--- | :---- | :---- | |
271 | | Analysis | Explores shape properties, computes shape features, detects violation of OCCT requirements. | The shape itself is not modified. | |
272 | | Fixing | Fixes the shape to meet the OCCT requirements. | The shape may change its original form: modification, removal or creation of sub-shapes, etc.) | |
273 | | Upgrade | Improves the shape to fit some particular algorithms. | The shape is replaced with a new one, but geometrically they are the same. | |
274 | | Customization | Modifies the shape representation to fit specific needs. | The shape is not modified, only the mathematical form of its internal representation is changed. | |
275 | | Processing | Mechanism of shape modification via a user-editable resource file. | | |
013a8549 |
276 | |
07f2b741 |
277 | For more details, refer to @ref occt_user_guides__shape_healing "Shape Healing User's guide". |
013a8549 |
278 | |
7863dabb |
279 | See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings. |
72b7576f |
280 | |
72b7576f |
281 | @section OCCT_TOVW_SECTION_7 Application Framework |
282 | |
8b742dc1 |
283 | **Open CASCADE Application Framework** (OCAF) handles Application Data basing on the Application/Document paradigm. |
284 | It uses an associativity engine to simplify the development of a CAD application thanks to the following ready-to-use features and services: |
013a8549 |
285 | |
2683e647 |
286 | * Data attributes managing the application data, which can be organized according to the development needs; |
287 | * Data storage and persistence (open/save); |
8b742dc1 |
288 | * Possibility to modify and recompute attributes in documents. |
289 | With OCAF it is easy to represent the history of modification and parametric dependencies within your model; |
013a8549 |
290 | * Possibility to manage multiple documents; |
2683e647 |
291 | * Predefined attributes common to CAD/CAM/CAE applications (e.g. to store dimensions); |
292 | * Undo-Redo and Copy-Paste functions. |
013a8549 |
293 | |
2683e647 |
294 | Since OCAF handles the application structure, the only development task is the creation of application-specific data and GUIs. |
013a8549 |
295 | |
8b742dc1 |
296 | OCAF 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. |
297 | In a model, such attributes as shape data, color and material are attached to an invariant structure, which is deeper than the shapes. |
298 | 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 |
299 | |
2683e647 |
300 | OCAF organizes and embeds these attributes in a document. OCAF documents, in their turn, are managed by an OCAF application. |
013a8549 |
301 | |
07f2b741 |
302 | For more details, see @ref occt_user_guides__ocaf "OCAF User's Guide". |
72b7576f |
303 | |
7863dabb |
304 | See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings. |
72b7576f |
305 | |
2683e647 |
306 | @section OCCT_TOVW_SECTION_8 Draw Test Harness |
72b7576f |
307 | |
8b742dc1 |
308 | **Test Harness** or **Draw** is a convenient testing tool for OCCT libraries. |
309 | It can be used to test and prototype various algorithms before building an entire application. |
310 | It includes: |
013a8549 |
311 | - A command interpreter based on the TCL language; |
2683e647 |
312 | - A number of 2D and 3D viewers; |
013a8549 |
313 | - A set of predefined commands. |
314 | |
2683e647 |
315 | The viewers support operations such as zoom, pan, rotation and full-screen views. |
316 | |
317 | The basic commands provide general-purpose services such as: |
013a8549 |
318 | - Getting help; |
319 | - Evaluating a script from a file; |
320 | - Capturing commands in a file; |
321 | - Managing views; |
322 | - Displaying objects. |
323 | |
2683e647 |
324 | In 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 |
325 | |
2683e647 |
326 | You can add custom commands to test or demonstrate any new functionalities, which you develop. |
013a8549 |
327 | |
07f2b741 |
328 | For more details, see @ref occt_user_guides__test_harness "Draw Test Harness Manual". |