Open Cascade Overview
Open Cascade (www.opencascade.org), or simply OCAS, by MATRA is a general-purpose CAD (Computer Aided Design) software. This system gives a complete application development environment, made up of about 10.000 classes written in C++ and organized in about 400 project files. In particular, an "OCAS project" is a collection of classes that share common functionality in some semantic area of geometry and/or graphics.
The classes of Open Cascade offers the infrastructure (Rapid Application Framework) for rapid development of geometric computing applications oriented or "design" in some specific areas of interest, say in advanced CAD tools, design databases, simulation systems or graphics rendering of complex assemblies.
CAS.Cade project (this name derives by the anagram of the words CASE and CAD) started in 1990 when Matra Datavision, which was at that time the producer of another traditional CAD called Euclid, wanted to develop one totally new modelling software.
It was decided to adopt the latest technology of the moment: all the application would have been based on the object oriented approach; in the specific it was adopted the C++ programming language. All geometric (and not only geometric) algorithms were completely rewritten.
In 1995 the modelling kernel was finished and Matra started the first debugging and testing session.
In 1999 CAS.CADE was installed and used in about 130 different places (USA, UK, Italy, Japan and so on); in the same year the Matra decided to completely change its policy of software distribution: from software house it became a vendor of services (training courses, phone assistance etc.) and CAS.CADE was freely distributed under the Open Source licence (therefore it is now possible to use freely in the contest of the development of non commercial software).
Open Cascade architecture
Ocas internal code organization is quite simple: all C++ classes are grouped under packages; every package belongs to an Ocas library; finally a group of libraries forms a module. The main reason of this structure is to link together services and algorithms which operate in the same semantic domain.

Ocas geometric services are divided into 6 categories (as you can see from the above figure):
[Foundation Class] Foundation Classes provide a variety of general-purpose services such as: primitive types, strings and various types of quantities, automated management of heap memory, exception handling, classes for manipulating aggregates of data, math tools etc.Non Geometric services[Modelling Data] Modelling Data supplies data structures to represent 2D and 3D geometric models.These services are organized in the following libraries: 2D geometry, 3D geometry, geometry Utilities, topology.
[Modelling Algorithms] The Modelling Algorithms module groups together a range of topological algorithms used in modelling. Along with these tools, it is possible to find the geometric algorithms which they call.
[Data Exchange Processor] The Data Exchange classes provide services that allow Open CASCADE applications to exchange data with other software applications using the following interfaces: STEP AP203 AP214, IGES (it is also possible to import and export using some simpler vector data format such as VRML and BRep boundary representation).
[Visualization] For visualizing data structures, Open CASCADE 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.
[OCAF] The Open Cascade Application Framework provides modelling services, aiming to connect user data, even non-geometric , to parametric geometric models. It also provides further functionalities for storing and editing the history of a work session, and not only its results. This approach is embedded into an automatic mechanism for document and application generation, called application template.
Whereas Open Cascade is a software environment specifically oriented for geometric modeling, it also gives other non-geometric services, aiming to support the application programmer along all the life-cycle of he application.
The non-geometric services may be classified in three main subsystems:
[CDL] The Component Definition Language (CDL) is the Open Cascade language for defining the interface of software components. A CDL file establishes the internal structure of C++ programs and data. For example a CDL class describes class constructors, instance or static methods and state variables. The following CDL link details important features about this language.[WOK] The Workshop Organization Kit is the set of tools for the development of CDL based applications. In particular it contains: a system shell for command invocations; some tools for code generation through suitable program extractors; commands for automatic generation of project Makefile and for library compilation. This link explains how to get WOK working under Windows.
[EDL] The Open Cascade EDL language supports automatic generation of textual files from textual template to which we apply variable bindings. It is the main tools that permit extractors (CPPExtractor and SchemeExtractor) working. The following EDL link details important feature about this language.