> For the complete documentation index, see [llms.txt](https://jherculesqz.gitbook.io/open-cascade-technology-v7.7.0/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jherculesqz.gitbook.io/open-cascade-technology-v7.7.0/introduction/overview.md).

# Overview

## Overview 概叙

Open CASCADE Technology (OCCT) is an object-oriented C++ class library designed for rapid production of sophisticated domain-specific CAD/CAM/CAE applications.

Open CASCADE Technology（OCCT）是一个面向对象的C++类库，专为快速开发复杂的领域特定的CAD/CAM/CAE应用程序而设计。

A typical application developed using OCCT deals with two or three-dimensional (2D or 3D) geometric modeling in general-purpose or specialized Computer Aided Design (CAD) systems, manufacturing or analysis applications, simulation applications, or even illustration tools.

使用OCCT开发的典型应用程序通常涉及二维或三维几何建模，可以是通用或专用的计算机辅助设计（CAD）系统、制造或分析应用程序、模拟应用程序甚至是插图工具。

OCCT library is designed to be truly modular and extensible, providing C++ classes for:

* Basic data structures (geometric modeling, visualization, interactive selection and application specific services);
* Modeling algorithms;
* Working with mesh (faceted) data;
* Data interoperability with neutral formats (IGES, STEP);

OCCT库被设计为真正的模块化和可扩展，提供用于以下功能的C++类：

* 基本数据结构(几何建模、可视化、交互选择和特定应用服务);
* 建模算法;
* 使用网格(面片)数据；
* 与中立格式(IGES、STEP)进行数据互操作;

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.

C++类和其他类型被分组成了包。这些包被组织成为工具包（库），您可以将其链接到您的应用程序中。 最后，这些工具包被分组成七个模块。

This modular structure is illustrated in the diagram below.

这种模块化结构在下面的图表中有所说明。

* **Foundation Classes** module underlies all other OCCT classes;
* **Modeling Data** module supplies data structures to represent 2D and 3D geometric primitives and their compositions into CAD models;
* **Modeling Algorithms** module contains a vast range of geometrical and topological algorithms;
  * **Mesh** toolkit from "Modeling Algorithms" module implements tessellated representations of objects;
* **Visualization** module provides complex mechanisms for graphical data representation;
* **Data Exchange** module inter-operates with popular data formats and relies on **Shape Healing** to improve compatibility between CAD software of different vendors;
* **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).
* **基础类库** 模块是所有其他OCCT类的基础。它为其他模块提供了必要的基础功能和数据结构。
* **数据建模** 模块提供了表示2D和3D几何原始形状及其在CAD模型中组合的数据结构。通过这个模块，可以创建和处理几何图形和模型。
* **建模算法** 模块包含了大量的几何和拓扑算法。这些算法可以用于处理和操作几何图形，如计算交点、投影、旋转、缩放等。
* **网格** 工具包来自于**建模算法**模块，它可以用来实现对象的网格表示。这对于处理复杂的几何形状和进行渲染非常有用。
* **可视化** 模块提供了复杂的机制来进行图形数据的表示。它可以用来显示和可视化几何图形和模型，使其更易于理解和分析。
* **数据交换** 模块用于与流行的数据格式进行交互，并利用Shape Healing来提高不同供应商CAD软件之间的兼容性。这使得在不同的CAD软件之间共享和转换数据更加方便。
* **应用框架** 模块提供了处理特定应用程序数据（用户属性）和常用功能（保存/恢复、撤销/重做、复制/粘贴、跟踪CAD修改等）的成熟解决方案。它可以帮助开发人员更轻松地构建定制的CAD应用程序。

In addition, 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.

此外，Open CASCADE测试工具也被称为Draw，它为库提供了一个入口点，并可用作其模块的测试工具。

### Foundation 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 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 like color, 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;

**基础类库**模块包含了Open CASCADE Technology的高级类所使用的数据结构和服务：

