您当前的位置:首页 > 计算机论文>计算机应用论文

ObjectARX环境下的结构建模系统的开发

2015-07-09 11:00 来源:学术参考网 作者:未知

摘要  本文介绍了AutoCAD提供的ObjectARX开发环境,阐述了利用ObjectARX开发一种新的结构建模系统的思路及方法,即直接利用绘图工具进行结构信息输入。输入的结构信息可以生成为不同的数据文件,从而大大提高工作效率。

关键词结构建模 ObjectARX 面向对象

前言

  近年来,随着计算机技术的飞速发展,绝大多数的工程设计人员已经采用计算机来进行建筑结构的分析和设计。在实际应用中,有众多的结构分析软件可供选择,如ANSYS、SAP2000等。这些软件虽然都能较好地完成分析任务,但它们基本上都是按传统的编程方法实现的,其前后处理功能还有待进一步改进。结构分析软件中的前后处理部分通常是用户耗时最多的阶段,尤其是结构建模部分更是关键,它直接影响着软件的应用效率。因此,对结构建模这一功能模块进行专门的研究和开发,使其拥有更强的功能和更高的效率,成为了建筑结构设计及软件开发人员的重点课题。
  利用纯Windows风格的AutoCAD2000提供的开发环境ObjectARX来进行结构建模系统的研制,可以充分利用面向对象编程技术的优势,最大限度地提高系统资源的利用率和软件系统的功能,而且也符合广大工程设计人员的使用习惯,有助于设计人员快速地掌握、使用新开发的结构建模系统,提高工作效率。

1 面向对象的开发环境ObjectARX

  AutoCAD是目前在Windows 98/2000/NT环境下应用最广泛、使用人数最多的CAD软件,它是广大工程设计人员最为熟悉的工作平台。AutoCAD2000除了提供一般通用的CAD功能,如绘图、编辑等,还为用户提供了不同的开发环境,如AutoLISP、VisualLISP、ObjectARX等。其中,ObjectARX是一种特定的C++编程环境,它是在AutoCAD R13使用的ARX(AutoCAD Run-time eXtention)的基础上发展起来的第二代面向对象的编程环境。ObjectARX应用程序本质上是Windows DLL程序,而AutoCAD本身则是一个典型的Windows程序,因此ObjectARX应用程序与AutoCAD、Windows之间均采用Windows的消息传递机制直接通信。ObjectARX程序以C++为基本开发语言,具有面向对象编程方式的数据可封装性、可继承性及多态性等特点。用其开发的CAD软件具有模块性好、独立性强、连接简单、使用方便、内部功能高效实用等优点,并且支持MFC(Microsoft Fundation Class),能简洁并高效地实现许多复杂功能。

2结构建模系统的设计思想

  为了配合工程设计人员的使用习惯,本文的设计思想是使设计人员在使用CAD命令绘制图形的同时,对图形对象进行处理,使绘制所得的结构模型文件中既有结构几何信息,又包含荷载信息、约束信息等,并可输出为用户所需的数据文件。
  基于这种思想,采用面向对象的方法进行开发是最合适的选择。所谓面向对象,其指导思想是按人们通常的思维方式建立问题域模型,设计出尽可能自然地表现求解方法的软件。为此,必须尽量直接表现组成问题域的事物及事物间的相互联系的概念,建立适合人们思维方式的描述模式。当前,计算机技术正朝着分布式处理、并行处理、智能化、网络化的方向发展,而面向对象技术即是实施这些目标的关键技术之一。现在,面向对象程序设计的思想和工具已经在建筑结构程序设计中得到广泛应用。
  一个工程的结构部分主要由梁、柱等构件组成,通过对其基本信息的研究,可以归纳总结出各种构件的特征信息,然后分别对其进行整理,并最终把它们赋予矢量图形的图素中。在程序运行过程中,根据图形信息查找到相应的特征信息,从而达到绘图与建模同步完成的目的。

3结构建模系统的开发方法

  在ObjectARX环境下进行建模系统的开发,其步骤如图1所示。
  为了便于分类管理,在创建结构模型之前应使系统自动进行初始化,如对各种不同的构件分配不同的线形、颜色及层名等。利用ObjectARX包含的AcEd、AcDb类库中的相关函数可以简便地完成这些功能要求,也可以使用具有相同功能的全局函数来实现,如acdbEntMod()全局函数就可以用来修改一个实体所在的层。
  在进行结构几何模型的绘制时,系统允许用户直接使用AutoCAD的绘图、编辑命令,如line、arc等进行绘制输入工作,充分发挥CAD实用、快速的绘图功能。此外,ObjectARX还为用户提供了模块化绘图的功能,使用户可以将不同的多个命令集合在很少的自定义命令中,达到一次输入后一次绘制完成的效果。用户可以根据自身的需要,在接口函数中声明自定义命令名称,如“zhulie”,并指明相对应的处理函数,如“draw_zhulie()”,然后再使用调用命令函数acedCommand()或acedCmd()完成处理函数的具体编写工作。

