OpenCascade中文帮助文档
Open_CASCADE学习笔记-句柄

OPEN CASCADE学习笔记——句柄著: Roman Lygin译:George Feng这是一篇关于开源三维建模软件O P E N C A S C A D E内核的博文:R O M A N L Y G I N是O P E N C A S C A D E的前程序开发员和项目经理,曾经写过许多关于该开源软件开发包的深入文章,可以在他的博客(H T T P://O P E N C A S C A D E.B L O G S P O T.C O M)上面找到这些文章。
序在OpenCascade的论坛上知道了Roman Lygin在他的博客上写了Open CASCADE notes系列文章,但是却无法访问他的博客,幸而百度文库已经收录了Topology and Geometry和Surface Modeling两篇文章,拜读之后获益良多。
如果大家发现文中翻译有错误或不足之处,望不吝赐教,可以发到我的邮箱fenghongkui@,十分感谢。
2012年6月28日星期四译者案:句柄是某个对象的一种标号,它是一个数值,它不是指针,根据指针可以知道对象在内存中的位置,但是通过句柄却不能直接更改内存中的对象,这事实上对于内存中的对象形成了一种保护。
中文中句柄这个词应该是来源于手柄的演化,利用手柄可以拎起来皮箱、包裹、茶壶等,就是说通过手柄可以控制一个对象,而计算机语言中的句柄却是用来“拎”(间接访问)内存中或者其他设备对象的。
我的第一篇文章,引言我也成为一个博友了,这是我第一次发博文,所以我对这种发文方式没有概念,也不知道是否有效。
让我们走着瞧吧。
我曾经在Open CASCADE(OCC)工作了7年时间,2004年离开,然后去了Intel,在那一直工作到现在。
在OCC的那些年的经历是非常珍贵的,我做过软件开发和项目管理,客户关系维护,与来自于各地和具有各种文化背景的人一起工作。
从1997年开始,我就在CAD数据交换小组作为软件开发工程师工作,我觉得这非常幸运,因为这使我可以学习到很多OCC代码,因为数据交换使用了大量的OCC算法。
opencascade中文手册

标题:深度解读opencascade中文手册,探究其应用与发展在计算机辅助设计和工程领域,opencascade是一款广泛应用的开源软件,其中文手册更是为广大用户提供了详尽的使用指南和技术支持。
本文将深入探讨opencascade中文手册的内容和应用,为读者带来更深入的理解和启发。
1. opencascade中文手册的概述opencascade中文手册是一本系统全面的技术文档,涵盖了opencascade软件的各个模块和功能,包括几何建模、CAD/CAM/CAE应用、三维可视化、网格处理等方面。
通过opencascade中文手册,用户可以学习到如何使用opencascade进行二维和三维几何建模,进行几何操作和变换,进行特征建模和零件装配等内容。
2. opencascade中文手册的深度应用在实际工程项目中,opencascade中文手册的深度应用涵盖了多个领域。
比如在机械制造中,opencascade提供了丰富的几何建模工具,可以帮助工程师进行产品设计和分析,提高设计效率和精度;在航空航天领域,opencascade的CAD/CAM/CAE应用可以辅助工程师进行飞机零件设计和模拟,为航空领域的发展提供了强大支持。
3. opencascade中文手册的发展趋势随着计算机辅助设计和工程领域的不断发展,opencascade中文手册也在不断更新和完善。
未来,opencascade中文手册有望进一步拓展其内容和功能,满足用户多样化的需求。
随着人工智能和大数据技术的发展,opencascade中文手册也有望在模型智能化和自动化方面取得更多突破。
总结与展望通过对opencascade中文手册的深度解读,我们对其在工程领域中的应用和发展有了更加清晰的认识。
opencascade中文手册不仅是一本技术文档,更是工程师们提升工作效率和质量的利器。
希望在未来,opencascade中文手册能够继续发挥其作用,为计算机辅助设计和工程领域的发展贡献更多力量。
Open+CASCADE中文教程

目录更多教程请到/hoya5121/category/556157.aspx 1. 项目概览 (4)1.1. 先决条件 (4)1.2. 项目 (4)1.3. 项目说明 (4)2. 技术描述 (6)2.1. 点 (6)2.2. 几何 (7)2.3. 拓扑 (8)2.4. 完整描述 (10)3. 构建主体 (12)3.1. 柱体 (12)3.2. 倒圆角 (13)3.3. 瓶颈 (15)3.4. 空洞 (16)4. 构建螺纹 (19)4.1. 创建表面 (19)4.2. 2D曲线 (19)4.3. 边框 (23)4.4. 螺纹 (24)5. 组合部件 (26)6. 附录 (27)1. 项目概览这个教程将教你使用OCC建立3D模型。
这个教程的目的不是描述所有的OCC类,而是让你开始思考OCC这个工具。
1.1.先决条件这个教程假设你已经有了C++的经验。
因为OCC是一个用C++设计的高性能建模库。
这样的组合将使你能够创建健壮的应用程序。
1.2. 项目下图是使用这个3D几何建模库提供的方法创建的一个瓶子:本教程将一步一步的教你创建这样一个瓶子。
你也可以在OCC安装目录中找到教程的源码(Tutorial/src/MakeBottle.cxx.)1.3.项目说明瓶子的详细参数参数参数名称参数值瓶高MyHeight 70mm瓶宽MyWidth 50mm瓶厚MyThickness 30mm另外我们将采用笛卡尔坐标系的原点做为瓶子的中心建立这个模型需要的四个步骤• 构建瓶子的轮廓• 构建瓶子的主体• 构建瓶颈上的螺纹• 组合部件2. 描述2.1. 点创建瓶子轮廓,首先要在XOY平面上创建特征点(下图)。
这些点将用来定义几何体的轮廓。
在OCC里有2个类可以用来描述3D坐标点:• gp_Pnt 类• Geom_CartesianPoint 类(句柄操作)这里句柄是一种提供自动内存管理的智能指针。
如何选择最合适类,考虑下列因素:• gp_Pnt 通过值操作。
OpenCascade入门教程

TutorialMy First ApplicationVersion 6.3 / September 2008Table of Contents1.PROJECT OVERVIEW (4)1.1.P REREQUISITES (4)1.2.T HE PROJECT (4)1.3.P ROJECT S PECIFICATIONS (4)2.BUILDING THE PROFILE (6)2.1.D EFINING S UPPORT P OINTS (6)2.2.P ROFILE:D EFINING THE G EOMETRY (7)2.3.P ROFILE:D EFINING THE T OPOLOGY (8)2.4.P ROFILE:C OMPLETING THE P ROFILE (10)3.BUILDING THE BODY (12)3.1.P RISM THE P ROFILE (12)3.2.A PPLYING F ILLETS (13)3.3.A DDING THE N ECK (15)3.4.C REATING A H OLLOWED S OLID (16)4.BUILDING THE THREADING (19)4.1.C REATING S URFACES (19)4.2.D EFINING 2D C URVES (19)4.3.B UILDING E DGES AND W IRES (23)4.4.C REATING T HREADING (24)5.BUILDING THE RESULTING COMPOUND (26)6.APPENDIX (27)4 Project Overview1. Project OverviewThis tutorial will teach you how to use Open CASCADE services to model a 3D object. The purpose ofthis tutorial is not to describe all Open CASCADE classes but to help you to start thinking in terms of the Open CASCADE tool.1.1. PrerequisitesThis tutorial assumes that you have experience in using and setting up C++.From a programming standpoint, Open CASCADE is designed to enhance your C++ tools with high performance modeling classes, methods and functions. The combination of all these resources will allow you to create substantial applications.1.2. The projectTo illustrate the use of classes provided in the 3D geometric modeling toolkits, you will create a bottle as shown:In the tutorial we will create, step-by-step, a function that will model a bottle as shown above. You will find the complete source code of this tutorial, including the very function MakeBottle in the distribution of Open CASCADE. The function body is provided in the file Tutorial/src/MakeBottle.cxx.1.3. Project SpecificationsWe first define the bottle specifications as follows:Object Parameter ParameterName Parameter Value Bottle height MyHeight 70mmBottle width MyWidth 50mm Bottle thickness MyThickness30mm为了演示3D 几何模型工具箱中类的使用丆你可以创建一个如下的瓶子。
Open Cascade手册(15)

Foundation Classes Modeling Algorithms Visualization Application Framework Data Exchange Building tools 3rd Party Products Samples and Tools Warnings Products
Open CASCADE Technology Products
Open CASCADE Technology
Highlights
Open CASCADE Support of UTF8 encoding for extended strings, and Unicode symbols in IGES Next step in thread-safety: protection against concurrent construction / destruction of Handle objects Improved compatibility with STL and Windows-specific code Multiple new features introduced in visualization module New visualization library NIS (New Interactive Service) New standard attributes and numerous improvements in OCAF Integrated code changes made by OCC users for MacOS X and FreeBSD porting Improved support of perspective view in Open CASCADE viewer New version of the OCAF binary persistence format The functionality of reading/writing VRML2.0 files has been implemented The definitions of Standard_CString and Standard_ExtString (typedefs) have been changed to be const: from char * (or short *) to const char * (or const short *) New supported platforms : Windows Vista, Mandriva2006, 2007, 2008, Debian Etch, Red Hat Enterprise 4.0 New supported compiler: gcc 4.0-4.2, Visual C++ 8.0
opencascade 手册

opencascade 手册OpenCascade手册OpenCascade是一套面向CAD/CAE应用程序开发的开源工具包。
它提供了丰富的几何建模功能和数据交换能力,允许开发人员构建高度灵活和可扩展的CAD/CAE应用。
1. 简介OpenCascade是一个基于C++的开源工具包,旨在提供一套强大的几何建模功能。
它由法国的OpenCascade公司开发,并于1999年首次发布。
OpenCascade使用B-样条曲线和曲面来表示几何实体,并提供了一系列操作和算法来实现对这些实体的操作和处理。
2. 功能特点OpenCascade提供了丰富的几何建模功能,包括创建、编辑和操作各种几何实体,如点、线、圆、椭圆、曲线、曲面、体等。
它支持实体的几何和拓扑属性,如位置、旋转、缩放、倾斜、厚度、颜色等。
此外,OpenCascade还支持各种几何运算,如裁剪、补丁、布尔运算、偏差、投影等。
3. 应用领域OpenCascade广泛应用于CAD/CAE领域,包括计算机辅助设计、计算机辅助工程、工业设计等。
它被用于开发各种CAD软件,如CATIA、SolidWorks、AutoCAD等,以及模拟和仿真软件,如Ansys、Simulink等。
4. 使用方法使用OpenCascade进行几何建模需要以下步骤:(1) 导入OpenCascade库。
(2) 创建几何实体,如点、线、曲线等。
(3) 进行几何操作,如裁剪、布尔运算等。
(4) 导出生成的几何实体。
以下是一个简单的示例代码,演示了如何使用OpenCascade创建一个三维立方体并导出到文件:```#include <TopoDS.hxx>#include <BRepPrimAPI_MakeBox.hxx>#include <BRepTools.hxx>int main(){TopoDS_Shape shape = BRepPrimAPI_MakeBox(10, 10, 10).Shape();BRepTools::Write(shape, "cube.brep");return 0;}```在这个示例中,我们使用`BRepPrimAPI_MakeBox`类创建了一个10x10x10的立方体,并使用`BRepTools::Write`函数将生成的几何实体导出到文件"cube.brep"。
opencascade编译
opencascade编译
OpenCASCADE是一款开源的3D几何建模软件,它可以用于各种工程领域。
本篇文章将介绍如何编译Opencascade。
1. 安装依赖项
在编译Opencascade之前,需要安装一些依赖项。
这些依赖项的安装方法会因不同的操作系统而有所不同。
在Linux系统下,可以使用以下命令安装依赖项:
sudo apt-get install libfreetype6-dev libglu1-mesa-dev libx11-dev libxt-dev libxmu-dev libxi-dev
2. 下载Opencascade源代码
可以从Opencascade官方网站上下载源代码。
下载完成后,将其解压到任意文件夹中。
3. 编译
使用终端进入解压后的Opencascade源代码目录,执行以下命令进行编译:
mkdir build
cd build
cmake ..
make
4. 安装Opencascade
编译完成后,可以使用以下命令将Opencascade安装到系统中: sudo make install
5. 测试Opencascade
编译并安装完成后,可以使用以下命令测试Opencascade是否正常工作:
cd samples
./DRAWEXE
如果一切正常,应该会出现一个3D图形界面。
可以用鼠标左键旋转、右键平移、滚轮缩放图形。
总结
本篇文章介绍了如何编译Opencascade并将其安装到系统中。
希望这篇文章能够帮助到想要使用Opencascade的读者。
opencascade 手册
OpenCASCADE是一个开源的几何建模库,提供了强大的几何造型和图形渲染功能。
以下是OpenCASCADE的一些关键特点和功能:
1.广泛的几何建模能力:OpenCASCADE支持多种几何建模算法,包括曲面、实
体、曲线和点云等。
用户可以使用OpenCASCADE创建复杂的几何模型,并进行几何运算和修改。
2.高效的图形渲染:OpenCASCADE提供了高效的图形渲染引擎,支持实时渲染
和离线渲染。
用户可以使用OpenCASCADE创建高质量的渲染图像和动画。
3.跨平台性:OpenCASCADE可以在多种操作系统上运行,包括Windows、Linux
和Mac OS等。
这使得用户可以在不同的平台上使用OpenCASCADE进行开发和测试。
4.灵活的API接口:OpenCASCADE提供了灵活的API接口,支持多种编程语
言,包括C++、Python和Java等。
这使得用户可以根据自己的需求选择不同的编程语言进行开发。
5.社区支持和文档:OpenCASCADE有一个活跃的开源社区,提供技术支持和讨
论。
此外,OpenCASCADE还提供了详细的文档和教程,帮助用户快速上手和使用。
总的来说,OpenCASCADE是一个功能强大的几何建模库,广泛应用于CAD、CAM、CAE和图形渲染等领域。
通过其广泛的几何建模能力、高效的图形渲染、跨平台性、灵活的API接口和社区支持,OpenCASCADE可以帮助用户快速开发出高质量的几何建模和图形渲染应用程序。
opencascade中文手册
opencascade中文手册OpenCASCADE是一个开源的CAD开发工具包,它提供了一系列用于创建、编辑和分析几何实体的工具和算法。
在本手册中,我们将详细介绍OpenCASCADE的各种功能和使用方法。
1. OpenCASCADE的概述OpenCASCADE是一个用于CAD应用开发的工具包,它由一组C++类库组成,可以处理各种几何实体,如曲线、曲面、体实体等。
OpenCASCADE不仅提供了基本的几何操作,还提供了丰富的分析和编辑工具。
2. 几何实体的创建和编辑在OpenCASCADE中,可以通过一系列的操作来创建和编辑几何实体。
例如,可以使用线段、圆弧和曲线等基本几何元素来构造复杂的几何实体。
还可以对已有的几何实体进行平移、旋转和缩放等操作,以获取所需的形状。
3. 几何实体的分析OpenCASCADE提供了一系列用于几何实体分析的工具和算法。
例如,可以计算几何实体的长度、面积和体积等属性。
还可以检测几何实体之间的相交和包含关系,以及计算它们之间的距离和夹角等。
4. 几何实体的绘制和显示在OpenCASCADE中,可以使用绘图工具将几何实体绘制成图像进行显示。
可以选择不同的颜色和线型来绘制几何实体,以便更好地展示其形状和结构。
5. 几何实体的导入和导出OpenCASCADE支持与其他CAD软件的互操作性。
可以将OpenCASCADE中的几何实体导出为常见的CAD文件格式,如STEP和IGES等。
同样,也可以从这些文件格式中导入几何实体到OpenCASCADE中进行进一步的处理和分析。
6. OpenCASCADE的应用领域OpenCASCADE在各种领域中被广泛应用,如机械工程、航空航天、汽车设计等。
它提供了一系列强大的功能和工具,可用于创建复杂的几何模型,并进行各种分析和验证。
总结:本手册详细介绍了OpenCASCADE的各种功能和应用。
通过学习本手册,您将了解到OpenCASCADE的基本原理和使用方法,以及如何利用它来创建、编辑和分析几何实体。
pythonocc中文参考手册
PythonOCC(OpenCascade Community Edition)是一个基于Python的开源CAD/CAE/PLM软件开发评台,它提供了一系列功能强大的工具和库,可以帮助用户快速实现CAD(Computer-Aided Design,计算机辅助设计)、CAE(Computer-Aided Engineering,计算机辅助工程)、PLM(Product Lifecycle Management,产品生命周期管理)等相关领域的开发需求。
PythonOCC中文参考手册是PythonOCC的重要文档之一,它为用户提供了全面的PythonOCC相关信息,帮助用户更好地理解和应用PythonOCC。
一、PythonOCC简介PythonOCC是基于开源CAD内核OpenCascade的Python封装,它提供了一系列可以用于CAD/CAE/PLM软件开发的Python接口和工具。
PythonOCC的主要特点包括开源免费、功能强大、易于学习和使用等。
通过PythonOCC,用户可以利用Python语言的简单易用和OpenCascade内核的强大功能,快速开发出符合自身需求的CAD/CAE/PLM软件,为工程设计和制造领域的开发者提供了一个高效便捷的开发评台。
二、PythonOCC中文参考手册的重要性PythonOCC中文参考手册是PythonOCC的冠方文档,它包含了PythonOCC库的详细说明、使用方法、示例代码等。
PythonOCC中文参考手册的重要性主要体现在以下几个方面:1.为用户提供了全面的PythonOCC相关信息PythonOCC中文参考手册为用户提供了全面的PythonOCC相关信息,涵盖了PythonOCC库的所有内容和功能。
用户可以通过阅读PythonOCC中文参考手册,了解PythonOCC的各种功能和接口,并快速掌握如何使用PythonOCC进行CAD/CAE/PLM软件开发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章OCC体系结构和基本概念OCC是用面向对象方法设计的一个CAD基础平台(软件)。
为了能从整体上把握OCC的组织情况,也为了方便后续章节的讨论,本章将介绍OCC体系结构和几个基本概念。
1.1OCC体系结构1.1.1面向对象方法和面向对象的软件工程在介绍OCC体系结构之前,先介绍面向对象方法的概念和什么叫面向对象的软件工程。
在面向对象的方法出现以前,程序员都采用面向过程的程序设计方法,其中典型的是结构化程序设计。
这种设计的思路是:自顶向下、逐步求精。
其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构。
各模块间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。
其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象以及自顶向下、分而治之的方法,从而有效的将一个复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护[2]。
这种设计方法的致命缺点是:程序的可重用性差。
因为它把数据和处理数据的过程分离为相互独立的实体,当数据结构改变时,所有相关的处理过程都要进行相应的修改。
而面向对象的方法将数据及对数据的操作放在一起,作为一个相互依存、不可分离的整体——对象。
对同类型对象抽象出其共性,形成类。
类中的大多数数据,只能用本类的方法进行处理。
类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信[2]。
这样,程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障,实现了“高内聚”“低耦合”。
另外,继承与多态性可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。
面向对象的软件工程是面向对象方法在软件工程领域的全面应用。
它包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容[2]。
1.1.2OCC的体系结构整个OCC就是用面向对象方法设计出来的一个对象库。
之所以用面向对象方法而不是面向过程方法,是因为用面向对象方法有三个好处。
第一,由面向对象方法抽象的系统结构能映射到数据库结构中,很容易实现程序与数据结构的封装。
第二,面向对象方法从所处理的数据入手,以数据为中心来描述系统,数据相对于功能而言,具有更强的稳定性,这样设计出的系统模型往往能较好地映射问题域模型[3]。
第三,对象、类、继承性、多态性的引入使用,令面向对象的设计方法能更好地生产可重用的软件构件和解决软件的复杂性问题。
不过,面向对象的设计方法要求开发人员必须花很大精力去分析对象是什么,每个对象应该承担什么责任,所有这些对象怎样很好地合作以完成预定的目标。
这样做换来的好处是:提高了目标系统的可重用性,减少了生命周期后续阶段的工作量和可能犯的错误,提高了软件的可维护性[3]。
用面向对象方法和软件工程思想分析,整个OCC由五个模块组成,分别是基础类模块、建模数据模块、建模算法模块、可视化模块、数据交换模块和应用程序模块。
其中,建模数据模块主要提供二维和三维几何模型的数据结构,也称数据结构模块。
一个模块主要由一个或几个工具箱构成。
当然它也可以包含一些执行体和资源体等。
就结构上看,一个工具箱就是一个共享库(如.so或.dll类型的文件)。
每个工具箱由一个或几个包组成。
而每个包则由许多类组成,例如,一个几何包包含点类、线类和圆类等。
在同一个包中,不能含有相同名字的两个类。
使用类的时候,类名要以包名作前缀,如Geom_Circle。
图2.1简要说明了包的内容。
图2.1包的内容1.2基本概念1.2.1类和泛化1、类OCC是一个面向对象的软件,与所有面向对象的软件一样,其最基本的软件成分是类。
一个类就是一种数据类型的实现。
类有自己的行为(由它的函数提供的服务)和结构(类的数据结构——用来存储其数据)。
OCC中所有类按其实现方式可以分三种:普通类、推迟类和通用类。
普通类含有实例方法,可以被直接实例化。
而推迟类则不能被实例化。
推迟类的作用在于使一层类共同拥有一种给定的行为,而这些行为的发生取决于普通类(推迟类的派生类)的实现。
通过推迟类的创建,可以保证所有派生自同一推迟类的普通类拥有相同的继承行为。
在C++中,与推迟类等同的是抽象类。
至于通用类,它提供了一套处理其他数据类型的功能行为。
通用类的实例化需要为它的参数指定类型。
通用类的作用与C++中模板类的作用一样。
2、泛化这里所谓的泛化,主要是通过通用类的实现来获得的。
通用类分两步实现。
首先,对一个通用类进行声明以建立模型。
在CDL (CASCADE定义语言)中,通用类被声明为对不确定类型数据项的操作。
这里的数据项就是通用类中的形参。
对通用类的形参进行限制,就可以使形参类型成为普通类的子类。
要注意的是:声明一个通用类并没有创建一个新的类类型,而只是定义了一种适用于几个普通类的通用形式。
然后,赋予通用类型信息对该通用类进行实例化。
通用类被实例化时,它的形参类型由实参类型(基本类型或基本类)替代。
实例化结束后,就创建出一个新的类。
新类可以由用户在实例化声明中任意命名。
按惯例,通用类的实例名通常由通用类名和实参类型名组成。
至于通用类的名字,只需在其本身名字前添加一个前缀(该通用类所在包的名字)。
例2.1:class Array1OfReal instantiates Array1from TCollection(Real);这个声明位于TColStd包的一个CDL文件中。
它定义了一个新的类TColStd_Array1OfReal。
该类是通用类TCollection_Array1的一个实例,并且参数类型指定为实型。
从具有相同形参类型的相同通用类中,可以实例化出不止一个类。
这些实例化出来的类通过各自的实现来识别。
其实在C++中,它们已经不属于同一类了。
另外,我们不能从通用类中派生类。
在由通用类获得的泛化中,我们经常发现许多类由一个共同的通用类型联系着。
这种现象发生在一种基本结构供给迭代器的时候。
在这种情况下,有必要弄清一件事,那就是由相关通用类构成的团体的确用于同一对象类型的实例化。
为了使这个实例化过程成为一整体,可以将一些通用类声明为内嵌类。
这样的通用类就叫内嵌通用类。
一旦主通用类被实例化,它的内嵌类也将被实例化。
内嵌类的实例名由内嵌类名字和主通用类名字组成,通过“Of”连接。
例2.2:class MapOfReal instantiates Map from TCollection(Real,MapRealHasher);这个声明位于TColStd中。
它不仅定义了TColStd_MapOfReal类,也定义了TColStd_MapIteratorOfMapOfReal类(该类是通用类TCollection_Map的内嵌类MapIterator的一个实例)。
内嵌类的实例独立于主类的实例,而决非绑定于它。
作为内嵌类,即使它们本身不是通用类,但是内嵌于通用类,它们也是通用的。
1.2.2数据类型的分类数据类型是作为类被实现的。
类不仅定义了它的数据结构和基于它的实例的方法,也声明了该实例的处理方式。
依据处理方式(见图2.2)的不同,OCC中所有数据类型可分为两大类:通过句柄(或引用)处理的数据类型和通过值处理的数据类型。
一个通过值处理的类型变量包含自己的实例;而一个通过句柄处理的类型变量包含一个实例的引用。
通过值处理的类型首先有基本类型,如布尔类型、字符型、整型、实型等。
通过句柄处理的类型变量,如果它不指向任何对象,那我们就说它是空的。
要引用一个对象,我们就得用它的一个构造函数实例化该对象,如例2.3。
例2.3:Handle(myClass)m=new myClass;在OCC中,句柄是一些特殊类,它们以引用的方式对动态存储对象进行安全处理。
句柄提供了一种引用计算机制,通过这种机制,当对象不被引用时,可以自动析构对象。
图2.2数据类型的两种处理方式1.2.3持久化和数据模式数据模式是应用程序用来存储数据的一种结构,由一些持久类构成。
一个对象若可以被永久存储,则是持久的。
持久对象可以被它的创建程序或其它程序在以后的时间里再次使用。
要想使一个对象在CDL中是持久的,必须声明它的类型继承自Standard_Persistent类或其派生类。
所有继承自Standard_Persistent类的类都是通过引用处理的。
对于由Standard_Storable类派生出的所有类,它们的实例(对象)是不能被单独存储的,但是可以作为持久对象的区域被存储。
所有继承自Standard_Storable 类的类,其对象都是通过值处理的。
1.3本章小结本章用面向对象方法和软件工程思想从整体上分析了OCC的体系结构。
整个OCC包含五个模块;模块中包含工具箱;工具箱中包含包;包中包含类;类是OCC软件的最基本要素。
本章还介绍了OCC的几个基本概念:类、泛化、数据类型的分类、持久化和数据模式。
与C++类的命名不同,OCC有自己的命名方法。
OCC中类分为普通类、推迟类和通用类三种,分别对应C++中的具体类、抽象类和模板类。
OCC 的数据可以分为句柄处理类型和值处理类型两种。
OCC的持久化和数据模式与一般软件的原理相同,不同的是:为了使对象持久化,需要声明该对象是由Standard_Persistent类或其派生类派生的。
第2章基础类分析顾名思义,基础类是OCC的基石。
它提供了大量的通用服务,如自动动态内存管理(通过句柄对对象进行处理)、集合容器、异常处理、通过向下抛掷和创建插件程序而获得的泛化等。
因此,本章将先对OCC的基础类模块进行概述,然后论述其中几个重点部分,如数据类型、集合容器等。
2.1基础类概述基础类包括根类组件、串类组件、集合容器组件、标准对象的集合容器组件、向量和矩阵类组件、基本几何类型组件、常用数学算法组件、异常类组件、数量类组件和应用程序服务组件。
1、根类组件根类是基本的数据类型和类,其它所有类都是依此而建立的。
它提供以下类型和类:(1)基本类型,如Boolean(布尔类型)、Character(字符型)、Integer(整型)或者Real(实型)等。
(2)动态对象的安全处理,以确保那些不再被引用的对象能被及时删除(详见Standard_Transient类)。
(3)可设置的内存优化管理器。
它能改善那些经常使用动态对象的程序性能。
(4)run-time类型信息扩展机制。
它使得复杂程序的创建变得更为简易。
(5)异常管理。
(6)C++各种流的封装。
根类主要在Standard和MMgt两个包中实现。
2、串类组件串类用来处理动态大小的ASCII和Unicode字符序列,可以通过句柄处理,因此也可以被共享。