Open CASCADE 基礎類(Foundation Classes)

1 介紹(Introduction) 1

如何使用Open CASCADE技術(OCCT)基礎類. 算法

This manual explains how to use Open CASCADE Technology (OCCT) Foundation Classes. It provides basic
documentation on foundation classes. For advanced information on foundation classes and their applications, see
our E-learning & Training offerings.express

基礎類提供了常規目的服務如動態內存管理(由handle管理), 集合, 異常處理, 常規轉換, 插件生成.
Foundation Classes provide a variety of general-purpose services such as automated dynamic memory management
(manipulation of objects by handle), collections, exception handling, genericity by down-casting and plug-in
creation.安全

基礎類包括: Foundation Classes include the following:app

基類 Root Classes (其它數據類型和類的根基)

Root classes are the basic data types and classes on which all the other classes are built. They provide:
• fundamental types such as Boolean, Character, Integer or Real,
• safe handling of dynamically created objects, ensuring automatic deletion of unreferenced objects (see
Standard_Transient class),
• configurable optimized memory manager increasing the performance of applications that intensively use dynamically created objects,
• extended run-time type information (RTTI) mechanism facilitating the creation of complex programs,
• management of exceptions,
• encapsulation of C++ streams. Root classes are mainly implemented in Standard and MMgt packages.ide

字符串 Strings

Strings are implemented in the TCollection package.工具

集合 Collections

集合處理動態增加的聚合數據 Collections are the classes that handle dynamically sized aggregates of data.優化

Collections include a wide range of generic classes such as run-time sized arrays, lists, stacks, queues, sets and
hash maps. Collections are implemented in the TCollection and NCollection packages.ui

標準對象集合 Collections of Standard Objects

The TColStd package provides frequently used instantiations of generic classes from the TCollection package with
objects from the Standard package or strings from the TCollection package.this

向量和矩陣 Vectors and Matrices

它們提供了經常使用數學算法和基礎計算(加, 乘, 平移, 反轉)spa

These classes provide commonly used mathematical algorithms and basic calculations (addition, multiplication,
transposition, inversion, etc.) involving vectors and matrices.

原始幾何類型 Primitive Geometric Types

Open CASCADE Technology primitive geometric types are a STEP-compliant implementation of basic geometric
and algebraic entities. They provide:
• Descriptions of elementary geometric shapes:
• Points,
• Vectors,
• Lines,
• Circles and conics,
• Planes and elementary surfaces,
• Positioning of these shapes in space or in a plane by means of an axis or a coordinate system,
• Definition and application of geometric transformations to these shapes:
• Translations
• Rotations
• Symmetries
• Scaling transformations
• Composed transformations
• Tools (coordinates and matrices) for algebraic computation.

Common Math Algorithms

Open CASCADE Technology common math algorithms provide a C++ implementation of the most frequently used
mathematical algorithms. These include:
• Algorithms to solve a set of linear algebraic equations,
• Algorithms to find the minimum of a function of one or more independent variables,
• Algorithms to find roots of one, or of a set, of non-linear equations,
• Algorithms to find the eigen-values and eigen-vectors of a square matrix.

Exceptions

A hierarchy of commonly used exception classes is provided, all based on class Failure, the root of exceptions.
Exceptions describe exceptional situations, which can arise during the execution of a function. With the raising of
an exception, the normal course of program execution is abandoned. The execution of actions in response to this
situation is called the treatment of the exception.

Quantities

These are various classes supporting date and time information and fundamental types representing most physical
quantities such as length, area, volume, mass, density, weight, temperature, pressure etc.

Application services

Foundation Classes also include implementation of several low-level services that facilitate the creation of customizable
and user-friendly applications with Open CASCADE Technology. These include:
• Unit conversion tools, providing a uniform mechanism for dealing with quantities and associated physical
units: check unit compatibility, perform conversions of values between different units and so on (see package
UnitsAPI);
• Basic interpreter of expressions that facilitates the creation of customized scripting tools, generic definition of
expressions and so on (see package ExprIntrp);
• Tools for dealing with configuration resource files (see package Resource) and customizable message files
(see package Message), making it easy to provide a 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.

2 基礎(Basics) 3

This chapter deals with basic services such as library organization, persistence, data types, memory management,
programming with handles, exception handling, genericity by downcasting and plug-in creation.

2.1 庫組織(Library organization)  6

This chapter introduces some basic concepts, which are used not only in Foundation Classes, but throughout the
whole OCCT library.

2.1.1 模塊和工具Modules and toolkits 6

在物理上, 一個共享庫(.so或.dll)表示一個工具箱.

The whole OCCT library is organized in a set of modules. The first module, providing most basic services and used
by all other modules, is called Foundation Classes and described by this manual.
Every module consists primarily of one or several toolkits (though it can also contain executables, resource units
etc.). Physically a toolkit is represented by a shared library (e.g. .so or .dll). The toolkit is built from one or several
packages.