建模系统初始化

图 1 结构建模系统的开发流程

  由于各种结构构件既包括自身的实体数据,又包括附加的结构信息,为了使系统能准确地识别、管理这些数据,必须对不同的构件类型分别进行预定义,以生成不同的数据结构。例如,对于柱构件,可以在程序中进行如下的定义

static struct column{

ads_real col_x; //柱中心点x坐标

ads_real col_y; //柱中心点y坐标

ads_real width; //柱截面宽度

ads_real height; //柱截面高度

int col_num; //柱号

} column[500]

  各种构件均可仿照这种形式进行定义。由于构件的实体信息各有差异,因此各自的定义也互不相同,使得在调入模型文件或输出数据文件时程序可以准确无误地对构件种类、数据进行定位。
  在系统中可以以对话框的方式建立输入输出模块。在ObjectARX中允许使用MFC风格的对话框,这是一种纯Windows风格的对话框,可以担负起大部分的输入输出工作。例如,开发者可以创建一个“创建柱单元”的菜单命令,使其激活拾取图元的内部命令。在用户从屏幕上选择了一个有效实体后,系统弹出一个对话框,供用户输入柱单元的相关信息。对话框中的各个编辑框对应于不同的变量,对对话框进行输入后,系统会将所获取的数据相应于预定义的结构变量分别进行存储,形成相关的数据库。
  对单元附加信息的输入,包括材料信息、荷载信息、约束信息等。输入方式都可以采用对话框的形式,便于数据的统一管理。这些可以输出为数据文件的附加信息均称为扩展数据。在同一个实体上可对应多个扩展数据。在多重数据中按照扩展图元数据组的方式找出所需组值,即可编辑、更新扩展数据。所以,简单地说,利用面向对象的方式来进行结构建模,就是在CAD中生成的图元上附加相应的扩展数据。按照这种思想分别定制各种构件的信息输入模块,即可使用户方便地建立起一个含有多重信息的图形系统。在程序中可通过调用acdbEntGetX()函数来获取注册的扩展数据。acdbEntGetX()函数类似于实体获取函数acdbEntGet(),但acdbEntGet()返回的只是实体的定义数据,而acdbEntGetX()函数既可返回定义数据,又可返回扩展数据。返回的扩展数据可以调用acdbEntMod()函数进行相关的编辑和操作。另外,通过在传送给acdbEntMake()的实体链表中定义扩展数据,也可达到创建扩展数据的目的,关键在于开发者根据实际情况,在保证程序运行效率的宗旨下,选择合适的途径进行编程。
  在对所形成的模型文件进行读取或输出时,可利用ObjectARX提供的对扩展数据进行操作的函数来编写程序。对实体的扩展数据进行编辑操作,其流程如图2。针对用户的不同要求,可对提取出的相关数据赋予不同的输出格式,以配合后续的计算需要。

选择实体

查找图元组码



图 2 扩展数据操作流程

4系统的主要特点

  依照以上的方法开发的建模系统,由于采用ObjectARX作为开发环境,因此应用程序与AutoCAD是无缝连接的,具有以下一些特点

■ 允许用户使用熟悉的AutoCAD进行结构的模型图元的输入,提高结构信息输入的效率和准确性。
■ 系统可对输入的图形及数据进行分类管理,自动完成各对象的层、线形等的配置。
■ 在运行过程中,程序可实时地将多种结构信息数据依据不同的基本实体进行存储,并且最终可生成不同格式的数据文件。
■ 系统的界面友好,引入了菜单、对话框等交互方式,直观、便捷,使用者一目了然,方便省时。
  利用先进、高效的ObjectARX开发环境,对结构建模系统进行开发定制,可以充分调用系统的内部资源,较老式的AutoLISP、ADS程序而言,运行速度更快、效率更高,可以解决设计人员使用绘图工具进行结构建模和结构分析工作的技术问题,实现了绘图与形成数据文件一体化的功能,具有广泛的推广价值。

参考文献

1.任爱珠,朱伟,用图形识别技术实现有限元建模自动化,工程力学,1995
2.丘国雄,等,我国建筑工程领域结构CAD软件的质量和标准化问题,工程设计CAD与智能建筑,1999.7
3.Charles McAuley,Programming AutoCAD 2000 Using ObjectARX,机械工业出版社,2000
4.The AutoCAD R14 Customization Guide,Autodesk.inc,1997
5.Kart Hanpe,Jim Boyce,AutoCAD应用开发工具大全,清华大学出版社,1994.9

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页