首页 > 范文大全 > 正文

计算机开发技术在公路工程中的运用

开篇:润墨网以专业的文秘视角,为您筛选了一篇计算机开发技术在公路工程中的运用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:本文围绕图形编辑软件AutoCAD 与外部程序Visual Basic及Excel三者之间的衔接,从编程的角度阐述了数据信息交换的手段与软件功能深层开发的方法,并对如何应用于公路施工中进行数据处理和图形绘制作了具体介绍,充分地把计算机技术应用于工程中,极大地提高了工作效率。

关键词:AutoCAD、Visual Basic、Excel VBA 、编程、公路工程、开发

Abstract:This paper focused On the joins Of the graphics editing software AutoCAD and the external program software Visual Basic and Excel.And this paper elaborated the means Of the data information exchange and the methods Of deep-seated development Of software from the view Of the programming,which also was used to dispose data and draw graph in highway construction.Calculation technology was fully applied to the engineering,which could greatly enhance the working efficiency.

Key words:AutoCAD;Visual Basic;Excel VBA;program;highway engineering;development

中图分类号: G623.58 文献标识码: A 文章编号:

如今,计算机技术越来越广泛地应用于公路领域里的工程建设规划、勘测设计、招投标、工程施工、竣工资料整理等各个方面。然而,有相当一部分的工程技术人员,特别是施工技术人员,他们往往对施工技术了解熟悉,但在工程软件方面应用却显得较为薄弱。即使有应用,也仅局限于使用WORD编写文档,用EXCEL填写报表,进行简单的数据计算,用AutoCAD画进行简单工程图绘制。尽管能满足工作的基本需要,但却忽视了这些软件丰富的开发潜力,不能够把计算机技术很好地植入工程建设之中,造成重复劳动量较多,工作效率低下。

现有的公路工程专业软件很多,涉及到公路到各个领域,但是这些软件绝大多数存在一定的局限性,套用的一般是三级公路以上的技术标准及规范。而相当一部分单位,如一些中小型企业和一些县级交通主管部门,受经济发展水平及管理范围的限制,主要承担通县乡公路、村通村公路的建设与养护,如果运用这些专业软件进行项目管理,使用的可能只是一小部分功能,价格昂贵的软件不能得到有效运用,使用起来既不方便也没有必要。工程人员掌握一些市面上常见软件像OFFICE、AutoCAD、Visual Basic的深层次开发并应用于公路工程领域,对提高自身专业素质无疑是一个好的途径,也给单位节约不小的费用。

一、几个常见软件的介绍

Visual Basic 是在原有的Basic语言基础上发展起来的,Visual指的是“可视”,是开发图形用户界面的方法,Basic指的是广为流行的BASIC计算机语言。Visual Basic具有简单易学的特性,只要稍有计算机基础的人就能掌握的编程语言。现在工程技术人员大部分具有中专以上学历,在在校期间对这门语言或多或少有所了解或学习过,因此通过学习和掌握这门编程语言并不是难事。Visual Basic功能强大,其可视化用户设计功能,会使用户在编程设计时就像积木游戏一样轻松,把编程视为一种享受,开发出功能强大的应用程序。

Excel是微软公司提供的一个强大的电子表格软件,它是微软公司Microsoft Office套装办公软件的一个重要组成部分。在这套办公软件中有一个十分重要的组件就是VBA组件,这个组件可以与一些外部程序衔接,实现数据、信息的交换和互动,利用这一功能,用户可以使许多繁琐、机械的日常工作得以自动实现,并通过各种精美的界面和实用控件将用户创建的应用程序封装起来,从而极大地提高用户的工作效率以及应用程序的实用性。

AutoCAD是目前流行的计算机辅助软件,它提供了图形输入、图像编辑、图形输出的一个完整的工作环境,被广泛地应用于机械、土建等众多行业中。它具有开放的体系结构,允许用户和开发者采用AutoDesk公司提供的工具与接口对其进行扩充和修改,即二次开发接口,能最大限度地满足用户的特殊要求,方便开发人员针对某行业或专业,在AutoCAD平台上开发出各种不同行业的软件,从而极大地提高了工作效率。

二、AutoCAD二次开发接口

AutoCAD现行的开发语言及工具,主要有Visual LISP、0bjectARX以及ActiveX Automation等,各种工具都具有自身的特点。

Visual LISP是以其易用性而著称,它使用LISP语言,完全兼容Auto LISP,并且加入了对事件的响应等功能,使用非常方便。但Visual LISP并不是一个完全独立的编程语言,它虽然不受AutoCAD版本的限制,但它作为AutoCAD的内嵌语言,是无法开发完整的大型Windows应用程序的。

