Open Cascade建模示例 下载本文

内容发布更新时间 : 2024/5/20 3:53:52星期一 下面是文章的全部内容请认真阅读。

1 概述 Open Cascade来创建一个3D模型,目的并不是介绍所有的Open Cascade类,而是对Open Cascade 有个基本了解; 本示例讲述如何使用1.1 基本要求 要求有使用C++的经验。 从编程角度来说,Open Cascade提供了高效的模型库、方法和函数,来进行C++开发。利用这些资源,可以开发出稳定的应用程序。 1.2项目 在这里利用3D几何模型工具提供的类创建一个瓶子,如下图所示: 在这里,会将每一步的在一个函数里生成。函数的完整的源代码在程序中,有一个MakeBottle函数。这个函数在Tutorial/src/MakeBottle.cxx文件中。 1.3 项目说明 首先,定义瓶子的一些参数: 内容 瓶高 瓶宽 瓶厚 参数值 70mm 50mm 30mm 现在,假定世界笛卡尔直角坐标系的原点位于瓶子底部的中心。 参数名称 MyHeight MyWidth MyThickness

创建这个模型需要四步:

? 创建瓶子的外形; ? 创建瓶子体;

? 创建瓶颈上的螺纹; ? 合并生成瓶子;

2 创建瓶子外形

2.1 定义关键点

为了创建瓶子的外型,第一步是生成特征点,这些点的坐标位于

XOY平面

内,如下图所示,用这些点来生成瓶子的几何外形:

Open Cascade中,有两个类来描述3D点的X,Y,Z坐标。

? gp_Pnt类

? 通过句柄分配一个临时的

Geom_CartesianPoint类;

句柄就是可以自动分配内存的指针类型。那么到底在应用程序中哪种类合适呢?一般的做法是:

? gp_Pnt是按值传递,和其它对象一样,有

固定的生命周期;

? Geom_CartesianPoint是按句柄分配,可以

多次引用,有长的生命周期;

由于现在定义的这些点只是在生成瓶子的外形时有用,生命周期有限,因此,选择使用gp_Pnt类。

定义一个gp_Pnt对象,只要定义点在世界坐标系的X,Y,Z坐标值就可以了。 gp_Pnt aPnt1(-myWidth / 2. , 0 , 0); gp_Pnt aPnt2(-myWidth / 2. , -myThickness / 4. , 0); gp_Pnt aPnt3(0 , -myThickness / 2. , 0); gp_Pnt aPnt4(myWidth / 2. , -myThickness / 4. , 0); gp_Pnt aPnt5(myWidth / 2. , 0 , 0); 如果使用Geom_CartesianPoint类,语法会有点不同,所有对象按句柄分配,需要使用标准C++的new关键字,如下所示: Handle(Geom_CartesianPoint) aPnt1 = new Geom_CartesianPoint(-myWidth / 2. , 0 , 0); 一旦分配了对象,就可以使用它们的方法。再重复一下,语法和C++一样,比如,为了得到一个点的X坐标: gp_Pnt aPnt1(0,0,0); Handle(Geom_CartesianPoint) aPnt2 = new Geom_CartesianPoint(0 , 0 , 0); Standard_Real xValue1 = aPnt1.X(); Standard_Real xValue2 = aPnt2->X(); 2.2 外形轮廓:定义几何体 利用前面定义的点,可以计算瓶子几何外形的一部分。如下图所示,它由两个线段和一个圆弧组成。 myImageBottle08 为了创建这个实体,需要定义一个数据结构,来实现3D几何对象,可以在Open Cascade 的Geom开发包中找到。 一个Open Cascade开发包是一组类。这一组类完成的功能相同,或者结构类似,Open Cascade类的前面的名称和包的名称一样,比如,Geom_Line类和