2.1.2 包 Packages 6

語義相關的一些類組成一個包. 如: 一個幾何包 會包含點,線,圓類.

一般, 每一個類名會有包前綴.

A package groups together a number of classes which have semantic links. For example, a geometry package
would contain Point, Line, and Circle classes. A package can also contain enumerations, exceptions and package
methods (functions). In practice, a class name is prefixed with the name of its package e.g. Geom_Circle. Data
types described in a package may include one or more of the following data types:
• Enumerations
• Object classes
• Exceptions
• Pointers to other object classes Inside a package, two data types cannot bear the same name.

image

2.1.3 類 Classes 7
2.1.4 繼承 Inheritance 8
2.2 數據類型 Data Types 8

在OCCT中, Handles能安全的操做動態對象內存分配與釋放.

A variable of a type manipulated by handle which is not attached to an object is said to be null. To reference an
object, we instantiate the class with one of its constructors. For example, in C++:

Handle(myClass) m = new myClass;

In Open CASCADE Technology, the Handles are specific classes that are used to safely manipulate objects allocated
in the dynamic memory by reference, providing reference counting mechanism and automatic destruction of
the object when it is not referenced.

2.2.1 原始類型Primitive Types 9

Table 1: Equivalence between C++ Types and OCCT Primitive Types

C++ Types OCCT Types
int Standard_Integer
double Standard_Real
float Standard_ShortReal
unsigned int Standard_Boolean
char Standard_Character
short Standard_ExtCharacter
char* Standard_CString
void* Standard_Address
short* Standard_ExtString

2.2.2 值類型 Types manipulated by value  10
2.2.3 引用(handle)類型 Types manipulated by reference (handle)    11
2.2.4 何時必須用handle When is it necessary to use a handle? 11
2.3 使用Handles Programming with Handles   12

Class Standard_Transient is a root of a big hierarchy of OCCT classes that are said to be operable by handles.

Handle(Geom_Line) aLine; // "Handle(Geom_Line)" is expanded to "opencascade::handleL<Geom_Line>"

In addition, for standard OCCT classes additional typedef is defined for a handle, as the name of a class prefixed
by Handle_. For instance, the above example can be also coded as:

Handle_Geom_Line aLine; // "Handle_Geom_Line" is typedef to "opencascade::handleL<Geom_Line>"

2.3.1 Handle定義 Handle Definition    12
2.3.2 類型管理 Type Management   12
2.3.3 使用Handles建立對象 Using Handles to Create Objects    14
2.3.4 調用方法 Invoking Methods    14
2.3.5 Handle釋放 Handle deallocation   15
2.3.6 循環引用Cycles  16
2.4 內存管理 Memory Management  16
2.4.1 使用內存管理器 Usage of Memory Manager   16
2.4.2 如何配置內存管理器 How to configure the Memory Manager    16
2.4.3 優化技巧 Optimization Techniques    17
2.4.4 優勢和drawbacks Benefits and drawbacks    17
2.5 異常 Exceptions    18
2.5.1 介紹 Introduction   18
2.5.2 拋出異常 Raising an Exception  18
2.5.3 處理異常 Handling an Exception 19
2.5.4 多平臺實現 Implementation on various platforms.  21
2.6 插件管理 Plug-In Management  22
2.6.1 插件發佈 Distribution by Plug-Ins 22

3 集合,字符串,數量和單位轉換 Collections, Strings, Quantities and Unit Conversion   24

3.1 集合 Collections    24
3.1.1 總覽 Overview    24
3.1.2 通常集合 Generic general-purpose Aggregates 24
3.1.3 通常表 Generic Maps  26
3.1.4 遍歷 Iterators 29
3.2 標準對象集合 Collections of Standard Objects 29
3.2.1 總覽 Overview    30
3.2.2 描述 Description   30
3.3 NCollections   30
3.3.1 Overview    30
3.3.2 Instantiation of collection classes    31
3.3.3 Arrays and sequences 31
3.3.4 Maps  32
3.3.5 Other collection types  32
3.3.6 Features    34
3.4 字符串 Strings  36
3.4.1 示例 Examples    36
3.4.2 約定 Conversion   37
3.5 數量 Quantities    37
3.6 單位轉換 Unit Conversion 38

4 數學基礎和算法 Math Primitives and Algorithms   39

4.1 總覽 Overview    394.2 向量和矩陣 Vectors and Matrices  394.3 基礎幾何類型 Primitive Geometric Types    404.4 基礎幾何類型集合 Collections of Primitive Geometric Types    414.5 基本幾何庫 Basic Geometric Libraries    414.6 經常使用數學算法 Common Math Algorithms    414.7 精度 Precision 434.7.1 精度包 The Precision package 444.7.2 標準精度值 Standard Precision values   44

相關文章
相關標籤/搜索