范文写作网 > 土木工程毕业论文 > > 基于铁路选线CAD系统的图形接口方法与交互技术
土木工程毕业论文

基于铁路选线CAD系统的图形接口方法与交互技术

摘要:摘要:运用Visual c++ 2005和0bjeetARX 2008开发工具,探讨图形实体的创建与实体属性的设置方法。 利用结果缓冲区、DXF接口方法和ObjectARX类函数,实现图形数据自动提取和图形交互功能。以此为基础开发的线路设计系统,在一些设计单位完成了多项线路工程设
关键词:基于,铁路,选线,CAD,系统,图形,接口,方法,交互,技术

道尔m1,苍天有泪同人,内蒙新闻网

  摘要:运用Visual c++ 2005和0bjeetARX 2008开发工具,探讨图形实体的创建与实体属性的设置方法。

  利用结果缓冲区、DXF接口方法和ObjectARX类函数,实现图形数据自动提取和图形交互功能。以此为基础开发的线路设计系统,在一些设计单位完成了多项线路工程设计,取得良好的经济效益。

  关键词:计算机辅助设计;铁路选线;ObjeetARX开发工具;图形交换文件

  随着计算机图形学理论和技术的迅猛发展,针对各行备业出现了多种计算机绘图和计算机辅助设计CAD(computer aided design)的软件和开发工具,为工程设计人员提供了现代化的设计手段,提高了设计效率和绘图质量,使设计图纸更加规范化。

  20世纪90年代利用AutoCAD等软件的交互式绘图,已经为工程技术和科技工作者绘图提供了很大的便利,但绘图速度和效率仍不能满足设计人员的要求。为此,利用面向对象的程序设计方法,采用绘图软件的开发工具包,开发人工智能和自动绘图的计算机辅助设计软件,已成为设计自动化的发展趋势。

  近年来,土木、建筑、机械制造与设计行业在计算机辅助设计方面的研究工作取得了重要成果。

  随着航测和遥感技术的发展,出现了航测地形图、遥感影像图及数字地面模型等数字和图像产品,为铁路选线设计自动化和可视化奠定了基础。本文基于AutoCAD 2008绘图平台和ObjectARX 2008开发工具,运用Visual c++ 2005语言,探讨铁路选线设计图形接口方法和交互技术,通过对AutoCAD图形数据库的操作,在前台进行线路的平、纵断面的交互设计,在后台自动获取并存储设计数据,最后调用设计数据自动绘制线路平面、纵断面设计图。这种铁路选线CAD系统的实现,可为设计部门提供实用、快捷、方便的现代化设计工具,大大提高设计效率和图面质量。

  1、图形接口方法

  基于Visual C++ 2005和ObjectARX的图形接口的建立是图形生成的基础。在线路设计图中包括几何属性和非几何属性,图形实体有直线、圆、圆弧及文字等,图形非几何属性有图层、颜色、线型等。所以,建立生成图形的基本图元和属性设置接口,是图形生成的前提。

  1.1 图形接口的建立

  1.1.1 结果缓冲区接口方法

  (1)结果缓冲区结构在AutoCAD中,实体数据描述表存储在结果缓冲区中,结果缓冲区的结构为:

  struct resbuf{struct resbuf rbnext;\\~向下一个结果缓冲区的指针变量short restype;\\用来指明resval值的类型union ads U val resval;\\“结果缓冲区”节点值的resval变量);resval变量是个同位union ads U val类型,成员变量有ads— real rreal,rpoint[3];short rint;charrstring等。结果缓冲区的restype字段,用来指明返回值resval的类型。ADS函数处理实体时,其返回结果缓冲区的restype字段常常是DXF(drawingexchange file)实体代码。

  (2)利用结果缓冲区创建实体的方法定义结果缓冲区结构:struct resbuf entlist;创建实体数据描述表:不同的实体数据描述表的参数不同,以下为直线、圆和文字的数据描述表的构建方法,其他实体的数据描述表也可依此方法建立?1.entlist— ads— buildlist(RTDXF0,“LINE”,10,S—tartp,11,endp,RTNONE);entlist= ads— buildlist(RTDXF0,“CIRCLE”,10,centerp,40,r,62,color,RTNONE);将实体描述表添加到结果缓冲区中:status—ads— — entmake(entlist);释放结果缓冲区:ads relrb(entlist);1.1.2 用创建类对象的方法建立接口一幅AutoCAD的图形是存储在一个数据库中的对象的集合。创建实体的过程就是向数据库中添加对象的过程。不同的对象有其对应的子类,如AcDbLine,AcDbCircle,AcDbArc,AcDb2dPolyline,AcDbText等。以AcDb2dPolyline对象的创建方法为例,建立POLYLINE实体接口函数的方法如下:

  图形接口定义:

  void createPolyline(AcGePoint3dArray ptArr,double width,int color,char layer)创建实体对象:

  AcDb2dPolyline pNewPline=new AcDb2dPoly—line(AcDb::k2dSimplePoly,ptArr,0.0,Adesk::kFalse,width,width,NULL);设置实体颜色和图层:pNewPline一>setColor—Index(color);pNewPline——>setLayer(1ayer);以读的方式打开当前图形数据库中的块表,建立指向块表的指针。

  acdbHostApplicationServices()——>workingData--base()->getSymbolTable(pBlockTable,AcDb::kForRead);以写的方式打开模型空间,将块表记录指针指向模型空间数据库。

  pBlockTable->getAt(ACDB—MODEL—SPACE,pBlockTableRecord,AcDb::kForWrite);将实体添加到图形数据库的块表记录中,返回对象标识。

  pBlockTableRecord——>appendAcDbEntity(pline·-ObjId,pNewPline);关闭块表指针、块表记录指针和对象指针。如关闭块表指针:pBlockTable->close()[ ];其他实体创建可依据上述方法实现。

  1.2 图形非几何特性设置为了便于图形管理和符合制图标准,在绘制设计图时需设置图形的非几何特性,主要包括图层、颜色、线型和线宽等。

  1.2.1 建立图层若不设置图层,则图形画在“0”层中。当建立图层时 可设置图层的颜色、线型及图层状态(关闭、打开,冻结等)等特性,将设计图中不同内容绘制在各自的图层中,便于图形管理。方法如下:

  (1)函数定义接口函数:AcDbObjectId addLayer(char layer.namell00],char linetype[100],int layer—color);

  (2)加载线型在当前工作空间中,加载标准线型库文件aca—diso.1in中的指定线型。acdbLoadLineTypeFne(hnetype,“…\\acadiso.1in”,pDb);

  (3)建立新的层表记录:AcDbLayerTableRe—cord pLayerTblRcd= new AcDbLayerTableRecord;

  (4)设置层名:pLayerTblRcd一>setName(1ayer—name);

  (5)设置图层颜色:pLayerTblRcd一>setColor(color);f61设置线型在线型表中获取线型标识:pLinetypeTbl一>getAt(1inetype,ltId);在层表记录中设置线型:pLayerTblRcd一>set—LinetypeObjectId(1tId);将层表记录添加到层表中:pLayerTbl一>add(pLayerId,pLayerTblRcd);(7)关闭层表指针,返回层表的ID[3].

  1.2.2 实体非几何特性设置实体的非几何特性包括所属的图层、显示的颜色、线型、线宽和线型比例等 设置方法如下:

  (1)当前图层设置在AutoCAD环境下,图形是画在当前层中,所以,在绘图时要先设置当前图层,方法为:pDb一>setClayer(pLayerld)。

  (2)设置线型比例在AutoCAD 的模型空间设置线型总体比例方法如下:打开当前数据库:AcDbDatabase pDb—acdbHostApplicationSerVices()一>workingDatabase();设置线型总体比例:pDb一>setLtsca1e(Ltscale)。

  (3)设置实体颜色:实体的颜色可与所在层不同,如果颜色值不是256(BYLAYER),则实体与它所在图层的颜色不一致。实体颜色的设置方法为:pEntity一>setCo1orIndexfnewColor)。

  (4)设置实体图层:如果一个实体已经指定了图层,那么当前数据库的图层值会被忽略。设置实体图层的方法为:pEntity一>setLayer(pLayerId)。

  2、图形信息的提取原理和方法

  2.1 图形信息及提取原理

  2.1.1 矢量图的主要内容

  (1)工程设计图中的几何实体包括:点、直线、圆和圆弧、多段线(POLYLINE)、文字、尺寸标注等,其几何属性有离散点的坐标,直线的端点坐标和线段的长度,圆的圆心坐标及半径,多段线(POLYLINE)的各顶点坐标、线段的长度和面积及文字的起点坐标等。

  (2)图形的非几何信息有图层、颜色、线型、线宽及层的状态等。

  2.1.2 实体信息提取原理利用结果缓冲区和DXF接口方法,结合Obje—ctARX工具的实体获取技术,可提取对象的坐标、图层、线型、颜色等信息。

  结果缓冲区用于存储实体信息,根据缓冲区变量restype的返回值,结合DXF组代码来判断组值的类型,实体信息分类如下:

  (1)DXF图形交换文件由7个节(Section)组成,每节由0组和其组值Section开始,中间是若干个组,每组由组代码和组值构成,节尾由0组和其组值ENDSEC组成。不同的组代码对应的组值可为字符串、整型数、浮点数等。

  (2)组代码是0 9的整数,则返回值类型为字符串(RTSTR),组值为实体名称、图层名和线型等。

  (3)组代码是10~19之间的整数时,返回值的类型为RT3DPOINT,这种返回值为点的坐标:adsreal rpoint~3],由此可获得图形中的散点坐标值。

  (4)组代码为38~59的整数时,其返回值的类型为RTREAL,其值为实型数,其中,组代码39的组值为厚度(thickness)、组代码40的组值为高度(如等高线的高程)、半径等,其他组代码的组值为角度等。

  (5)组代码是60~79的整数时,返回值为短整型RTSHORT,如颜色号码及对齐方式等。

  2.2 实体信息提取方法在AutoCAD模型空间中,图形为矢量图,各对象有其对应的子类,在DXF接口中,实体的几何与属性信息对应不同的组代码和组值,根据子类的不同可提取相应实体的几何和属性信息。多段线POLYLINE的子类为AcDbPolyline,DXF的组码为0,组值为POLYLINE,以多段线的顶点信息提取为例,说明对象信息提取的原理和方法如下:

  (1)获取图形实体运用ObjectARX开发工具中的acedSSGet(“a”,NULL,NULL,NULL,ads name all entities)函数获取图形数据实体,然后,用acedSSLength(ads_name aii entities,long entities count)函数获取选择集中的实体数目。

  (2)获取实体名称利用acedSSName(ads name all entities,longi,ads name entity)函数,获取all entities实体集合中第i个实体的名称并存放于参数entity中。

  (3)实体数据描述表在结果缓冲区中获取实体数据的描述表:struct resbuf entitybuf=ads— entget(entity)。