# open-cascade-sas/occt architecture

> Architecture diagram of the GitHub repository open-cascade-sas/occt, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/open-cascade-sas/occt
- Repository: https://github.com/open-cascade-sas/occt

## Overview

Open CASCADE Technology (OCCT) is a C++ platform for CAD/CAM/CAE applications, providing 3D modeling, CAD data exchange, visualization, and application-framework services. A typical product workflow begins with an application developer using OCCT libraries to create or process geometry, apply modeling algorithms, exchange CAD data, and visualize results; the framework also provides document and persistence capabilities. The groups reflect the product’s documented domains and the module families in the tree. The source excerpts are limited, so the diagram summarizes documented capabilities and avoids asserting detailed internal call wiring.

Main entry points: [`src/ModelingData/TKBRep`](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKBRep) (BRep data), [`src/DataExchange/TKDE`](https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDE) (Exchange services), [`src/ModelingData/TKGeomBase`](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKGeomBase) (Geometry base), [`src/ModelingData/TKG3d`](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKG3d) (3D geometry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_foundation["Core foundations"]
  node_kernel["Core kernel"]
  node_math["Math libraries"]
end

subgraph group_modeling["3D modeling"]
  node_geom2d["2D geometry"]
  node_geom3d["3D geometry"]
  node_geombase["Geometry base"]
  node_brep["BRep data"]
  node_topalgo["Topology algorithms"]
  node_geomalgo["Geometry algorithms"]
  node_boolean["Boolean operations"]
  node_mesh["Mesh generation"]
end

subgraph group_exchange["Data exchange"]
  node_de["Exchange services"]
  node_step["STEP exchange"]
  node_iges["IGES exchange"]
  node_stl["STL exchange"]
  node_gltf["glTF exchange"]
end

subgraph group_visualization["Visualization"]
  node_visual["3D visualization"]
  node_opengl["OpenGL driver"]
end

subgraph group_framework["Application framework"]
  node_documents["CAD documents"]
  node_persistence["Document persistence"]
end

node_developer(("Application developer"))

node_developer -->|"uses libraries"| node_kernel
node_developer -->|"creates geometry"| node_geom3d
node_developer -->|"models shapes"| node_brep
node_geom3d -->|"supports geometry"| node_geombase
node_geom2d -->|"supports geometry"| node_geombase
node_geombase -->|"defines geometry"| node_brep
node_brep -->|"operates on topology"| node_topalgo
node_brep -->|"operates on shapes"| node_geomalgo
node_brep -->|"provides operands"| node_boolean
node_brep -->|"provides shapes"| node_mesh
node_developer -->|"exchanges CAD data"| node_de
node_de -->|"dispatches STEP"| node_step
node_de -->|"dispatches IGES"| node_iges
node_de -->|"dispatches STL"| node_stl
node_de -->|"dispatches glTF"| node_gltf
node_developer -->|"uses visualization"| node_visual
node_visual -->|"renders with"| node_opengl
node_developer -->|"manages documents"| node_documents
node_documents -->|"persists data"| node_persistence

click node_kernel "https://github.com/open-cascade-sas/occt/tree/master/src/FoundationClasses/TKernel"
click node_math "https://github.com/open-cascade-sas/occt/tree/master/src/FoundationClasses/TKMath"
click node_geom2d "https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKG2d"
click node_geom3d "https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKG3d"
click node_geombase "https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKGeomBase"
click node_brep "https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKBRep"
click node_topalgo "https://github.com/open-cascade-sas/occt/tree/master/src/ModelingAlgorithms/TKTopAlgo"
click node_geomalgo "https://github.com/open-cascade-sas/occt/tree/master/src/ModelingAlgorithms/TKGeomAlgo"
click node_boolean "https://github.com/open-cascade-sas/occt/tree/master/src/ModelingAlgorithms/TKBool"
click node_mesh "https://github.com/open-cascade-sas/occt/tree/master/src/ModelingAlgorithms/TKMesh"
click node_de "https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDE"
click node_step "https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDESTEP"
click node_iges "https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDEIGES"
click node_stl "https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDESTL"
click node_gltf "https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDEGLTF"
click node_visual "https://github.com/open-cascade-sas/occt/tree/master/src/Visualization/TKV3d"
click node_opengl "https://github.com/open-cascade-sas/occt/tree/master/src/Visualization/TKOpenGl"
click node_documents "https://github.com/open-cascade-sas/occt/tree/master/src/ApplicationFramework/TKCAF"
click node_persistence "https://github.com/open-cascade-sas/occt/tree/master/src/ApplicationFramework/TKLCAF"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_kernel,node_math toneBlue
class node_geom2d,node_geom3d,node_geombase,node_brep,node_topalgo,node_geomalgo,node_boolean,node_mesh toneAmber
class node_de,node_step,node_iges,node_stl,node_gltf toneMint
class node_visual,node_opengl toneRose
class node_documents,node_persistence,node_developer toneIndigo
```

## Components

### Core foundations

- [Core kernel](https://github.com/open-cascade-sas/occt/tree/master/src/FoundationClasses/TKernel): `src/FoundationClasses/TKernel`
- [Math libraries](https://github.com/open-cascade-sas/occt/tree/master/src/FoundationClasses/TKMath): `src/FoundationClasses/TKMath`

### 3D modeling

- [2D geometry](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKG2d): `src/ModelingData/TKG2d`
- [3D geometry](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKG3d): `src/ModelingData/TKG3d`
- [Geometry base](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKGeomBase): `src/ModelingData/TKGeomBase`
- [BRep data](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingData/TKBRep): `src/ModelingData/TKBRep`
- [Topology algorithms](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingAlgorithms/TKTopAlgo): `src/ModelingAlgorithms/TKTopAlgo`
- [Geometry algorithms](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingAlgorithms/TKGeomAlgo): `src/ModelingAlgorithms/TKGeomAlgo`
- [Boolean operations](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingAlgorithms/TKBool): `src/ModelingAlgorithms/TKBool`
- [Mesh generation](https://github.com/open-cascade-sas/occt/tree/master/src/ModelingAlgorithms/TKMesh): `src/ModelingAlgorithms/TKMesh`

### Data exchange

- [Exchange services](https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDE): `src/DataExchange/TKDE`
- [STEP exchange](https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDESTEP): `src/DataExchange/TKDESTEP`
- [IGES exchange](https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDEIGES): `src/DataExchange/TKDEIGES`
- [STL exchange](https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDESTL): `src/DataExchange/TKDESTL`
- [glTF exchange](https://github.com/open-cascade-sas/occt/tree/master/src/DataExchange/TKDEGLTF): `src/DataExchange/TKDEGLTF`

### Visualization

- [3D visualization](https://github.com/open-cascade-sas/occt/tree/master/src/Visualization/TKV3d): `src/Visualization/TKV3d`
- [OpenGL driver](https://github.com/open-cascade-sas/occt/tree/master/src/Visualization/TKOpenGl): `src/Visualization/TKOpenGl`

### Application framework

- [CAD documents](https://github.com/open-cascade-sas/occt/tree/master/src/ApplicationFramework/TKCAF): `src/ApplicationFramework/TKCAF`
- [Document persistence](https://github.com/open-cascade-sas/occt/tree/master/src/ApplicationFramework/TKLCAF): `src/ApplicationFramework/TKLCAF`

### Other components

- **Application developer**

## Connections

- Application developer → Core kernel: uses libraries
- Application developer → 3D geometry: creates geometry
- Application developer → BRep data: models shapes
- 3D geometry → Geometry base: supports geometry
- 2D geometry → Geometry base: supports geometry
- Geometry base → BRep data: defines geometry
- BRep data → Topology algorithms: operates on topology
- BRep data → Geometry algorithms: operates on shapes
- BRep data → Boolean operations: provides operands
- BRep data → Mesh generation: provides shapes
- Application developer → Exchange services: exchanges CAD data
- Exchange services → STEP exchange: dispatches STEP
- Exchange services → IGES exchange: dispatches IGES
- Exchange services → STL exchange: dispatches STL
- Exchange services → glTF exchange: dispatches glTF
- Application developer → 3D visualization: uses visualization
- 3D visualization → OpenGL driver: renders with
- Application developer → CAD documents: manages documents
- CAD documents → Document persistence: persists data
