ObjectARX在站场土石方计算中的应用

2020-03-14 03:31:20何安静
四川建材 2020年2期
关键词:链表挖方土石方

何安静

(中铁二院(成都)建设发展有限责任公司,四川 成都 610031)

0 前 言

土木工程专业工程师大都基于计算机辅助绘图工具开展设计工作,平面图纸即为设计成果。目前,国内辅助绘图工具多基于AutoCAD平台开发了相应的图纸快速生成扩展功能,提高了绘图效率,但一般都缺少可准确统计工程量功能,或只能利用外部工具进行统计计算。ObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包,它提供了以C++为基础的面向对象的开发环境及应用程序接口。本文充分基于AcDbObject类的基本特性,扩展出AutoCAD图形数据库快速访问修改功能,研究设计绘图过程中的工程量自动统计方法。

铁路站场土石方量统计是站场设计中最重要的工作内容之一,传统工作方法设计者需一边量测不同类型的土石方量一边做记录,最后填入Excel表并计算得到结果。由于全部采用人工操作,工作效率低、出错率较高,在设计任务繁重,在设计人员有限的情况下,往往还要配备专门的人员做土石方量统计工作。本研究定制AcDbObject的派生类,使设计者在框算土石方的同时,记录不同类型挖方和填方数据,而后输出到Excel表进行工程量统计计算。

1 AcDbObject类的功能

AcDbObject类对象能够实现随图形一起保存在dwg文件中。数据成员对应相应的数据信息,函数成员对应数据处理过程。创建AcDbObject的一般步骤为。

1)利用向导创建派生于AcDbObject类的新类。

2)重载函数dwgInFields()和dwgOutFields()用于数据保存。

3)添加数据成员。

4)添加函数成员。

AcDbObject派生类要实现撤销,需在修改数据成员函数前调用assertWriteEnabled()函数,而读取数据成员的函数时又要先调用assertReadEnabled()函数。在ObjectARX中,图形自定义对象必须派生自AcDbEntity派生类,而AcDbObject派生类可以没有相应的图形实体与其相对应。使用时,AcDbEntity派生类是添加到模型空间或者图纸空间中,而AcDbObject派生类是添加到数据库的命名对象字典中。

2 定制土石方类

系统将每个断面作为独立的个体,每个断面均有一个土石方类的对象与其相对应,土石方类的数据成员代表断面的各种数据信息,函数成员即为处理每个断面数据信息的过程。

2.1 数据成员

系统用里程值识别不同的断面,再用两个整数表示挖方和填方类型数目,为便于数据组织,系统用数据结构中的链表形式存储不同挖方与填方类型的具体信息,包括:种类名称、线条颜色、面积等。以下是数据成员列表。

doubleLiCheng; // 里程

char*GuanHao //冠号

Adesk::Int32 nw; // 挖方种类个数

Adesk::Int32 nt; // 填方种类个数

STWFWList; //挖方链表

STWFTList; //填方链表

STWF为链表数据结构,其具体形式为:

typedef struct TWF{

char* name; //类型名称

Adesk::Int32 colour; //绘制颜色

double Area; //面积

TWF *next; //前驱指针

TWF::TWF() //初始化函数

{

name=new char[100];

colour=0;

Area=0;

next=NULL;

}

}*STWF;

2.2 函数成员

函数成员是出来数据成员的过程,通过函数成员可以为每个数据成员赋值。以下是土石方类函数成员列表。

数据存储函数:

virtualAcad::ErrorStatus dwgOutFields (AcDbDwgFiler *pFiler) const ;

virtualAcad::ErrorStatus dwgInFields (AcDbDwgFiler *pFiler) ;

链表处理函数:

voidclearW(void);

voidclearT(void);

bool GetWN(int n,STWF &Wnode);

bool GetTN(int n,STWF &Tnode);

voidpush_back_W(char* name,int colour);

voidpush_back_T(char* name,int colour);

bool Read(void);

bool print(void);

链表出来函数包括了链表的清空、提取节点值、追加值、链表赋值、链表打印。由于部分数据成员被设置为公共成员,因此省去了一些函数的编写。

3 定制文件配置类

文件配置类代表系统常量,这些常量包括:填挖方类型名称、多段线的宽度颜色等基本信息。配置类是由AcDbObject类派生得到,因此,将此类添加到数据库的命名对象字典中即可实现随文件保存。文件配置类与土石方类较为相似,不再累述。

4 设置文件输出

本系统使用VC++7.0开放平台编制而成,该平台能够非常方便地设置Excel连接端口,在类视图中右击程序名,在弹出的对话框中,选择MFC中ActiveX控件中的MFC类,然后选择从文件来源添加类,指定位置到Microsoft Office安装目录中Office12文件中的Excel.exe,在接口列表中选择_Application、Workbooks、 _Workbook、 Worksheets、 _Worksheet、Range等基本的操作类到系统中,之后对这些对象编写相应的操作程序,即可实现断面数据的输出。

5 应用实例

为验证程序的各项功能,现以统计某路基断面土石方量为例进行说明。

1)设置配置信息。

(1)首先设计者需编辑土石方类文本文件,并将其导入当前文件中,文本文件格式为:

n1 n2挖方类个数 填方类个数

(2)编辑好文件后,使用Peizhi命令,弹出文件配置对话框,就可将其导入该文档,并设定好线路名称、车站名称、设计阶段,如图1所示。

图1 文件配置对话框

2)框选断面里程。添加断面里程,填写里程冠号,选择挖方或者填方类型,设置好统计面积站框选面积的百分比,然后用框选命令,框选其面积,即可得到相应的结果,如果多次框选,面积还会累加。

图2 土石方统计工具栏

另外,系统还设置了转化既有多边形面积、删除里程断面、数据重置三种功能。

3)文本输出。框选统计完各种类型填挖方量数据后,可以使用文本输出功能将此组数据输出到CAD文档中。

图3 文本输出图

4)导入Excel表。当一个CAD文档中的所有断面全部统计完成后,可以使用导入Excel表命令将各断面统计数据导入至标准Excel表格中,最后计算得到最终的土石方量。

表1为某站断面土石方统计表。

表1 土石方统计表

6 结 论

本文通过ObjectARX提供的AcDbObject派生类,解决了站场土石方计算数据随文档保存的问题,为设计者提供了多种途经和功能统计站场路基断面土石方量,并且在统计完成后一并导入Excle标准表格。该系统不但大幅提高了生产效率,而且与人工统计相比,出错率明显降低。系统操作性强,适合在生产工作中推广使用。

[ID:009135]

猜你喜欢
链表挖方土石方
山区高速公路挖方路基边坡稳定性分析及动态设计研究
露天矿山土石方量的测量及计算
基于二进制链表的粗糙集属性约简
跟麦咭学编程
基于链表多分支路径树的云存储数据完整性验证机制
土石方机械的春天已经来了,路面机械的还会远吗?
刍议公路工程水泥路面施工技术
浅析建筑施工中的挖方和土方转运
土石方工程量计算程序设计及应用研究
浅谈公路施工技术在山区公路修建中的应用