ObiectARX是一种强大的开发接口,它以VisualC++为开发平台,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能够方便快捷地开发出高效简洁的AutoCAD应用程序,甚至可以认为它可以实现AutoCAD中所有的功能。但是ObjectARX只能应用在VisualC++的平台上,而VisualC++对于工程软件的开发人员来说又是比较难以掌握的。用VisualC++开发软件过程中制作程序界面十分困难的,而且在AutoCAD的环境下,指针的运用是比较危险的,很容易造成AutoCAD的崩溃,从而给开发者带来了不小的难度。

ActiveX Automation是一种可通过编程控制另外一个或几个程序的技术,其中作为控制方的程序叫做Automation客户或控制器,被控制方的程序叫做Automation服务器。这里所开发的应用程序就是客户程序,而AutoCAD程序就是服务器程序。ActiveX Automation是面向对象的编程接口,它使用了OLE的Automation技术,用户可以访问AutoCAD所有的绘图对象和非绘图对象。需要强调的是,ActiveX Automation是可以应用在所有支持此项功能的开发平台上,比如现在比较流行的VC、VB、C++Builder、Delphi、VBA以及Java等,从而使开发人员可以选择自己喜爱的开发平台进行工作,充分利用先进的开发工具,更加方便地建立优秀应用程序。

图1 外部程序通过ActiveX Automation访问AutoCAD示意

三、Visual Basic 与AutoCAD 在公路绘图方面的应用

AutoCAD从R14开始提供ActiveX Automation技术。一个应用程序支持的对象、方法和属性通常在应用程序的对象库中定义。类型库是一个文件或文件的一部分,它描述一个或多个对象的接口。在使用AutoCAD的ActiveX Automation对象之前,必须在Visual Basic中引用该对象库acad.tlb。通过Visual Basic的对象浏览器,可以观察到对象的方法、属性及全局公有变量和常量定义等。理解AutoCAD的对象模型是对其编程的基础。AutoCAD以层次结构组织对象,在顶层是Application对象(即AutoCAD本身),其它对象均为Application对象的子对象。在Application对象下面是Preferences和Documents对象。Preferences对象可以对AutoCADPreferences菜单项中的几乎每一个选项进行访问和修改,以获取或改变AutoCAD的优先设置。Documents对象是控制AutoCAD图形文件的直接对象,它代表某一个装入的CAD图形文件。Document对象里面有Model Space和PaperSpace对象及Blocks、Layers、Plot、Selectionsets、 ViCWS、utility等一系列对象(集合),其含义与AutoCAD中相似。

下面,笔者就绘制一条道路纵断面的实例,来说明如何通过Visual Basic对AutoCAD操作进行工程图的绘制。

首先说明一下:所用的开发平台Windows XP,编程软件是Visual Basic 6.0,AutoCAD平台是 AutoCAD 2004版本的。

编程的步骤:

(1)通过Visual Basic 6.0建立一Windows应用程序,取名为“纵断面绘制”。

(2)在“工程”中右击“引用” 标签,在弹出的菜单中选择“添加引用”,在“添加 引用”对话框中选择"com"选项卡下的下拉列表框中的“AutoCAD 2004 Type Library”项(不同版本CAD有区别),单击右边的“选择”按钮,最后单击下面的“确定”按钮,这样就能使VB建立与AutoCAD联接的“桥梁”。

图2在VB中引用AutoCAD库

(3)在窗体中加入几个标签和文本框,用于说明和指示数据文件路径,再添加一个菜单,用于编写代码进行数据计算和图形绘制。

图3 程序的界面布置

界面分为两个部分,数据输入部分用于标明数据文件和要素文件的文件路径,数据文件和要素文件都采用TXT文本文件,在数据文件中按固定格式依次存放中桩桩号、地面线高程、设计面高程;在要素文件中按固定格式依次存放竖曲线的起始位置、变坡点高程、变坡点桩号、竖曲线半径等参数,程序通过对上述两个文件中数据进行读取,为数据计算和图形绘制提供基础数据。

图纸布置部分主要功能是设置图纸布局、比例等参数和工程名称和图号等。

(4)下面进入程序最核心的部分,即程序代码部分。

点击“文件”菜单中的“绘图”子菜单,在这里添加下列代码:

Public acadapp As Object ‘变量声明定义

…………

set acadapp = GetObject(, "autocad.application") ‘获取AutoCAD库

If Err Then

Err.Clear

Set acadapp = CreateObject("autocad.application") ‘建立Application对象

If Err Then

Dim sos

sos = MsgBox("无法连接CAD,请再次运行本软件,或先启动Autocad!", 0 + 48, "信息提示")

End

End If

acadapp.Visible = True‘显示AutoCAD界面

Set acadutil = acaddoc.Utility

End If

Set acaddoc = acadapp.ActiveDocument‘ 建立Document(文档)对象

Set mospace = acaddoc.ModelSpace‘建立ModelSpace(模型空间)对象

Set paspace = acaddoc.PaperSpace ‘ 建立PaperSpace(图纸空间)对象

Set thisdrawing = acadapp.ActiveDocument‘激活当前文档

…………

