(中国葛洲坝集团勘测设计有限公司测绘分公司,湖北 宜昌 443000)
摘要:土石方量的计算是工程建设中的主要工作之一。传统的断面法过程复杂且生产效率低下,无法满足大型工程的快速生产需求。本工作提出了基于AutoCAD二次开发的批量断面处理系统,实现了从自动化布设横断面线、批量生成原始断面图和设计断面图、自动闭合断面图形成面域,以及自动化统计土石方量的一体化解决方案。极大提高了断面图绘制和土石方量计算的内业数据处理效率。同时本工作也解决了AutoCAD二次开发软件的版本兼容问题。
关键字:AutoCAD二次开发,C#,批量断面图,土石方量计算,兼容性
1 引言
计算土石方量是工程建设中的核心内容之一[2]。其作为公路、隧道、桥梁和水利水电等工程建设过程中的重要环节,控制着工程预算、投资与施工安排,对工程进度产生关键影响。为客观评估土方工程的预算,有效控制工期,必须进行快速且准确的土石方量计算[3]。
断面法在国内土石方量计算中得到广泛应用[1]。其首先对施工现场的原始地形与施工过程中不同地址材料的分界线进行实测,然后经过剖断面内业处理,获取地形断面图和各期施工过程断面图,然后将计算超欠挖面积需要的多条断面线放到同一条断面图中,计算出某里程桩号对应的超欠挖面积,最后进行土石方量的统计。
在实际应用过程中,绘制断面图的过程繁杂,、生产效率低下,无法满足大型工程中初步设计、施工和竣工各阶段的大批量土石方内业资料的快速生产需求。因此,本文提出了批量断面处理系统,实现了断面图的批量绘制、断面线的自动闭合和土石方量的自动计算,大大提高了内业作业效率。
2问题分析
1)需设计从基础数据的断面图批量生成、断面线自动闭合及土石方量自动计算的通用流程。
2)市面上AutoCAD的版本众多,目前有从2006至2022版,各版本AutoCAD的二次开发软件不兼容,因此AutoCAD的二次开发软件的版本兼容性也是亟需解决的问题。
3功能设计
平均断面法是本软件(批量断面系统)中的土石方量计算的理论基础。其首先以某固定的间距批量截取平行的断面,然后依据断面与等高线交点的位置及高程进行断面图的绘制,最后用梯形公式计算出总方量。
批量断面系统由布设横断面线、剖设计线、剖原始线、原始线设计线融合、闭合断面线和面积方量统计6个模块组成。系统功能设计如下图1所示,通过此流程可完成从基础数据到生成断面图与土石方量统计功能的一站式服务。
图1 批量断面处理系统功能设计
布设横断面线:用户自主定义轴线,设置布设断面线的参数,自动批量生成的横断面线。
剖设计线:选择设计线所在图层,选择横断面线,选择设计线范围,生成批量设计线横断面图,设计线数据导出为csv数据文件。
剖原始线:选择原始线所在图层,选择横断面线,选择原始线范围,批量生成原始线,将剖设计线模块中导出的csv数据文件导入此模块中,生成设计线与原始线融合后的断面图。
闭合断面线:用户根据自己的需求,选择原始线与设计线的闭合方式,对两条多段线进行封闭操作。
面积计算:对于闭合断面线形成的图形进行面域的生成,根据两条线的位置关系判断面积为超挖面积与欠挖面积。
方量统计:识别断面图的桩号与图内的面积,生成桩号对应的面积方量统计表。
4功能实现
4.1开发环境
Visual Studio作为成熟的IDE,可进行快速的代码编写。本工作采用Visual Studio 2017版本。
目前国内CAD插件开发平台以AutoCAD为主[4],其提供二次开发的接口,故本工作基于AutoCAD软件。本软件所依赖的CAD版本为2006至2021AutoCAD的所有版本。
AutoCAD二次开发工具众多,有.NET、 VBA、ObjectArx和Lisp。ObjectArx功能强大,运行效率高,但要求开发者掌握C++,难度较大。VBA与Lisp简单易学,但面向对象功能的支持不足,且运行效率不高。.NET开发平台在保证开发功能的基础上,运行效率比VBA和Lisp高,且容易上手,大大提高了开发效率。考虑追求较高的开发效率与更强大的开发功能,本文采用.NET作为开发工具,其对应为C#编程语言。
2010版本及以下AutoCAD核心依赖为acmgd.dll、acdbmgd.dll,2010版本以上AutoCAD核心依赖增加accoremgd.dll。
4.2主要功能实现
1)用户界面。将对应的功能添加到AutoCAD的工具栏中,同时在.NET环境下通过WinForm窗体实现用户界面,通过工具栏中的菜单点击创建一个可依靠的面板作为用户界面。便于用户操作且界面较为美观,每个模块中的用户交互界面也采用WinForm窗体与用户进行交互。如图2所示。
图2 用户主界面
2)断面图批量生成
剖设计线与原始线的原理一致。即通过横断面线与设计线或原始线的相交形成交点集合,对于交点集合基于横断面线进行点排序,连接排序后的相邻点,得到的多段线即为断面线,将断面线添加到模型空间中就得到用户需要的断面线,添加边框与网格线实体对象,绘制在AutoCAD图形中生成断面图,根据多条横断面线进行剖断面操作即可得到批量的横断面图如图3。
图3 批量横断面图
断面图生成核心代码如下:
Listaxisline = Get_Section_Pic(draw_range, dis_h[pc], basePoint);//绘制断面
ListGridlines_axis = GetGridLines(draw_range, basePoint);//绘制网格
List<DBText> Labels_axis = GetGridLables(draw_range, basePoint);//绘制标注
AddToModelSpace(db, axisline);//添加断面线至命名空间
AddToModelSpace(db, Gridlines_axis);//添加网格线至命名空间
AddToModelSpace(db, Labels_axis);//添加标注至命名空间
3)断面图闭合
设计线与原始线数据融合后,计算断面图中超挖与欠挖方量前需要对图形进行闭合操作;根据用户选择的闭合方式不同,执行不同的闭合断面线操作,包括延伸相交、垂直相交和首尾相连,通过对两条断面线端点加点的方式实现两条断面线的闭合。
4)面积计算
对于完成闭合的断面图进行封闭面域操作,由于两条线的走向具有不确定性,因此两条线包围形成的面域一般会有多个面域;计算出两条线的交点,根据交点将断面线分割成若干条线段,根据闭合图形间线段端点坐标重合的特性,将同一个闭合图形的线段分为一组,组内线段首尾相接形成闭合多边形,闭合多边形形成面域即可得到图形面积,将对应面积标注于面域的重心位置如图4。
图4 面积计算与面域填充
5)方量统计
选择经过面积计算后的断面图对象,过滤标注图层,得到桩号标注和所在断面图的面积标注,提取标注中的桩号与面积,生成面积方量统计表。
6)软件版本兼容性
基于不同版本的AutoCAD生成的dll程序,无法在其他版本的AutoCAD中兼容使用:解决方法为基于每个版本的AutoCAD分别生成对应版本的dll程序,将dll程序与启动AutoCAD的exe程序通过Inno setup软件打包,形成安装程序,安装完成后不同版本的dll文件会位于软件的安装目录;通过注册表识别本机安装的对应版本的AutoCAD,将每个版本的dll注册到对应版本的注册表中,不同版本的AutoCAD在启动过程自动加载对应版本的二次开发软件。
5结语
本文介绍的批量断面系统实现了从基础数据生成批量断面图、自动闭合断面线到计算面积与方量统计的一站式服务,用户可自定义轴线剖断面获取断面图,可用于不规则工程中土石方量的计算,在实际工程中得到比较好的应用,提高了测量内业数据处理效率,减少了内业工作量;同时解决了AutoCAD二次开发软件版本兼容性问题,提高了软件的通用性。
引用
工程测量断面与工程量计算的应用-姚 伟,侯博文[1]
土石方量工程计算方法研究-高 超[2]
基于无人机倾斜摄影测量的土石方量计算[3]
基于 C#的土方平均断面法 AutoCAD 绘图插件的实现[4]
基于 AutoCAD 断面法土石方量计算与展绘程序[5]