* 基本类型，如Boolean、Character、Integer或Real；
* 处理Unicode字符串的String类；
* 处理静态或动态大小的数据聚合的Collection类，例如数组、列表、队列、集合和哈希表（数据映射）。
* 提供常用数值算法和基本线性代数计算（向量和矩阵的加法、乘法、转置，解线性系统等）的类。
* 基本类型，如颜色、日期和时间信息；
* 提供实现基本几何和代数实体的原始几何类型，用于定义和操作基本数据结构。
* 异常类，用于描述程序正常执行被放弃的情况。

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);
* Standard and specialized memory allocators;
* Extended run-time type information (RTTI) mechanism maintaining a full type hierarchy and providing means to iterate over it;
* Encapsulation of C++ streams;
* 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...

此模块还提供了各种通用服务，例如：

* 安全处理动态创建的对象，确保自动删除未引用的对象（智能指针）；
* 标准和专门的内存分配器；
* 扩展运行时类型信息（RTTI）机制，维护完整的类型层次结构，并提供遍历的方式；
* 封装C++流；
* 基本的表达式解释器，便于创建定制的脚本工具、通用表达式定义等；
* 处理配置资源文件和可自定义的消息文件的工具，方便应用程序实现多语言支持；
* 进度指示和用户中断接口，即使是低级算法也能以通用且便捷的方式与用户通信；
* 以及其他许多功能...

