Open CASCADE 是一套開放原始碼的CAD/CAM/CAE幾何模型核心,源自於法國的Matra Datavision公司,這一套函式庫系統原來是著名的CADCAM軟體EUCLID的開發平台,但是在1998年,Matra Datavision改變了經營策略,從以銷售軟體為主改變為提供CAD/CAM/CAE軟體服務為主的獲利模式,並且在1999年公佈Open CASCADE的程式原始碼,任何人都可以在該公司的網站上下載並且使用這些程式碼,而Matra Datavision則以此函式庫為基礎位客戶建立客製化的數值模擬軟體,國內CADCAM產業所需的套裝軟體常常動輒數百萬甚至上千萬,如此高昂的軟體費用對於中小企業來說確實是非常沉重的負擔,而且套裝軟體中的功能有些其實根本用不到,但是軟體使用者卻必須花錢購買這些用不到的功能,如果能夠針對中小企業的需求建構一個精簡化的CAD/CAM軟體,並且在生產需求改變的時候才增加新的功能,將可以有效節省軟體成本,而Open CASCADE的成功經驗或許可以提供產業界甚至學術界一些新的思考方向 。
Open CASCADE是一個功能強大的三維建模工具,提供了點、線、面、體和複雜形體的顯示和交互操作,經過深度開發後可實現紋理、光照、圖元填充、特效等圖形操作和放大、縮小、旋轉、漫遊、模擬飛行、模擬穿越等動態操作。Open CASCADE從底層構建的CAD平臺,所以在做機械模擬方面會好用很多,比如數控加工中模擬切屑的去除過程、對於干涉的檢查等。
以下為Open CASCADE模塊架構圖:
Foundation classes
Foundation Classes serving the base of all other OCCT classes.
Foundation Classes module contains data structures and services used by higher-level Open CASCADE Technology classes:
- Primitive types, such as Boolean, Character, Integer or Real;
- String classes that handle ASCII and Unicode strings;
- Collection classes that handle statically or dynamically sized aggregates of data, such as arrays, lists, queues, sets and hash tables (data maps).
- Classes providing commonly used Numerical Algorithms and basic linear algebra calculations (addition, multiplication, transposition of vectors and matrices, solving linear systems etc).
- Fundamental types representing physical Quantities and supporting date and time information;
- Primitive Geometry Types providing implementation of basic geometric and algebraic entities that define and manipulate elementary data structures.
- Exception classes that describe situations, when the normal execution of program is abandoned;
This module also provides a variety of general-purpose services, such as:
- Safe handling of dynamically created objects, ensuring automatic deletion of unreferenced objects (smart pointers);
- Configurable optimized memory manager increasing the performance of applications that intensively use dynamically created objects;
- Extended run-time type information (RTTI) mechanism maintaining a full type hierarchy and providing means to iterate over it;
- Encapsulation of C++ streams;
- Automated management of heap memory by means of specific allocators;
- Basic interpreter of expressions facilitating the creation of customized scripting tools, generic definition of expressions, etc.;
- Tools for dealing with configuration resource files and customizable message files facilitating multi-language support in applications;
- 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;
- and many others...
Modeling data
Modeling Data supplies data structures to represent 2D and 3D geometric and topological models.
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.
Geometry types and utilities provide geometric data structures and services for:
- Description of points, vectors, curves and surfaces:
- their positioning in 3D space using axis or coordinate systems, and
- their geometric transformation, by applying translations, rotations, symmetries, scaling transformations and combinations thereof.
- Creation of parametric curves and surfaces by interpolation and approximation;
- Algorithms of direct construction;
- Conversion of curves and surfaces to NURBS form;
- Computation of point coordinates on 2D and 3D curves;
- Calculation of extrema between geometric objects.
Topology defines relationships between simple geometric entities. A shape, which is a basic topological entity, can be divided into components (sub-shapes):
- Vertex – a zero-dimensional shape corresponding to a point;
- Edge - a shape corresponding to a curve and bounded by a vertex at each extremity;
- Wire - a sequence of edges connected by their vertices;
- Face - a part of a plane (in 2D) or a surface (in 3D) bounded by wires;
- Shell - a collection of faces connected by edges of their wire boundaries;
- Solid - a finite closed part of 3D space bounded by shells;
- Compound solid - a collection of solids connected by faces of their shell boundaries.
Modeling algorithms
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:
- High-level modeling routines used in the real design;
- Low-level mathematical support functions used as a groundwork for the modeling API;
- Low-level geometric tools provide the algorithms, which:
- Calculate the intersection of two curves, surfaces, or a curve and a surface;
- Project points onto 2D and 3D curves, points onto surfaces and 3D curves onto surfaces;
- Construct lines and circles from constraints;
- Construct free-form curves and surfaces from constraints (interpolation, approximation, skinning, gap filling, etc);
- Low-level topological tools provide the algorithms, which:
- Tessellate shapes;
- Check correct definition of shapes;
- Determine the local and global properties of shapes (derivatives, mass-inertia properties, etc);
- Perform affine transformations;
- Find planes in which edges are located;
- Convert shapes to NURBS geometry;
- Sew connected topologies (shells and wires) from separate topological elements (faces and edges).
Top-level API provides the following functionality:
- Construction of Primitives:
- Boxes;
- Prisms;
- Cylinders;
- Cones;
- Spheres;
- Toruses.
- Kinematic Modeling:
- Prisms - linear sweeps;
- Revolutions - rotational sweeps;
- Pipes - general-form sweeps;
- Lofting.
- Boolean Operations, which allow creating new shapes from the combinations of source shapes. For two shapes S1 and S2:
- Common contains all points that are in S1 and S2;
- Fuse contains all points that are in S1 or S2;
- Cut contains all points in that are in S1 and not in S2.
- Algorithms for local modifications such as:
- Hollowing;
- Shelling;
- Creation of tapered shapes using draft angles;
- Algorithms to make fillets and chamfers on shape edges, including those with variable radius (chord).
- Algorithms for creation of mechanical features, i.e. depressions, protrusions, ribs and grooves or slots along planar or revolution surfaces.
Mesh
Mesh module provides the functionality to work with tessellated representations of objects in form of triangular facets. This module contains:
- data structures to store surface mesh data associated to shapes and basic algorithms to handle them;
- data structures and algorithms to a build triangular surface mesh from BRep objects (shapes);
- tools for displaying meshes with associated pre- and post-processor data (scalars or vectors).
Open CASCADE Technology includes two mesh converters:
- 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.
- STL converter translates Open CASCADE shapes to STL files. STL (STtereoLithography) format is widely used for rapid prototyping (3D printing).
OPEN CASCADE also offers Advanced Mesh Products:
- Open CASCADE Mesh Framework (OMF)
- Express Mesh
Visualization
Visualization in Open CASCADE Technology is based on the separation of the modeling data which you want to display and select, and the display and selection of this data.
For visualizing data structures, Open CASCADE Technology provides ready-to-use algorithms which create graphic presentations from geometric models. These data structures may be used with the viewers supplied, and can be customized to take into account the specificity of your application.
Display is managed through the presentation services, and selection through the selection services. With these services, data structures and algorithms are provided to display objects of the application, and to support the graphical selection of these objects.
To manage presentation and selection in for 3D data structures, AIS (Application Interactive Services) is provided. These services associate data structures and interactive objects.
Data Exchange (standardized)
Data Exchange providing interoperability with most popular data formats, which relies on Shape Healing to improve obtained shapes.
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.
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.
- 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:
- STEP (AP203: Mechanical Design, this covers General 3D CAD; AP214: Automotive Design; AP242);
- IGES (up to 5.3);
- glTF, VRML and STL.
- Extended data exchange (XDE) allows translating additional attributes attached to geometric data (colors, layers, names, materials etc).
- Advanced Data Exchange Components are available in addition to standard Data Exchange interfaces to support interoperability and data adaptation (also using Shape Healing) with CAD software using the following proprietary formats:
- ACIS SAT
- DXF
- Parasolid
- JT
- IFC
- OBJ, PLY and other.
These components provide API similar to the interfaces with STEP and IGES.
Application framework (OCAF)
Application Framework, providing ready-to-use solutions for handling Application Data.
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:
- Data attributes managing the application data, which can be organized according to the development needs;
- Data storage and persistence (open/save);
- 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;
- Possibility to manage multiple documents;
- Predefined attributes common to CAD/CAM/CAE applications (e.g. to store dimensions);
- Undo-Redo and Copy-Paste functions.
Since OCAF handles the application structure, the only development task is the creation of application-specific data and GUIs.
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. 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.
OCAF organizes and embeds these attributes in a document. OCAF documents, in their turn, are managed by an OCAF application.
Shape healing
Shape Healing can be used to improve obtained shapes.
Shape Healing library provides algorithms to correct and adapt the geometry and topology of shapes imported to OCCT from other CAD systems.
Shape Healing algorithms include, but are not limited to, the following operations:
- 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:
- check edge and wire consistency;
- check edge order in a wire;
- check the orientation of face boundaries;
- analyze shape tolerances;
- identify closed and open wires in a boundary.
- fix incorrect or incomplete shapes:
- provide consistency between a 3D curve and its corresponding parametric curve;
- repair defective wires;
- fit the shapes to a user-defined tolerance value;
- fill gaps between patches and edges.
- upgrade and change shape characteristics:
- reduce curve and surface degree;
- split shapes to obtain C1 continuity;
- convert any types of curves or surfaces to Bezier or B-Spline curves or surfaces and back;
- split closed surfaces and revolution surfaces.
- Each sub-domain of Shape Healing has its own scope of functionality:
Sub-domain | Description | Impact on the shape |
Analysis | Explores shape properties, computes shape features, detects violation of OCCT requirements. | The shape itself is not modified. |
Fixing | Fixes the shape to meet the OCCT requirements. | The shape may change its original form: modification, removal or creation of sub-shapes, etc.) |
Upgrade | Improves the shape to fit some particular algorithms. | The shape is replaced with a new one, but geometrically they are the same. |
Customization | Modifies the shape representation to fit specific needs. | The shape is not modified, only the mathematical form of its internal representation is changed. |
Processing | Mechanism of shape modification via a user-editable resource file. |
Draw test harness
Open CASCADE Test Harness, also called DRAW, provides testing tools for other modules.
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:
- A command interpreter based on the TCL language;
- A number of 2D and 3D viewers;
- A set of predefined commands.
The viewers support operations such as zoom, pan, rotation and full-screen views.
The basic commands provide general-purpose services such as:
- Getting help;
- Evaluating a script from a file;
- Capturing commands in a file;
- Managing views;
- Displaying objects.
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.
The Test Harness also provides geometric commands to create and manipulate curves and surfaces, and topological commands to create and manipulate shapes. Geometric and topological commands implement geometry and topology resources, and provide examples of their use.
You can add custom commands to test or demonstrate any new functionalities, which you develop.
產品主要功能
- 創建錐、柱、環等基本幾何體;
- 對幾何體進行Boolean操作(相加、相減、相交運算);
- 倒角、斜切、鏤空、偏移、掃視;
- 幾何空間關係計算(法線、點積、叉積、投影、擬合等);
- 幾何體分析(質心、體積、曲率等);
- 空間變換(平移、縮放、旋轉)。
高級功能
- 應用框架服務
- 資料交換服務
產品優勢
- Access to source code:Access to high-quality code provides extra stability and robustness for Open CASCADE Technology based solutions and applications. This code can be freely adapted, modified and enriched by necessary functionality according to particular needs.
- No license fees:There is no limitation as to the number of installed copies, meaning greatly reduced cost. Absence of license fees reduces costs of evaluation period, prototyping and piloting projects.
- Product continuity:Permanent product evolution and continuity are ensured by OPEN CASCADE SAS, industrial customers supporting their own Open CASCADE Technology based solutions and the worldwide community.
- Reliability:A large community of users and customers are constantly testing the software. The increasing quality and robustness of software is ensured by the Initial Developer (OPEN CASCADE SAS).
- Openness and interoperability:Open CASCADE Technology provides wide data exchange possibilities, both through neutral formats and directly with CAD systems. This enables an open, long-term viability of the solutions based thereupon.
- Complete commercial support:For commercial software editors looking for a complete development platform and expert support Open CASCADE Technology is an ideal combination - you pay for the support, not for the license fees! Support services are very flexible and include numerous options - just choose what you really need.
系統需求
Requirements
Open CASCADE Technology is designed to be highly portable and is known to work on wide range of platforms. Current version is officially certified on Windows (x86-64), Linux (x86-64), OS X / macOS (x86-64, arm64), Android (arm64), and iOS (arm64) platforms.
The tables below describe the recommended software configurations for which OCCT is certified to work.
C++ Compiler / IDE
OS | Compiler |
Windows | Microsoft Visual Studio: 2015 Update 3, 2017 1, 2019, 2022 |
, LLVM (ClangCL), GCC 4.3+ (Mingw-w64) | |
Linux | GNU gcc 4.3+ |
LLVM CLang 3.6+ | |
OS X / macOS | XCode 6 or newer |
Android | NDK r12, GNU gcc 4.9 or newer |
Web | Emscripten SDK 1.39 or newer (CLang) |
1) VC++ 141 64-bit is used for regular testing and for building binary package of official release of OCCT on Windows.
Third-party libraries and tools
The following third-party libraries and tools are not included in OCCT sources but are either required or can be optionally used for the indicated components of OCCT. They are not needed if relevant component is not needed - it is possible building core OCCT modules without additional dependencies.
Note that pre-built packages of many of the listed libraries are available at https://dev.opencascade.org/resources/download/3rd-party-components
Component | Where to find | Used for | Purpose |
CMake 3.1+ | https://cmake.org/ | Configuration | Build from sources |
Intel oneTBB 2021.5.0 | https://github.com/oneapi-src/oneTBB/releases/tag/v2021.5.0 | All | Parallelization of algorithms (alternative to built-in thread pool) |
OpenGL 3.3+, OpenGL ES 2.0+ | System | Visualization | Required for using 3D Viewer |
OpenVR 1.10+ | https://github.com/ValveSoftware/openvr | Visualization | VR (Virtual Reality) support in 3D Viewer |
FreeType 2.4+ | https://www.freetype.org/download.html | Visualization | Text rendering in 3D Viewer |
FreeImage 3.17+ | https://sourceforge.net/projects/freeimage/files | Visualization | Reading/writing image files |
FFmpeg 3.1+ | https://www.ffmpeg.org/download.html | Visualization | Video recording |
VTK 6.1+ | https://www.vtk.org/download/ | IVtk | VTK integration module |
Flex 2.6.4+ and Bison 3.7.1+ | https://sourceforge.net/projects/winflexbison/ | Data Exchange | Updating STEP and ExprIntrp parsers |
RapidJSON 1.1+ | https://rapidjson.org/ | Data Exchange | Reading glTF files |
Draco 1.4.1+ | https://github.com/google/draco | Data Exchange | Reading compressed glTF files |
Tcl/Tk 8.6.3+ | https://www.tcl.tk/software/tcltk/download.html | DRAW Test Harness | Tcl interpretor in Draw module |
Qt 5.3.2+ | https://www.qt.io/download/ | Inspector and Samples | Inspector Qt samples and |
Doxygen 1.8.5+ | https://www.doxygen.nl/download.html | Documentation | (Re)generating documentation |
Graphviz 2.38+ | https://graphviz.org/ | Documentation | Generating dependency graphs |
Hardware
Component | Requirement |
Minimum memory | 512 MB, 1 GB recommended |
Free disk space (complete installation) | 1,5 GB approx. |
On desktop, 3D viewer for optimal performance requires graphics processing unit (GPU) supporting OpenGL 3.3 or above. Ray tracing requires OpenGL 4.0+ or OpenGL 3.3+ with GL_ARB_texture_buffer_object_rgb32 extension. Textures within ray tracing will be available only when GL_ARB_bindless_texture extension is provided by driver.
On mobile platforms, OpenGL ES 2.0+ is required for 3D viewer (OpenGL ES 3.1+ is recommended). Ray tracing requires OpenGL ES 3.2. Some old hardware might be unable to execute complex GLSL programs (e.g. with high number of light sources, clipping planes).
OCCT 3D Viewer, in general, supports wide range of graphics hardware - from very old to new. Therefore, if you observe some unexpected visual issues - first check for OpenGL driver update (or firmware update in case of mobile platforms); but beware that driver update might also come with new bugs. Don't forget to report these bugs to vendors.
Add yet another competitive advantage to your application with added-value software components from OPEN CASCADE!
On top of open-source Open CASCADE Technology libraries we offer miscellaneous Added-value Components (SDKs) that can enrich your application or help you solve a specific problem. If you develop your in-house software, or if you are a commercial software editor, these components should be particularly interesting because using them in your products will save your time and costs.
For professional developers, Advanced Samples are available with full source code, to demonstrate Open CASCADE Technology use in various domains, including data exchange, 3D parametric modeling, and industrial design.
Advanced Tools can be applied immediately to speed up the development in your specific environment.
- Advanced Data Exchange
- ACIS Import-Export
- DXF Import-Export
- JT Import-Export
- Parasolid Import
- IFC Import
- Volume Rendering
- BestFit
- CAM Library
- Canonical Recognition
- Collision Detection
- Express Mesh
- Mesh Framework
- Surfaces from Scattered Points
- Unfolding Library
- Advanced Samples & Tools
ACIS Import-Export
The Open CASCADE ACIS Import-Export SDK provides Open CASCADE Technology-based applications with the capability of reading and writing SAT (Standard ACIS Text) and SAB (Standard ACIS Binary) files.
Two levels of data conversion are available:
- BRep data (geometrical and topological data),
- Attributes (colors and names) associated with BRep data.
Reading of such data from files of all known format versions is possible, writing supports versions up to ACIS 7.
BRep data can be transferred alone, or together with the associated attributes.
DXF Import-Export
The Open CASCADE DXF Import-Export SDK provides Open CASCADE Technology-based applications with the capability of reading and writing DXF files.
Two levels of data conversion are available:
- BRep data (geometrical and topological data),
- Attributes (colors, names and assembly structure) associated with BRep data.
Reading of such data from files of all known format versions is possible, writing supports versions R10 and earlier, R12, R13, R14, 2000, 2004, 2007, 2010.
BRep data can be transferred alone, or together with the associated attributes.
JT Import-Export
The Open CASCADE JT Import-Export SDK provides Open CASCADE Technology-based applications with the capability to:
- read a JT file into a JT model;
- write a JT model into a JT file;
- create, explore and modify JT models.
Based on this SDK, it is possible to implement powerful JT visualization functionality using LOD management, object’s culling and multi-threaded processing of parts (integration in customers' applications is available as additional service).
The following kinds of data can be stored in a JT model provided by this SDK:
- assembly tree;
- mesh representation (triangulation) at different Levels Of Detail (LOD) of the whole JT model and its parts;
- names, colors and transparency of JT parts.
The Open CASCADE JT Import-Export SDK also provides:
- Late Loading mechanism to delay loading of the data associated with parts of the JT model until they are actually needed;
- data compression by JT standard compression algorithms.
The Open CASCADE JT Import-Export SDK provides converters:
- from an OCAF (Open CASCADE Application Framework) document to a JT model, to transfer the hierarchy of names, colors and meshes of the OCAF document to the JT models;
- from a JT model to an OCAF document, to transfer the hierarchy of names, colors and meshes of the JT model to the OCAF document.
The first converter is especially useful when data from other widely used CAD formats (such as STEP, IGES, DXF, ACIS, Parasolid and other native formats) read by the corresponding interfaces need to be converted to JT format.
This SDK contains examples (Draw commands) of using these converters.
Parasolid Import
The Open CASCADE Parasolid Import SDK provides Open CASCADE Technology-based applications with the capability of reading Parasolid files.
Two levels of data conversion are available:
- BRep data (geometrical and topological data),
- Attributes (colors and names) associated with BRep data.
Reading of such data from X_T (text) and X_B (binary) files of all known format versions (schemes) is possible.
BRep data can be transferred alone, or together with the associated attributes.
IFC Import
The Open CASCADE IFC Import SDK provides applications with the capability of reading BIM (Building Information Modeling) data from the files in IFC (Industry Foundation Classes) format.
The supported versions of the IFC format are IFC2x3 and IFC4, used by the most modern applications.