kaiyun官方注册
您所在的位置: 首页> 显示光电> 设计应用> 基于ObjectARX的实体建模技术与应用
基于ObjectARX的实体建模技术与应用
2015年微型机与应用第10期
王 博1,2,程耀东3,朱奕蓓3,杨 军4
(1.兰州交通大学 测绘与地理信息学院,甘肃 兰州 730070; 2.甘肃省地理国情监测工程实验室,甘肃 兰州 730070; 3.兰州交通大学 甘肃省道路桥梁与地下工程重点实验室,甘肃 兰州 730070; 4.兰州交通大学 电子与信息工程学院,甘肃 兰州 730070)
摘要:三维实体模型是建立三维可视化信息系统的基础,通过对几何造型及图形处理基本理论和方法的研究,基于构造实体几何法的理论,对ObjectARX工具中三维图形接口和实体造型方法进行了探讨,用Visual C++ 和ObjectARX工具进行二次开发,实现了三维实体自动建模、图形变换和布尔运算等操作方法,并以桥梁结构为例进行了的参数化建模,为桥梁信息化平台的建设提供素材。
Abstract:
Key words :

摘 要: 三维实体模型是建立三维可视化信息系统的基础,通过对几何造型及图形处理基本理论和方法的研究,基于构造实体几何法的理论,对ObjectARX工具中三维图形接口和实体造型方法进行了探讨,用Visual C++ 和ObjectARX工具进行二次开发,实现了三维实体自动建模、图形变换和布尔运算等操作方法,并以桥梁结构为例进行了的参数化建模,为桥梁信息化平台的建设提供素材。

关键词计算机应用实体建模ObjectARX开发工具;图形变换;布尔运算

0 引言

  几何造型的基本理论和方法自20世纪70年代开始创立,经过几十年的发展和研究,现已广泛地应用在土木建筑、动画制作、人体造型等领域的三维设计和立体图形显示。它是计算机及其图形工具描述物体形状、设计几何形体、模拟物体动态处理过程的一门综合技术。几何造型主要包括曲面造型、实体造型、特征造型等[1]。

  参考文献[2-4]对OpenGL建模技术进行了研究,参考文献[5-8]对三维建模技术、桥梁设计及可视化进行了研究。本文通过对实体模型构造方法的研究,探讨工程物的参数化建模、图形变换、集合运算等方法,运用Visual C++2005语言和ObjectARX开发工具包,对AutoCAD进行二次开发,建立实体图形数据库接口,实现工程物的参数化自动建模,为三维可视化和信息化平台的建立奠定图形及数据基础[9]。

1 基于ObjectARX的实体构造方法

  构造实体几何法(Constructive Solid Geometry,CSG)是当前许多CAD/CAM系统采用的表示三维形体的一种方法[10]。CSG用系统定义的简单几何形体及正则集合运算,可构造出复杂实体。其基本思想是:一个较复杂三维形体可以通过一些基本形体的并、交、差集等集合运算来正确表示。

 1.1 基本体造型方法

  在ObjectARX中,三维实体属于AcDb3dSolid类对象,对于一个几何实体,AcDb3dSolid实体是一个容器和接口,通过AcDb3dSolid类的成员函数可以生成多种基本实体,通过布尔运算可生成复杂的组合体[11]。生成三维基本体的方法如下:

  (1)用AcDb3dSolid类创建一个容器对象:

  AcDb3dSolid p3dObj;

  AcDb3dSolid*p3dObj=new AcDb3dSolid;

  (2)建立基本体对象的一般形式:

  指向AcDb3dSolid类对象的指针->创建基本三维实体对象成员函数;

  如创建长方体的方法为:

  p3dObj->createBox(xLen,yLen,zLen);

  (3)将三维实体用AddEntityToDbs()数据库接口写入当前图形数据库中。

 1.2 由二维对象用推移表示法创建三维实体

  将物体A沿空间一条轨迹P推移时,A的轨迹定义了一个新的物体B,则物体B可以由物体A与轨迹P共同表示,这种方法称为推移表示法。

  除了用AcDb3dSolid类的成员函数创建基本体外,也可在二维封闭图形的基础上,通过指定高度、路径用推移法创建立体,或绕轴旋转封闭区域生成三维实体。

  1.2.1 按指定的高度拉伸立体的方法

  若将一个平面区域沿着垂直于该平面的直线段推移得到一个柱体,称为平移扫掠,也叫拉伸。这种方法可用于生成棱柱、圆柱等立体,如桥梁的墩台基础、桩柱及其他等截面结构。由平面区域拉伸生成三维立体的AcDb3dSolid类成员函数为:

  extrude(const AcDbRegion*pRegion,double height,double taper);

  其中,pRegion为面域;height为推移高度;当沿高度推移时,参数taper为0,则为柱体,非零时沿高度为呈线性递减截面。

  1.2.2 按指定路径扫掠形成立体

  如果平面区域沿任意曲线推移,则称为扫掠。这种方法将二维平面区域沿轨迹形成等截面实体,可应用于形成等截面梁体、拱桥和钢结构杆件等。注意,在路径和实体创建后,要分别将对象添加到图形数据库中。