See the details in [Foundation Classes User's Guide](https://dev.opencascade.org/doc/overview/html/occt_user_guides__foundation_classes.html)

详见[《基础类用户指南》](https://dev.opencascade.org/doc/overview/html/occt_user_guides__foundation_classes.html)。

### Modeling Data 数据建模

**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.

**数据建模**模块提供了实现3D对象边界表示（BRep）的数据结构。

在BRep中，形状被表示为几何体在拓扑结构中的聚合。

几何体被理解为对形状的数学描述，例如曲线和表面（简单或规范化，贝塞尔曲线，NURBS等）。

而拓扑结构则是将几何对象绑定在一起的数据结构。

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.

几何类型和工具提供了以下几何数据结构和服务：

* 对点、向量、曲线和表面进行描述：
  * 在三维空间中使用坐标轴或坐标系进行定位，
  * 通过应用平移、旋转、对称、缩放和其组合来进行几何变换。
* 通过插值和逼近创建参数曲线和表面；
* 直接构造算法；
* 将曲线和表面转换为NURBS形式；
* 在二维和三维曲线上计算点坐标；
* 计算几何对象之间的极值。

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;
* Composite solid – a collection of solids connected by faces of their shell boundaries;
* Compound – a collection of shapes of arbitrary type.

拓扑学定义了简单几何实体之间的关系。一个形状，作为基本的拓扑实体，可以分解成组成部分（子形状）：

* 顶点 - 一个零维形状，对应一个点；
* 边 - 一个由顶点边界限定的曲线形状；
* 弧 - 由边通过它们的顶点连接而成的序列；
* 面 - 二维平面的一部分（在三维中为表面），由弧界限定；
* 壳 - 面的集合，通过弧的边界相连；
* 固体 - 由壳界限定的三维空间的有限闭合部分；
* 复合固体 - 固体的集合，通过面的壳边界相连；
* 复合体 - 任意类型形状的集合。

Complex shapes can be defined as assemblies (compounds) of simpler entities.

复杂形状可以被定义为简单实体（元素）的组装（复合体）。

See the details in [Modeling Data User's Guide](https://dev.opencascade.org/doc/overview/html/occt_user_guides__modeling_data.html)

详见[数据建模用户指南](https://dev.opencascade.org/doc/overview/html/occt_user_guides__modeling_data.html)。

3D geometric models can be stored in OCCT native BREP format. See [BREP Format Description White Paper](https://dev.opencascade.org/doc/overview/html/specification__brep_format.html) for details on the format.

3D几何模型可以以OCCT本地的BREP格式进行存储。有关该格式的具体信息，详见 [BREP格式描述白皮书](https://dev.opencascade.org/doc/overview/html/specification__brep_format.html) 。

### 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.

**建模算法**模块汇集了用于几何建模的各种拓扑和几何算法。Open CASCADE Technology 中基本上有两类算法：

* 高级建模例程，用于实际设计中；
* 低级数学支持函数，作为建模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).

低级拓扑工具提供以下算法：

* 对形状进行网格划分；
* 检查形状的正确定义；
* 确定形状的局部和全局属性（导数、质量惯性属性等）；
* 执行仿射变换；
* 找到边所在的平面；
* 将形状转换为NURBS几何体；
* 从单独的拓扑元素（面和边）中拼接连接的拓扑结构（壳体和线）。

Top-level API provides the following functionality:

* Construction of Primitives:
  * Boxes;
  * Prisms;
  * Cylinders;
  * Cones;
  * Spheres;
  * Toruses.

顶层API提供以下功能：

* 原始几何体的构建：
  * 立方体；
  * 棱柱；
  * 圆柱；
  * 圆锥；
  * 球体；
  * 圆环体。
* Kinematic Modeling:
  * Prisms – linear sweeps;
  * Revolutions – rotational sweeps;
  * Pipes – general-form sweeps;
  * Lofting.
* 运动建模：
  * 棱柱 - 线性扫描;
  * 旋转体 - 旋转扫描;
  * 管道 - 一般形状扫描;
  * 积木模型。

​ **Shapes containing pipes with variable radius produced by sweeping**

​ 使用扫描生成的包含可变半径的管道形状。

* 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*.

See [Boolean Operations](https://dev.opencascade.org/doc/overview/html/specification__boolean_operations.html) User's Guide for detailed documentation.

* 布尔运算是能够通过对原始形状的组合来创建新形状的操作。对于两个形状S1和S2：
  * Common包含所有既在S1中又在S2中的点；
  * Fuse包含所有在S1或S2中的点；
  * Cut包含所有既在S1中又不在S2中的点。

请参阅[《布尔运算用户指南》](https://dev.opencascade.org/doc/overview/html/specification__boolean_operations.html) 以获取详细文档。

* 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.
* 用于创建机械特征的算法，即沉降、突出、肋骨和凹槽或沟槽的算法，可以沿着平面或旋转曲面进行操作。

See the details in [Modeling Algorithms User's Guide](https://dev.opencascade.org/doc/overview/html/occt_user_guides__modeling_algos.html).

详见 [《建模算法用户指南》](https://dev.opencascade.org/doc/overview/html/occt_user_guides__modeling_algos.html).

### Mesh 网格

**Mesh** toolkit provides the functionality to work with tessellated representations of objects in form of triangular facets. This toolkit contains:

* data structures to store surface mesh data associated to shapes and basic algorithms to handle them;
* data structures and algorithms to build triangular surface mesh from *BRep* objects (shapes);
* tools for displaying meshes with associated pre- and post-processor data (scalars or vectors).

**网格**工具包提供了使用三角形面片的网格表示来处理物体的功能。该工具包包括：

* 存储与形状相关的表面网格数据的数据结构和处理这些数据的基本算法；
* 从*BRep*对象（形状）构建三角形表面网格的数据结构和算法；
* 用于显示与前处理和后处理数据（标量或向量）相关联的网格的工具。

Open CASCADE SAS also offers Advanced Mesh Products:

* [Open CASCADE Mesh Framework (OMF)](https://www.opencascade.com/content/mesh-framework)
* [Express Mesh](https://www.opencascade.com/content/express-mesh)

Open CASCADE SAS还提供高级网格产品：

* [Open CASCADE SAS网络框架(OMF)](https://www.opencascade.com/content/mesh-framework)
* [高速网格](https://www.opencascade.com/content/express-mesh)

### Visualization 可视化

**Visualization** module provides ready-to-use algorithms to create graphic presentations from various objects: shapes, meshes, etc.

**可视化**模块提供了一些现成的算法，用于从各种对象（如形状、网格等）创建图形展示。

In Open CASCADE Technology visualization is based on the separation of CAD data and its graphical presentation. The module also supports a fast and powerful interactive selection mechanism.

在Open CASCADE Technology中，可视化基于CAD数据和其图形表示的分离。该模块还支持快速而强大的交互式选择机制。

Visualization module relies on the following key toolkits:

* *TKV3d* toolkit defines a high-level API called (Application Interactive Services\* (AIS) for working with interactive objects.
* *TKService* toolkit defines a low-level API for managing and creating presentations from primitive arrays. This toolkit defines an abstraction layer for defining an arbitrary graphic driver responsible for actual rendering.
* *TKOpenGl* toolkit implements the graphic driver using OpenGL and OpenGL ES libraries.

可视化模块依赖于以下关键工具包：

* TKV3d工具包定义了一个高级API，称为（应用程序交互服务）AIS，用于处理交互式对象。
* TKService工具包定义了一个低级API，用于从原始数组管理和创建图形展示。该工具包为定义任意图形驱动程序提供了一个抽象层，该驱动程序负责实际的渲染。
* TKOpenGl工具包使用OpenGL和OpenGL ES库实现了图形驱动程序。

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). A comprehensive list of standard interactive objects includes topological shape, mesh presentation, various dimensions, manipulators and others. It provides a solid basis for rapid application development, while flexible and extensible API allows development of highly customized application-specific presentations.

低级API操作原始数组（三角形、线条、点），而高级API包括用于构建面向B-Rep形状（阴影和线框）展示的服务。

标准交互对象的完整列表包括拓扑形状、网格展示、各种尺寸、操纵器等等。

它为快速应用程序开发提供了坚实的基础，而灵活可扩展的API则允许开发高度定制的特定应用程序展示。

Here are a few examples of OCCT Visualization features:

* Camera-driven view projection and orientation. Perspective, orthographic and stereographic projections are supported.
* Support of Common (diffuse/ambient/specular) and PBR metallic-roughness material models.
* 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.
* 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.

以下是OCCT可视化功能的几个示例：

* 基于摄像机的视图投影和方向。支持透视、正交和立体投影。
* 支持常见（漫反射/环境/镜面反射）和PBR金属粗糙度材料模型。
* 能够灵活调整3D视图中尺寸的外观。3D文本对象将给定的文本字符串表示为模型空间中的真实3D对象。
* 通过平面方程系数定义剪裁平面。能够为剪裁平面的整体或个别部分定义视觉属性。在下面的图像中，火箭的不同部分通过不同的平面进行剪裁并加上阴影。

​ **Display of shape cross-section and dimensions**

​ 展示形状剖面和尺寸

* Support of built-in and application-specific GLSL shaders.
* 支持内置和应用特定的GLSL着色器。

​ **Fragment shader implementing custom clipping surface**

​ 片段着色器实现自定义剪裁曲面

* Optimization of rendering performance through the algorithms of:
  * View frustum culling, which skips the presentation outside camera at the rendering stage;
  * Back face culling, which reduces the rendered number of triangles and eliminates artifacts at shape boundaries.
* 通过视景体裁剪和背面裁剪的算法来优化渲染性能。
  * 视景体裁剪在渲染阶段跳过了相机外部的场景，从而提升渲染性能；
  * 背面裁剪则减少了渲染的三角形数量，并消除了形状边界的伪影。
* Real-time ray tracing technique using recursive Whitted's algorithm and Bounded Volume Hierarchy effective optimization structure.
* 使用递归Whitted算法和有效的边界体层次优化结构的实时光线追踪技术。

​ **Real time visualization by ray tracing method**

​ 光线追踪方法实现的实时可视化

​ **Simulation of a glass cover**

​ 玻璃覆盖物的模拟

For more details, see [Visualization User's Guide](https://dev.opencascade.org/doc/overview/html/occt_user_guides__visualization.html).

更多详细信息，请参阅[可视化用户指南](https://dev.opencascade.org/doc/overview/html/occt_user_guides__visualization.html)。

The visualization of OCCT topological shapes by means of VTK library provided by VIS component is described in a separate [VTK Integration Services](https://dev.opencascade.org/doc/overview/html/occt_user_guides__vis.html) User's Guide.

OCCT拓扑形状通过VIS组件提供的VTK库进行可视化，详细描述请参阅单独的[VTK集成服务用户指南](https://dev.opencascade.org/doc/overview/html/occt_user_guides__vis.html)。

### Data Exchange 数据交换

**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.

**数据交换**允许开发基于OCCT的应用程序，通过从外部数据读取和写入CAD模型的方式来与其他CAD系统交互。

​ **Shape imported from STEP**

​ 从STEP导入的形状

**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. This module handles various problems of interoperability between CAD systems, caused by differences in model validity criteria and requirements to internal representation.

**数据交换**以模块化的方式组织，作为一组符合各种CAD格式的接口：IGES，STEP，STL，VRML等

这些接口允许基于OCCT的软件与各种CAD/PDM软件包交换数据，保持良好的互操作性。

该模块处理CAD系统之间的各种互操作性问题，这些问题由于模型有效性标准和对内部表示的要求差异而引起的。

* **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** 2.0 reader and writer.
  * **OBJ** mesh file reader and writer.
  * **VRML** converter translates Open CASCADE shapes to VRML 1.0 files (Virtual Reality Modeling Language).
  * **STL** converter translates Open CASCADE shapes to STL files. STL (STtereoLithography) format is widely used for rapid prototyping (3D printing).
* **标准化的数据交换**接口允许查询和检查输入文件，将其内容转换为CAD模型，并对完全翻译的形状进行有效性检查。目前支持以下格式：
  * **STEP**（AP203：机械设计，包括通用3D CAD；AP214：汽车设计；AP242）。
  * **IGES**（高达5.3）。
  * **glTF** 2.0的读写器。
  * **OBJ**网格文件的读写器。
  * **VRML**转换器将Open CASCADE形状转换为VRML 1.0文件（虚拟现实建模语言）。
  * **STL**转换器将Open CASCADE形状转换为STL文件。STL（SttereoLithography）格式广泛用于快速原型制作（3D打印）。
* **Extended data exchange**(XDE) allows translating additional attributes attached to geometric data (colors, layers, names, materials etc).
* **扩展数据交换**（XDE）允许将附加到几何数据的其他属性进行转换（包括颜色、图层、名称、材料等）。
* **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**
  * **Parasolid**
  * **DXF**
  * **IFC**
  * **JT**
* **高级数据交换组件**是除了标准数据交换接口外的一种选择，用于与CAD软件进行互操作和数据适应（也使用了形状修复），支持以下专有格式：
  * **ACIS SAT**
  * **Parasolid**
  * **DXF**
  * **IFC**
  * **JT**

These components are based on the same architecture as interfaces with STEP and IGES.

这些组件基于与STEP和IGES接口相同的架构。

### Shape Healing 形状修复

**Shape Healing** library provides algorithms to correct and adapt the geometry and topology of shapes imported to OCCT from other CAD systems.

**形状修复**库提供了从其他CAD系统导入到OCCT的形状的几何和拓扑修正和适应算法。

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.
* 分析形状特征，特别是通过分析几何对象和拓扑结构，识别不符合OCCT几何和拓扑规则的形状：
  * 检查边缘和线的一致性；
  * 检查线中的边缘顺序；
  * 检查面边界的方向；
  * 分析形状容差；
  * 识别边界中的闭合线和开放线。
* 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.
* 修复不正确或不完整的形状：
  * 确保3D曲线与其对应的参数曲线一致；
  * 修复有缺陷的线；
  * 将形状适应到用户定义的容差值；
  * 填补补丁和边缘之间的间隙。
* 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.
* 升级和改变形状特征：
  * 减少曲线和曲面的次数；
  * 切分形状以获得C1连续性；
  * 将任何类型的曲线或曲面转换为贝塞尔曲线或B样条曲线或曲面，然后再转换回来；
  * 切分闭合曲面和旋转曲面。

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.                          |                                                                                                  |

形状修复的每个子域都有其各自的功能范围：

| 子域  | 描述                           | 对形状的影响                     |
| --- | ---------------------------- | -------------------------- |
| 分析  | 探索形状属性，计算形状特征，检测违反OCCT要求的情况。 | 形状本身不会修改。                  |
| 修复  | 修复形状以满足OCCT要求。               | 形状可能会改变其原始形式：修改、删除或创建子形状等。 |
| 升级  | 改进形状以适应某些特定算法。               | 形状被替换为新形状，但在几何上它们是相同的。     |
| 自定义 | 修改形状表达以满足特定需要。               | 形状不会被修改，只会改变其内部表示的数学形式。    |
| 加工  | 通过用户可编辑的资源文件进行形状修改的机制。       |                            |

For more details, refer to [Shape Healing User's guide](https://dev.opencascade.org/doc/overview/html/occt_user_guides__shape_healing.html).

更多详细信息，请参阅 [形状修复用户指南](https://dev.opencascade.org/doc/overview/html/occt_user_guides__shape_healing.html)。

### Application Framework 应用框架

**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:

**Open CASCADE应用框架**（OCAF）基于应用/文档范例处理应用数据。

它使用关联性引擎，通过以下现成的功能和服务简化CAD应用的开发:

* 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.
* 数据属性管理应用程序数据，可以根据开发需求进行组织；
* 数据存储和持久化（打开/保存）；
* 可以在文档中修改和重新计算属性。使用OCAF可以轻松展示模型的修改历史和参数依赖关系；
* 可以管理多个文档；
* 预定义的CAD/CAM/CAE应用程序常见属性（例如存储尺寸）；
* 撤销-重做和复制-粘贴功能。

Since OCAF handles the application structure, the only development task is the creation of application-specific data and GUIs.

由于OCAF处理应用程序的结构，因此唯一的开发任务是创建特定于应用程序的数据和图形用户界面(GUI)。

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与其他CAD框架的不同之处在于应用程序数据的组织方式，因为在OCAF中，数据结构是基于引用键而不是形状。

在模型中，诸如形状数据、颜色和材质等属性被附加到一个不变的结构上，这个结构比形状更深入。

一个形状对象成为形状属性的值，就像整数属性的值是整数数字，字符串属性的值是字符串一样。

OCAF organizes and embeds these attributes in a document. OCAF documents, in their turn, are managed by an OCAF application.

OCAF将这些属性组织和嵌入在文档中。而OCAF文档则由一个OCAF应用程序管理。

For more details, see [OCAF User's Guide](https://dev.opencascade.org/doc/overview/html/occt_user_guides__ocaf.html).

更多详细信息，请参阅 [OCAF用户指南](https://dev.opencascade.org/doc/overview/html/occt_user_guides__ocaf.html)。

### Draw Test Harness 测试工具

**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.

**Test Harness**或者DRAW是一个方便的OCCT库测试工具。它可以用于在构建整个应用之前测试和原型化各种算法。它包括：

* 基于TCL语言的命令解释器；
* 一些2D和3D查看器；
* 一组预定义的命令。

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.

此外，**Test Harness**提供了创建和操作曲线、曲面（几何）和形状、访问可视化服务、处理 OCAF 文档、进行数据交换等功能的命令。

You can add custom commands to test or demonstrate any new functionalities, which you develop.

您可以添加自定义命令来测试或演示您开发的任何新功能。

For more details, see [Draw Test Harness Manual](https://dev.opencascade.org/doc/overview/html/occt_user_guides__test_harness.html).

有关更多详细信息，请参阅 [Draw Test Harness 手册](https://dev.opencascade.org/doc/overview/html/occt_user_guides__test_harness.html)。
