基于VBA的CAD二次开发绘制临时征占地布置图

2020-07-16 00:29樊国刚
水利技术监督 2020年4期
关键词:调水二次开发绘图

樊国刚,邢 传

(辽宁省水利水电勘测设计研究院有限责任公司,辽宁 沈阳 110006)

我国水资源总量充沛,但水资源在空间上和时间上分布不均衡,导致人均水资源量贫乏,制约城市的发展和经济产业的整体布局[1- 2]。随着国民经济的快速发展,部分地区已经出现了水资源过度开发的现象,比如湖泊水环境恶化、超采地下水导致地面塌陷等问题。跨流域引调水[3- 4]可以有效缓解这一矛盾。通过跨流域引调水工程来优化和配置区域间的有限水量,重新分配空间和时间上的供给水量,缓解供需矛盾,改善供水地区的生活和生产条件,并有效地支撑供水地区的经济发展;但跨流域引调水工程在带来诸多生产、生活效益的同时也会对生态环境造成一定影响[5- 6],有积极的影响,也有消极的影响,因此在修建引调水工程前,应进行全面的分析论证。

管线输水是引调水工程常采用的输水形式。管线施工中涉及大量的土石方开挖和回填工作,这些工作需要考虑临时征占地以满足施工要求,而临时征占地过程中常常面临很多困难[7- 9],而且征占地范围的大小会直接影响水利工程的投资金额[10];因此,为了工程顺利实施且节约投资,应尽量使临时征占地面积最小化,本文提出了临时征占地设计方案。但在绘制征占地布置图时,需要处理大量的数据信息,很繁琐,易出错,且效率低,还常常因设计方案改变而返工,鉴于此,可采用VBA编程语言对AutoCAD进行二次开发[11- 12]来进行数据处理。

采用VBA编程语言对AutoCAD进行二次开发十分方便[13],VBA编程语言是一种面向对象的可视化编程工具,其语法比较简单、易于设计人员掌握,且功能很强大。目前,许多流行的商业通用软件,如AutoCAD、Microsoft Office Word、Microsoft Office Excel等都内置了VBA开发工具[14- 15],其强大的功能为各软件的二次开发提供了良好的框架平台,同时也为各软件之间建立了便利的信息互通渠道。

1 工程概况

辽宁省北镇市供水工程是以白石水库为水源,通过一根DN800球墨铸铁管输水管线输水至北镇市净水厂,给整个北镇市城区供水的基础设施工程,管线全长32.64km,途经5个乡镇、1个工业园,穿越河流5次,穿越高速3次。

工程临时征占地具有范围跨度大、点多、线长、面广、涉及土地性质复杂的,既有基本农田,也有城镇建设用地,并且附近村民对征地政策及争取征地补偿款均有丰富的经验。因此,优化临时征占地范围,减小临时征占地投资,十分必要。

图1 管线施工临时征占地断面图

2 临时征占地设计方案

在满足经济合理的施工条件下,管线施工临时征占地设计,一方面需要满足临时堆存用于管沟回填的开挖土石料的需求(以下简称堆土侧);另一方面需要满足临时交通的需求,(以下简称交通侧)。管线施工临时征占地设计方案图1所示。

根据设计方案,临时征占地总宽度Z可由式(T+A1)+(P1+B+P2)+(A2+L+D)计算得到,其中参数T的确定最为关键,计算公式:

式中,T—堆土侧临时堆土石宽度,m;S—设计开挖断面临时堆存的土石方面积(松散态),m2;H—临时堆土高度,m;m—临时堆土坡比;f—辅助参数,当S≥H2m,取f1=1、f2=0;反之,取f1=0、f2=1;B—设计开挖断面管沟宽度,m;h—设计开挖断面总开挖深度,m;h=h1+h2;n1—设计断面静荷载侧的坡度;n2—设计断面动荷载侧的坡度;k1—土方松散系数;k2—石方松散系数。

以辽宁省北镇市供水工程桩号0+000—0+400段为例,计算堆土侧临时堆土石宽度,计算成果见表1。

