您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > AutocadVBA在水运工程测量中的应用
AutoCADVBA在水运工程测量中的应用包江行莉宁波上航测绘有限公司摘要本文简述了利用VBA编程语言对AutoCAD进行二次开发的原理和方法,并简单介绍一个以此原理开发的软件在水运工程测量中应用。关键词AutoCADVBAAutoCAD二次开发水深高程系统转化数据提取一、引言随着社会经济的发展,中国各港口掀起了一轮新的建设高潮。由于要考虑潮汐,而潮汐于各个港口又不一样,于是各个码头、港口建设所需的前期地形图、施工图,大都采用符合当地港口的高程系统,如广东采用广州高程或珠江高程,浙江、上海用吴淞高程,这些系统与国家目前采用的高程系统是有一定差值的。同时船舶航行又于当地最低潮位有关,因此航道图又采用当地理论最低潮面或当地航行基准面。有些航道由于回淤严重,致使航道内浮泥厚,水深变浅,但不影响船舶航行,因此会要求测适航水深。从上可以看出,适航水深是用高频测深仪测得的深度基准面以下的深度与适航浮泥层厚度之和,因此适航水深是在当地理论最低潮面或当地航行基准面根据适航浮泥厚度来改正水深值的。从上可以看出,在港口建设中,测量图会因为建设的目的不同而要求进行转化。但目前国内的大多数测量内业成图软件,虽然提供高程基面的转化,但都基于原始数据文件,并不能直接在AutoCAD图上转化,都要经过数据提取成文件—文件改正—展高程步骤,显然影响了工作效率。由于目前AutoCAD图是通用的,并且支持二次开发,因此我们可以对AutoCAD进行二次开发,提高工作效率。二、AutoCAD二次开发工具概述AutoCAD软件包是美国Autodesk公司推出的CAD(计算机辅助设计)软件,从AutoCAD第一版诞生到现在已有二十年的时间,是目前最流行的工程图形处理软件。由于它具有完善的绘图功能、良好的用户界面、易学易用等特点,因而被广泛地应用于测绘、规划、设计、土地管理等行业,AutoCAD为用户提供了多种二次开发工具,其中较常用的有AutoLISP、VBA、ObjectARX、*.net四种方式。AutoLISP是一种解释性的表结构处理语言,具有语言结构简单、开发周期短、不依赖于操作平台的特点,但是作为解释语言,其运行速度和保密性方面有一定的缺陷,并且不适合开发有复杂运算的软件。ObjectARX是基于MicroSoftVisual的开发工具,一个ARX应用程序分享AutoCAD的地址空间并且函数可以直接为AutoCAD所调用,因而是运行速度最快的开发工具,但是MicroSoftVisualC++语言较复杂,开发ARX应用程序需要较多的软件开发经验,也不适合作为非软件开发专业人员的测绘工作者的开发工具。*.net语言是美国微软公司新开发的程序开发工具,AutoCAD支持的时间并布长,还有缺陷。VisualBasic(VB)是美国微软公司推出的程序开发工具,它简单易学,适用面广,在Windows平台上被广泛使用。VBA是VB的一个字集,从AutoCAD14开始,就被集成其中,对有点编程基础的人都可容易的学会,可以作为测绘工作者进行程序设计的首选工具。三、VBA开发AutoCAD应用程序的原理及方法1、ActiveXAutomation技术ActiveXAutomation是微软公司的一个技术标准,其宗旨是在Windows系统的统一管理下协调不同的应用程序,允许这此应用程序之间相互沟通、相互控制,但两个应用程序间的沟通不是对等的,其中,一个程序称为客户程序(Client),另一个程序称为服务器程序(Server)。服务器程序提供一定的接口,可以使任何对象实现自动化。对象包含了一些外部接口,他们被称为方法与属性。方法是自动化的对象的一些函数,是提供给客户程序的外部公共成员函数。属性是一个对象的命名特征,既对象的一些公有数据域。一般情况下,由客户程序提出需要进行什么操作,服务程序针对操作申请,完成相应的命令。2、AutoCAD下实现ActiveXAutomationAutoCAD对AutoCAD本身增加了ActiveX自动化服务功能,即AutoCAD可以作为ActiveX的服务程序,我们可以从其它客户程序中操作AutoCAD。VB是最为常用的支持ActiveXAutomation技术的开发工具,它可以编制出ActiveX的客户程序,用来操作AutoCAD。即利用VB编制能与AutoCAD相沟通的应用程序,以此来实现AutoCAD的二次开发。3、AutoCADVBA的简单介绍微软VBA软件包为AutoCAD提供二样东西:第一个是VBA语言引擎,它的作用是当用户写的应用程序被执行时逐条解释这些代码;第二个是VBA集成开发环境或简称IDE,它提供编辑和调试VBA代码的工具。AutoCADVBA是运行在AutoCAD进程内部的,不必通过与应用程序进行链接,就可以连接到AutoCAD中。AutoCADVBA是通过ThisDrawing对象链接到当前AutoCAD进程的活动图形。通过使用ThisDrawing直接获得访问当前文档对象和所有相关的方法、属性以及所有在该层次中的其他对象的权力。当使用的是全局工程时,ThisDrawing通常指向AutoCAD中的活动文档;当使用的是嵌入工程时,ThisDrawing通常指向包含该工程的文档。嵌入工程是保存在AutoCAD图形中的。当包含有这些工程的图形在AutoCAD中打开时,他们可以自动装载。使用嵌入工程不需要在运行程序之前查找并装载工程文件;全局工程保存在独立的文件中,比嵌入工程更有通用性,但在图形打开时不能自动装载。四、开发AutoCAD应用程序实例打开AutoCAD的菜单工具/宏/VisualBasic编辑器或在AutoCAD命令行里输入VBAIDE,就可打开VBA界面,该界面与VisualBasic基本一致,语法也一样,但它可以直接引用AutoCA的对象、方法和对象的属性。笔者用AutoCAD2002VBA编制了水深辅助软件程序。下面简单介绍它的应用和原理。打开AutoCAD2002,在命令行输入VBALOAD,选择“海图.DVB”,既可在CAD菜单上生成一菜单项“水深辅助”,如图(一)图(一)1、左键点击“水深成图”,可弹出如图(二)的窗口,有如下功能:A、可进行比例尺和图层设置;B、可以进行角度设置,以度为单位,度数和测量方位角一样,与CAD相反,可随意设置0——360间的值。C、颜色增量只对颜色默认有效,即颜色默认选中才可以设置或有效,单位为米,可以任意值设置,一般按等深线的间隔进行设置。对手工画等深线有很好的帮助。D、选颜色默认,即水深可按颜色增量的值进行绘图。不选颜色默认,则上下水深值为一区域,可对各区域水深定颜色。水深区域和颜色可随自己选择。颜色以颜色框内的数字为准(数字为选择颜色在256色中的值)。此功能主要针对于疏浚工程的水深检测。按不同颜色生成的水深,可使水深图一目了然,哪些区域已达到设计水深,哪些区域没有达到,还差多少,这有助于疏浚工程的决策。E、选择文件必须为*.xyz文件,此为美国海洋影象公司的HYPACK软件排序生成的文件。图(二)2、平均水深界面见如下图(三)和图(四),此功能可以大致了解疏浚工程的进度和参加疏浚施工船的施工效果,其使用和功能说明如下:A、整数高一定要输入;B、选多边形时,必须是PLINE线的闭合多边形;C、多边形内可以有其他对象,除了单独却不是水深的数值;D、平均水深1为按通用格式计算出来的,其原理见下面流程图1;平均水深2只对本软件生成的海图格式有效,其原理见下面流程图2;E、水深统计只对本软件生成的海图格式有效;F、基面转化为方便不同水深基准面转化或方便于水深系统的改正,目前只对本软件生成的海图格式有效;G、此提取数据只对本软件生成的海图格式有效;H、水深层为把经过基面转化的水深所放置的图层;如CAD图有同名图层,则利用,无则创建新层;I、选点时,必须包括小数部分;J、生成的文件为*.xyz格式;其中平均水深1的原理和流程图如下:流程图1其中平均水深2的原理和流程图如下:流程图2图(三)图(四)3、数据提取界面见如下图(五)、图(六)、图(七)。由于外单位水深图格式的多样性,为方便计算工程量或基面转化,特制作本功能。其使用和功能说明如下:A、图(五)为可对HYPACK6.4和CASS生成的水深格式提取成*.xyz和*.dat格式的文件的界面,字高为CAD上水深文字的高。图(六)仅针对CASS成图软件生成的水深格式。这二种水深格式相同点是整数、小数、小数点各为一体,即为三个部分;不同点就是小数点的CAD名。该功能是根据AutoCAD图上的文本进行提取,其原理和流程图如下:B、图(七)为海图格式提取数据界面,可生成成*.xyz和*.dat格式图(五)图(六)图(七)4、平均高程的界面如图(八)此功能为吹填工程计算平均高程开发,适用于CASS成图软件生成的高程格式图(八)图(九)5、平均高程的界面如图(九)此功能为港口吹填工程测量的高程系统转化开发,适用于CASS成图软件生成的高程格式。经此生成的高程可用CASS软件直接生成*dat文件,并能用于土方计算。五、结束语《水深辅助》是本人在水运工程测量中,根据需要开发出来的。在实际应用中,它大大了提高工作效率。如以前外单位来的CAD图,都需要手工提取数据再计算平均和方量,费时又容易出错。用该软件的数据提取则可迅速提取出数据,比以前手工提取数据快了许多倍。因此掌握一门编程语言,对测绘工作者是很有裨益的。事实上,计算机科学的飞速发展和数字化测绘的日益普及,工程对精度要求和效率的提高,对我们测绘工作者也提出了更高的要求,如果测绘工作者能够掌握一种编程语言,会对自己的工作大有裨益。而VBA由于其简单易学,功能强大,并内嵌于AutoCAD,应该成为我们测绘工作者学习AutoCAD二次开发的首选工具。参考文献:[1](美)MarionCottingham《AuTOCADVBA从入门到精通》电子工业出版社2001[2]李长勋《AutoCADActiveX二次开发技术》国防工业出版社2005[3]中华人民共和国行业标准《水运工程测量规范》JTJ203-2001[4]梁开龙《水下地形测量》测绘出版社1995
本文标题:AutocadVBA在水运工程测量中的应用
链接地址:https://www.777doc.com/doc-2902271 .html