随着WINDOWS操作系统的出现,DOS操作系统已渐渐退出历史舞台,基于DOS操作系统的应用软件也自然需要进行一次历史性的更新换代。GDCAD也不例外地升级到GDCAD FOR WINDOWS95(下称GDCAD95),它可以在WINDOWS95,WINDOWS98及以后版本操作系统下运行。
GDCAD95与GDCAD FOR DOS(下称GDCADDOS)比较起来,在主体模块(如前处理、计算模块及绘图模块等)上面无太多变化,其主要改变在用户界面上,充分体现了与WINDOWS操作系统的和谐统一,另一个特点即是WINDOWS的多任务特色,系统在进行结构计算的同时,用户仍然可以利用它来处理其它事务,而不象DOS系统的独占模式那样,系统在计算时,你只有消极等待。另外的改进是GDCAD95作为一个独立完善的应用软件所应具备的一些特征,如安装与卸载。
(一)GDCAD95界面特色
1. 安装与卸载
GDCAD95的安装与卸载非常简单方便,点击执行SETUP.EXE文件,随后选择回答一些简单的问题,程序将自动安装,完成后,桌面上自动产生一个快捷方式图标,如图1所示。
GDCAD95的卸载与WINDOWS95系统下的其它应用程序一样,在“控制面板”中选择执行“添加/删除程序”图标,在其列表中会有“GDCAD-A”(或“GDCAD-B”)项,双击该项
后将自动卸载。
图1
2. 主控界面
点击桌面上GDCAD95的快捷方式图标,或运行GDCAD95所安装目录下的GDCAD.EXE文件,即可启动GDCAD95,首先出现的是封面,稍等片刻,或者直接点击封面,则弹出如图2所示的GDCAD95的主控菜单,有〖任务栏〗,〖零部件规格〗,〖图形前处理〗,〖计算设计〗,〖绘图〗五项。
图2
首先介绍“任务”这个新的概念,对GDCADDOS而言,无论是哪个项目的计算,中间结果都放在当前目录及\DAT目录下,因此,就可能有数据覆盖的情况出现,数据的混乱将引起计算结果的错误。故在GDCAD95版引入“任务卡”这个概念。当进行某个项目的计算时,首先须建立任务卡,确定任务名称,GDCAD95按提示自动建立一个以任务名为名称的目录,随后的任何计算内容都将保存在该目录下,从而避免了混乱。用户可以以文件方式存下任务卡内的信息和本次计算的进度,以备下次的复算,该文件名可取与任务名同名,也可不同,但扩展名必须为GDC。
关于“任务”的操作有〖填任务卡〗,〖调任务卡〗,〖存任务卡〗,及〖退出GDCAD〗四项。
以下图3是〖填任务卡〗的对话框。
图3
其它几项菜单与GDCADDOS基本上内容一致,但界面已全部Windows化了。
图4
(二)主体模块的改进
1. 塔架形结构
GDCADDOS仅考虑了屋盖结构,但实际上,网架网壳在高耸结构(如微波发射塔)以及特殊的标志性建筑物中已广泛采用,因此GDCAD95中增加了这方面的内容。不仅在图形处理,坐标变换等方面作了补充,而且增加了《高耸结构规范》内容。图4是一个微波发射塔的工程实例。
2. 弹性支座
GDCADDOS对弹性支座需填写三向刚度,因此需要另外进行计算,而GDCAD95可直接填写柱子参数,先填柱阶数,然后由下而上填写柱子截面形式及材料,柱子截面形式有“矩形”,“工字形”,“双肢柱”及“圆形”四种,针对各种截面分别给出其截面参数即可。
(三)施工图改进
对某些形状复杂的结构而言,若不作处理,其平面布置图(安装图)很难表示清楚,因为根据投影,很多构件将会重叠,在GDCAD95中,用户可以根据自己的意愿来出图,例如图4所示的拼合结构,用户可以将其拆分成几个部分绘制。
一、 基于AutoCAD的图形前处理模式探讨
随着计算机硬软件技术的不断发展,各类系统及应用软件也都将文本编辑、文本应答的黑白界面更新为色彩缤纷的图形界面。工程CAD软件当然也不例外。这部分开发内容称为“前后处理”。到目前为止,针对它已有两种不同的开发模式。第一种,将所开发的软件需要的图形平台作为该项目的一个模块,该模块从软件所需要的基本图形元素开始做起,完成图形操作平台需要的基本功能。另一种模式是二次开发,即将已有的图形系统作为开发平台,利用其提供的二次开发接口来达到前后处理的目的。
(一)两种开发模式的比较
1. 一体性、连贯性
自己开发图形平台,有着较好的一体性、连贯性,研制者从基本图素的编制开始都本着为整个该软件服务的目的,因此,这样的图形平台非常简洁。相反,作为提供二次开发的图形平台,它本来的目的并非只为某个软件的前后处理服务,而是作为通用软件。所以图形功能完善,体积庞大。如果该平台不是用户的常用软件,这种模式就失去了选择的前提。
2. 亲和力
如果各种工程CAD软件都有自己特色的图形平台,那么作为一般用户需要熟悉的太多了,更何况这些平台中由于开发者的想法不同而可能提供相左的模式。因此,对于自己开发图形平台,让用户由不熟悉到熟悉将有一段过程。而如果选择一般用户都很熟悉的图形平台作为自己二次开发的平台,将对用户有很大的亲和力,从一开始就消除了用户的陌生感。
3. 复杂性、系统稳定性
与二次开发相比,自己开发图形平台的复杂程度要高,因为不仅需要生成基本图素,而且有关视图变换功能,图形实体的诸如“复制”、“移动”、“旋转”、“放大缩小”、“删除”等一般功能都应具备,否则将给用户带来不方便。而对于二次开发,一般的图形功能,平台都已提供,开发者只要利用它们就行。另外,从系统的稳定性来讲,作为可提供二次开发的图形平台,其系统稳定性经过了很长时间检验。而自己开发的图形平台其不确定因素较多,因此,其本身也将随着整个软件系统的应用而不断需要完善。
经常应用的二次开发平台是AutoCAD,而目前大部分独立开发的图形平台,在后处理阶段仍然进入AutoCAD,利用其提供的数据交换格式。因此,从另一个角度来看,对于前后处理模块,如果没有图形系统开发的经验,那么采用开发周期短,难度小,系统稳定性好的二次开发模式,将是一种明智的选择。
AutoCAD是Autodesk 公司开发的CAD市场的主流产品,尤其在微机领域,它几乎成了CAD的代名词。因此,选择AutoCAD作为二次开发的图形平台,在当前来说是毋庸置疑的。
(二)AutoCAD的二次开发手段及ObjectARX介绍
AutoCAD的成功发展与它提供完善的二次开发工具是不可分的,早期有AutoLISP,后来有ADS,DCL,ADS-RX,最近又有了ObjectARX,VBA,VisualLISP等。
在早期的AutoLISP和ADS编程环境中,数据库直接反映为当前的DWG文件,用户通过AutoCAD命令来操作其中的实体,但不知道数据库的内部结构。但在现在的面向对象的ObjectARX的环境下,AutoCAD的图形数据库被认为是一个对象管理器,开发者可以根据应用的需要添加和建立新的管理机制,并加入到这个体系中。也就是说开发者可以定义自己的实体,比如,以前我们是将AutoCAD的实体“LINE”通过“层”等控制手段来识别作为工程结构中的“梁”,而现在我们可以自己建立“梁”这个实体。
ObjectARX应用程序以C++为基本开发语言,具有面向对象编程方式的数据可封装性、可继承性及多态性等特点,用其开发的工程CAD软件具有模块性好,独立性强,连接简单,使用方便,内部功能高效实现以及代码可重用性强等优点,并且支持MFC(Microsoft fundation class)基本类库,能简洁高效地实现许多复杂功能。
1. ObjectARX与AutoLISP及ADS的比较
ObjectARX程序是Windows DLL程序,可与AutoLISP及ADS共同工作,但从效率和功能上讲,则远高于此二者。下面从两方面来比较。
(1) 通信及调用机制
AutoLISP完全包含在AutoCAD内部,对平台有一定的依赖性,但AutoLISP应用程序属外部进程,它与AutoCAD通过IPC(Interpress Communication进程间通信)进行通信。
ADS程序由ads_init()初始化,它与AutoCAD程序也不是直接通信,而是被动地无限循环地等待AutoLISP请求。ARX程序本质上是地道的Windows DLL程序,与AutoCAD,Windows之间均采用Windows消息传递机制直接通信。ARX程序通过调用acrxEntryPoint()函数建立与AutoCAD消息传递入口,可共享AutoCAD地址空间,建立对AutoCAD直接函数调用的动态链接库,简而言之,ARX与AutoCAD具有同等地位。
(2) 命令的注册与执行
AutoLISP命令由AutoLISP解释器逐行解释并请求AutoCAD执行。ADS命令由ads_defun()函数注册成为AutoLISP外部命令,作为AutoLISP外部函数由AutoLISP解释器装入、解释并请求AutoCAD执行。AutoCAD通过acrxEntrypoint()函数等调用ARX程序,该程序也是由一组命令组成,ARX命令通过acedRegCmd()宏负责注册,一经注册,即被添加到AutoCAD的原始命令集中,与AutoCAD本身固有的命令一样。
2. ObjectARX的基本类库以及在工程CAD软件中的应用
ObjectARX所提供的SDK(开发工具包)有以下几种类库:
(1) AcRx类库:该类库提供了系统级的类和C++的宏指令集,用于DLL应用程序的初始化连接及实时类的注册和标识。
(2) AcEd类库:该类库用于定义和注册新的内部命令。
(3) AcDb类库:该类库提供了可直接访问AutoCAD数据库数据结构的类,利用该类库提供的类,可以对已经存在的AutoCAD实体及对象进行查询修改等操作,也可创建新的数据库对象。
(4) AcGi类库:该类库提供了许多图形界面工具用来绘制AutoCAD的实体。
(5) AcGe类库:该类库可以被AcDb类所引用并提供诸如向量、点及转换矩阵等用于普通二维及三维的几何操作。
在工程CAD软件开发中,最常用的是AcDb类库。
前后处理的技术问题实际上是数据的存储、传输问题,在早期的二次开发中常用的方法是另外建立数据文件,这些数据与图形中实体的关联主要通过诸如坐标、图层等特性来识别,因此,在开发过程中,需要针对这些数据作特别的处理,尤其象软件断点问题,也即是,用户在软件运行到某个地方时退出了,或者由于停电、系统崩溃需要重新启动软件时,怎样从上次退出的地方接着开始?在ObjectARX环境下,可以充分利用类库提供的类来保存这些数据,例如利用“扩展数据词典”机制,多个应用程序可以附加数据到同一个对象上,象杆件的材料特性、截面特性以及荷载情况等都可以与该杆件的几何实体连在一起保存。可以利用“容器对象-词典”来保存诸如“基本风压”、“地震烈度”等基本参数。这样,几何信息已通过图形坐标反映,而附加信息也就可以用合适的方式保存在图形中,无需再去设计中间数据,所有的信息都保存在DWG文件中。
(三)工程CAD软件由MSDOS系统向Windows系统移植的一种简单模式
在MSDOS操作系统时代的早期,工程设计类软件比较重视数值计算和构件设计,而界面友好等要求是在随后几年才渐渐引起重视。因此,在Windows时代,工程CAD软件的重点应该是界面设计以及怎样快速将以前的计算设计模块无障碍地移植到新的编译环境中。经过几个项目的研制,我们摸索出一条捷径。
首先,已有的计算设计模块基本不改动(可以扩大其数组容量),只需在新的编译环境中重新编译连接即可,图形前后处理在AutoCAD平台下操作,总的界面控制调度可用VB来做,这是一种很好的编程环境,因其编程速度快而方法简单而广为采用。必要的话,可利用VB、VC及FORTRAN混合语言编程技术。我们开发的空间网架及穹顶网壳结构计算机辅助设计绘图系统GDCAD,平面钢桁架结构计算机辅助设计绘图系统HJCAD,焊接工字形钢吊车梁辅助设计绘图系统GDLCAD以及门式刚架结构计算机辅助设计绘图系统GJCAD等都是在这种模式基础上开发完成的。
参考文献
(1)左权胜,潘祥林,GDCAD软件的进展及冶金工业厂房屋盖中网架应用总结,第八界空间结构学术会议论文集,1997:80-85。
(2)ObjectARX Developer’s Guide 软件Help文档。