上述代码实现在VB程序中启动AutoCAD的功能,接下来就是数据读取和计算以及图形绘制过程,因篇幅限制不能详细列出,下面介绍图像绘制的几个重要命令:

在ModelSpace中用AddSpline(绘制样条曲线)命令绘制地面线和设计线,特别强调一下,这里不能用AddLine命令,因为地面线和设计线都是平滑曲线,AddLine只能绘制直线。用AddText命令绘制文字注释和说明,用Rotation属性对对象进行旋转操作。

下面这段代码就是在图形上添加桩号并旋转90模块中一部分:

…………

textstr = zhx(xx)

Set textobj = mospace.AddText(textstr, textP, texthgt)

textobj.Color = acRed

textobj.Rotation = 0.5 * 3.1415926535

…………

程序编写完成后,单击“文件”菜单里的“绘图”子菜单就能自动完成图形的绘制。下面是该工程的纵断面cad图中的一张:

图4 绘制的纵断面图

四、EXCEL 与AutoCAD 在公路绘图方面的应用

如前面所述EXCEL中与AutoCAD能够良好地衔接,大多数文献资料虽然对此有所介绍,但涉及公路领域较少,也没有较为完整详细的代码,让初学者感到很茫然。通常采用的方法多是利用AutoCad VBA二次开发功能,Excel表格进行数据输入存储,读取Excel表数据后,在AutoCad中绘制图形。本人将通过对横断面图的绘制来说明EXCEL VBA与AutoCad如何进行有机联接,采用的方法是:在Excel表储存数据,利用EXCEL的 VBA二次开发功能调用AutoCAD进行图形绘制。这样做优点有以下:

减少了文件数量,只需要一个文件就能实现数据存储和绘图功能,而不需要另外增加数据文件,减小文件丢失的风险。

保密性、安全性加强,可以在在EXCELVBA 中设置密码,避免用户在使用过程中因操作失误而损坏或随意更改代码。

3、维护简单、移植性好,程序编写完成后,可以很容易地运用到其他工程,只需把数据表中的数据做相应的修改即可。

程序编写的过程:

打开EXCEL,选择“工具”菜单,选择“宏”下面的“Visual Basic编辑器”,进入VBA编辑界面,引用AutoCAD库。在“工程资源管理器”,建立数据输入和操作界面。

图5 程序的界面设计

界面完成后,单击“连接CAD”按钮,输入启动AutoCAD代码,代码可以完全借用VB启动AutoCAD代码,因为它们核心都是BASIC语言,调用的又是相同的对象。

实现在EXCEL中启动AutoCAD的功能后,接下来就是数据读取和计算及图形绘制过程,EXCEL有很强大的数据存储、处理功能,利用这一点能给我们的工作带来很大的便利,VBA访问单元格里的数据可用Cells对象,其格式为Cells(i,j),i代表单元格所在的行,j代表单元格所在的列,通过for循环,就能读取用户输入的数据了。接下里就是绘图过程函数和横断面面积计算过程,计算断面面积的过程是本程序的核心部分,在这部分里调用“boundary”命令,使设计线和地面线包围起来的部分生成一个封闭的区域,再使用“Area”方法,就能查询出面积,绘图过程使用的方法和函数与VB调用AutoCAD里的函数类似,这里不再重复。

图6绘制的横断面

本程序能自动计算填挖面积,可根据需要在横断面图上绘制网格,就像手工在米厘纸上绘图一样,可以“数格子”,而且路面宽度、地面高程、设计高程、填挖高度等数据都能在图上反映出来,便于工程各方面人员复核工程量。

计算机技术在公路工程里的运用远不止上述这些,本文只是通过两个的实例对AUTOCAD二次开发并将其应用于公路工程领域的基本思路和流程做了入门级的阐述,目的是给入门者一定的启发帮助。只要掌握简单的编程语言,就能结合工作需要,对一些软件进行深度的开发,编写出针对性强的程序,让电脑“听你的话”,做你想做的,别人不能够做到的事情。以上程序是本人在工作实践中编写出来的,篇幅所限,不能把全部代码发表出来。由于水平有限,不免有些错误,希望批评指正,共同探讨。

五、结束语

充分把计算技术应用到工程中,是公路工程建设的发展的一个趋势,让技术人员从繁杂、沉重的工作中解放出来,把更多的精力投入到更有成效的工作中去,这是顺应社会发展的必然选择,是建设现代交通事业的必由之路,也是交通工作者不懈追求的目标!

参考文献:

1、刘圣才、李春葆著《Visual Basic 6.0 程序设计导学》 北京:清华大学出版社2002

2、佟士懋、邢芳芳、夏齐霄《AutoCAD ActiveX/VBA 二次开发技术基础及应用实例 》北京:国防工业出版社2006

作者简介: 牛瑞金(1975.11-),男,本科,现工作于安徽省高速公路控股集团有限公司,工程师,从事技术工作。