3 高效绘制临时征占地布置图

基于AutoCAD内置的VBA编程平台,实现对AutoCAD进行二次开发,达到高效绘制临时征占地布置图的目的,首先是要找到数据和绘图元素之间的对应关系,然后编程调用数据,批量操作绘图元素,步骤如下。

3.1 处理管轴线获得绘图元素

首先,沿管道轴线布置桩号,提取管道中心线和桩号线交点的坐标;然后用提取的管道轴线坐标绘制多段线并炸开成直线段,如此便获得了桩号区间的基本绘图元素(以下简称图元)。

3.2 Excel中整理偏移数据

将各桩号区间计算得到的征占地宽度,按照堆

表1 堆土侧临时堆土石宽度计算表

土侧征占地宽度和交通侧征占地宽度分别计列,整理到Excel表格中,见表2,第四列为堆土侧征占地宽度,第五列为交通侧征占地宽度。

表2 桩号区间征占地宽度汇总表

3.3 建立CAD和Excel之间的通信

利用AutoCAD内置的VBA开发工具,建立AutoCAD和Excel之间的通信,使AutoCAD能够调用Excel工作表中的中数据。

首先,声明对象变量,用CreateObject函数创建Microsoft Excel引用,如引用F盘文件“管线征占地宽度数据源.xlsx”工作簿中的“堆土侧征占地宽度数据”工作表。

Dim xlapp As Object

Dim xlbook As Object

Dim xlsheet As Object

Set xlapp=CreateObject("excel.application")

Set xlbook=xlapp.workbooks.Open("F:管线征占地宽度数据源.xlsx")

Set xlsheet=xlbook.worksheets("堆土侧征占地宽度数据")

然后,便可在AutoCAD中可建立变量或数组,直接调用Excel工作表中的数据。

3.4 图元的CAD批量操作

首先,在AutoCAD中创建数组p(i),再将Excel工作表中计算得到的占地宽度数据信息读取到数组p(i)中;

For i=0 To (num_col- 1) Step 1

p(i)=xlsheet.Cells(i+row, col).Value

Next i

其次,在AutoCAD绘图空间中遍历图元,实现图元的批量化偏移操作;

For Each oBj In AcadApp.ActiveDocument.ModelSpace‘遍历绘图空间的图元

If oBj.EntityName="AcDbLine" Then

offsetObj=oBj.Offset(-tt)

End If

If i <=951 Then ‘951指图元个数

i=i+1

tt=p(i)

End If

Next oBj

然后,绘制偏移后图元的外包线,并结合实际地形,对不可排除障碍物(如鱼塘、房屋、涉河、跨路等重点部位)的外包线行进修正。例如,在无空间用于临时堆存土石料的部位,应减小征占地宽度,并将土方向外倒运;在涉河、跨路的部位,应增加占地宽度,以满足施工作业面和交通通行的要求。修正后的图元外包线即为临时征占地范围。

最后,编程批量提取征占地边线坐标点并标识角点,完成管线施工临时征占地布置图的绘制。

4 结语

引调水工程管线施工临时征占地的大小,直接影响水利工程的投资金额,为节约投资,合理划定临时征占地范围、精细化绘制临时占地边线是十分必要的。本文从实际工程出发,提出了引调水工程管线施工临时征占地设计方案,并利用VBA对CAD进行二次开发,编程实现对绘图单元的批量操作,高效、快速、准确地绘制临时征占地范围。

本文对于管线施工的临时征占地设计及布置图绘制具有一定实践意义。

猜你喜欢
调水二次开发绘图
来自河流的你
“禾下乘凉图”绘图人
调水专家倾囊相授15年心得,解答底改重要10问
浅谈Mastercam后处理器的二次开发
垂涎三尺
例谈课本习题的“二次开发”
双调水仙子游青城山
重大报道中的“微表达”——以湖北日报《琼瑶话调水》专栏为例
ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用
关于平面设计软件二次开发的分析