2 三维实体的图形变换和布尔运算

  2.1 基于ObjectARX的三维实体图形变换方法

  复杂工程物是由简单体通过叠加、穿孔、截切等方式构成的,而由AcDb3dSolid类的成员函数形成简单体的质心在WCS坐标的原点,所以,要用图形变换方法,根据变换方式和顺序形成变换矩阵,从而将立体变换到复杂体中确定的空间位置,然后用布尔运算形成复杂体。

  在ObjectARX中,图形变换的主要方式和变换矩阵形成方法如下:

  (1)平移变换:mat_move.setCoordSystem(moveBy,x,y,z)。

  (2)比例变换:mat_scale.setToScaling(scale,moveBy)。

  (3)旋转变换:mat_rotate.setToRotation(α,y,moveBy)。

  (4)镜像变换:是以某坐标面为对称面对实体进行对称变换。

  (5)由变换矩阵进行实体模型变换。

  确定图形变换矩阵后,即可对类AcDb3dSolid的成员函数创建的实体进行变换,再将实体添加到图形数据库的块表中。实现立体变换的方法为:

  transformBy(const AcGeMatrix3d& xform);

 2.2 复杂三维实体的布尔运算

  由基本体函数或二维对象拉伸、扫掠、旋转只能生成一些单个的简单体,由简单体形成复杂形体必须通过布尔运算才能实现。布尔运算有并(UNION)、交(SUBTRACT)、差(INTERSECTION)3种[12]。

  在ObjectARX的编程中,对实体进行布尔运算使用AcDb3dSolid类的成员函数:

  booleanOper(AcDb::BooloperType operation,AcDb3dSolid*pSolid);

  其中,布尔运算类型operation取值为AcDb::kBoomlUnite(并集)、AcDb::kBoolIntersect(交集)和AcDb::kBoolSubtract(差集);pSolid表示另一个参与布尔运算的实体的指针。

3 拱桥建模实例

001.jpg

  图1(a)为纵梁和横梁断面图,图1(b)为拱形桥梁上部结构立体图,拱形为钢管拱,直径800 mm,由设计图可获取各部分结构的截面定形尺寸参数,拱桥的三维建模方法如下。

  (1)拱形立体建模

  拱形结构用扫掠方法进行建模。方法如下:

  ①扫掠对象定义:拱截面为圆,则扫掠对象定义为:AcDbCircle*pCirc=new AcDbCircle(center,normal,800);

  ②由封闭边界生成面域:封闭边界是圆,形成面域的方法见1.2.1。

  ③生成扫掠路径:拱形建模时,圆截面的扫掠路径为拱轴线,采用AcGePoint3dArray类定义三维坐标数组pt3d,存储拱轴线各顶点的坐标,并用setLogicalLength(n)成员函数定义数组长度,然后对数组赋值,用AcDb3dPolyline类成员函数AcDb3dPolyline()创建空间扫掠路径。

  ④创建三维实体。先创建实体的容器和接口,再通过类的成员函数extrudeAlongPath()生成三维实体,然后将实体添加到图形数据库中,最后用delete删除面域指针pRegion。

  (2)梁体结构建模

  梁体包括纵梁、端横梁、中间横梁及桥面板等结构,梁体拉伸方法如下:

  ①如图1(a)所示,分别创建纵梁与横梁二维多段线封闭图形。

  ②将梁体截面图形生成面域,沿Z轴方向拉伸立体长度。

  ③采用旋转、平移等变换将立体放在指定位置。

  ④用布尔运算的并集形成桥梁整体,如图1(b)所示。

  另外,若梁截面沿长度方向为非线性变化的变截面连续梁时,可采用放样的方法形成梁体模型。

4 结论

  计算机技术和几何造型理论的发展,推动了设计领域由二维向三维的转变,为三维可视化和信息化提供了立体模型和数据信息。研究构造实体几何造型理论和方法,运用Visual C++语言和ObjectARX开发工具包,在AutoCAD环境下探讨参数化自动建模方法,可为工程物快速建模提供便捷途径。工程物三维模型的建立、设计参数和属性信息的存储,为工程技术人员提供了直观研究设计方案、工程结构的平台,也为工程物三维可视化信息系统的建立奠定了基础。本文的立体建模和ObjectARX三维开发技术可给相关研究人员提供建模新思路。

参考文献

  [1] 王汝传,黄海平,林巧明.计算机图形学教程(第2版)[M].北京:高等教育出版社,2009.

  [2] 张志华,程耀东,张新秀.基于OpenGL和MFC的三维建模教学实践与改革[J].微型机与应用,2014,33(3):88-90.

  [3] 马林,程耀东,朱宗喜,等.基于OpenGL的TIN构建方法研究[J].微型机与应用,2014,33(14):42-44.

  [4] 扈春霞,王子茹.基于OpenGL的参数化斜拉桥三维可视化的研究[J].江汉大学学报(自然科学版),2008,36(2):47-49.

  [5] 马林,李兴田.三维可视化方法研究与应用[J].兰州交通大学学报,2013,32(6):110-113.

  [6] 刘榕,刘海波,龙海滨.山店江大桥高墩连续刚构桥设计与关键技术[J].公路工程,2013,38(2):125-128,136.

  [7] 陆铁坚,蒋友良,余志武.桥梁三维造型及其视景仿真[J].中南大学学报(自然科学版),2005,36(3):501-505.

  [8] 毕硕本,张国建,侯荣涛,等.三维建模技术及实现方法对比研究[J].武汉理工大学学报,2010,32(16):26-30,32.

  [9] 李世国.AutoCAD高级开发技术-ARX编程及应用[M].北京:机械工业出版社,1999.

  [10] 程耀东,赵建昌,徐军.图形数据库应用技术研究[J].工程图学学报,2006,27(1):143-148.

  [11] 程耀东,徐斐,董明才.基于ObjectARX 2007的地质断面自动填充方法[J].物探与化探,2010,34(5):681-685.

  [12] 程耀东,张丽萍,韩进,等.计算机绘图与二次开发方法[M].兰州:甘肃科学技术出版社,2009.


此内容为AET网站原创,未经授权禁止转载。
Baidu
map