钱 敏
(交通运输部天津水运工程科学研究所,天津 300456)
AutoCAD VBA程序开发在水运工程研究中的应用
钱 敏
(交通运输部天津水运工程科学研究所,天津 300456)
通过对AutoCAD的VBA二次开发技术的介绍,并结合水运工程研究中遇到的实际问题和实践经验,给出了VBA二次开发技术在复杂流场的自动绘制、不规则水深数据的提取2个实例的应用。通过大量的研究实践表明,采用VBA程序对AutoCAD进行二次开发,能够对海量数据进行快速准确的处理,能够大大提高数据和图形处理的效率,并在水运工程研究中能够得到广泛的应用。
AutoCAD;VBA;自动绘制;自动提取
Biography:QIAN Min(1979-),female,engineer.
近年来随着计算机技术的飞速发展,各类软件、程序在管理、工程、研究等领域得到了广泛应用,并快速有效地解决了大量问题。在水运工程设计、研究等方面,3S技术、CAD自动成图技术等也得到了空前的应用和发展,不仅为设计人员提供了精确、精美的操作平台,也为研究人员在现场资料处理、数据计算、成果演示等方面提供了强有力的工具[1-2]。但由于很多软件都主要提供了应用功能,缺少二次开发的空间,因此如果大量数据在格式上或处理结果上有特别需要,一些软件就很难直接满足要求,这在水运工程研究中也是常常遇到的问题。因此就需要选取适合的软件,并能够在此基础上进行二次编程开发,这样既可以提高工作效率,也能够适应处理结果的随意性。AutoCAD绘图软件近年来在各类行业的设计及研究中得到了广泛应用,该软件不仅能够很好地处理矢量图,也具备VBA等二次开发功能,设计或研究人员可在此平台上根据需要进行程序编制,实现绘图、数据读写、数据计算等多种功能。本文首先对AutoCAD的VBA二次开发技术进行介绍,根据作者近年来在水运工程研究中应用VBA开发的实践经验,给出VBA在该领域多项应用实例。
AutoCAD是Autodesk公司于20世纪80年代为计算机应用CAD技术(Computer Aided Design)而开发的专业绘图软件包,由于它具有完善的绘图功能、良好的用户界面、易学易用等特点,近年来在各类行业的设计及研究中得到了广泛应用。该款软件为用户提供了多种二次开发工具,其中常用的有AutoLISP、VBA、ObjectARX、*.net 4种方式。其中VBA是VB的一个子集,是美国微软公司推出的程序开发工具,它简单易学,适用面广,也能够在Windows平台上被广泛使用,是设计、研究人员进行程序设计的首选工具。近年来,对于AutoCAD软件中VBA程序的二次开发已有过大量研究和实践,比如在港口断面测量的计算机成图方面,蒋国军、王朝[3]利用VBA对CAD进行二次开发,采用人机对话可视化界面,开发出界面友好的断面自动成图软件,不仅提高了测量精度,也大大提高成图效率。王小敏[4]提出在AutoCAD2000图形支承平台下,使用AutoCAD VBA及ActiveX来进行公路路线纵断面CAD系统的开发。麦苗、高峰[5]应用VBA技术实现了提取水深数据的自动化技术。
VBA(Visual Basic for Application)是新一代标准宏语言,具有相当完整的高级语言特征。VBA在AutoCAD中主要包括语言引擎和集成开发环境(IDE),前者应用程序中被执行的逐条代码,后者是提供编辑和调试VBA代码的工具。VBA是在AutoCAD进程内部运行的,可直接连接到AutoCAD。其主要通过ThisDrawing对象链接到当前AutoCAD进程的活动图形。利用ThisDrawing直接获得访问当前文档对象和所有相关的方法、属性。在AutoCAD环境中与绘图相关的各类对象封装了不同的图形操作功能,启动某项程序就需要使用应用程序对象。这些对象均包含属性、方法,这些属性和方法也是与外界的接口。下面就AutoCAD中对象的模型框架作一些简介[6]:
(1)AutoCAD.Appilcation(应用程序对象)为最顶层,获取它就意味着启动了AutoCAD应用程序,也就找到了访问其他对象的根接口。
(2)Document(图形文档对象)及其集合Documents是AutoCAD对象模型的第二层,Document相当于一打开的*.Dwg文件,它主要连接AutoCAD的绘图对象集合及对象。Document对象包含Layerscollection、Linetypescollection、Textstylecollection、Utility等子对象,用户可使用Document对象的对应属性去访问它们。
(3)Modelspace Entites Collectiont和Paperspace Entites Collection是AutoCAD对象模型的第三层,它们是Document的子对象,Circle、Line、Point、Polyline、shape、Text等又是它们的子对象,即第四层对象,而这些对象正是组成图形的基本实体。
上述即为AutoCAD VBA程序语言的基本结构和原理,此处不再赘述,以下主要以几项实例进一步阐述其应用情况。
现场大范围多垂线水文测量以及物理模型、数学模型等试验的模拟结果会产生大量矢量数据,采用程序快速、准确地绘制出矢量图是必要的。以下编制的VBA程序能够处理和绘制类似大批量流场数据,程序拓展性和随意性强,不仅能够结合CAD地形及方案绘制复杂流场,而且能够在其中设置流场颜色、箭头尺寸、旋转角度,并可进一步拓展加入所需要的数学计算。
此外,在潮流数值模拟时,由于网格剖分的疏密往往随关注区域不同而有所差异;物理模型流场试验中,也会产生大量的疏密不均的原始数据,这些都会导致直接绘制的流场出现疏密不均的状况。因此,在绘制流场前有必要对原始数据进行前处理,并采用适当的方法进行数据插值处理,将原有流场数据在空间上均匀化以使流场显示效果更佳。数据均化的插值处理方法很多,一方面可直接采用Surfer、Tecplot等软件进行数据的前处理,建立适当的网格进行均化插值。另外,也可以将一些插值算法直接植入程序中,常用的算法包括距离加权插值法、克里金插值法、最近邻点插值法等,这些算法在网上或文献中均能找到基本原理和源代码,此处不再赘述。
以下给出VBA在AutoCAD中自动绘制流场的主体程序结构:
在提取CAD水深地形数据时,常会遇到选中的数据提取后有坐标,但没有水深数据的情况,这主要是不同程序写入CAD时采用的数据格式和对象不同。通常情况下,采用String对象的居多,而一旦遇到其他对象格式,则通常的程序就很难实现了。以下程序主要解决这一问题,该程序主要通过改变对象类型来实现对不同格式水深数据的提取,其中程序中的坐标值z0和文字内容zt均有选择性地作为所需水深值。该程序的主要结构如下:
图1 VBA程序绘制流场结果示例Fig.1 Example of flow field by VBA program
本文对AutoCAD中的二次开发程序VBA语言原理及方法进行了介绍,并结合自身经验编制了实用VBA程序,以复杂流场的自动绘制和不规则水深数据提取2个实际案例,阐述了VBA在水运工程研究中的应用情况。大量研究实践表明,采用VBA程序对AutoCAD进行二次开发能够对海量数据进行快速准确的处理,也能实现矢量图形的自动绘制,大大提高了数据和图形处理效率,能够在水运工程研究中得到更深入和广泛的应用。
[1]高莹.Acad中地形图数据注记格式的转换[J].水道港口,2006,27(S0):35-38.
GAO Y.Conversion of Data Annotation Format in Topographic Maps under Acad[J].Journal of Waterway and Harbor,2006,27(S0):35-38.
[2]杨鲲,陈广利.地理信息系统与数字化测图[J].水道港口,2000,6(2):41-42.
YANG K,CHEN G L.Geographic Information System and Digital Mapping[J].Journal of Waterway and Harbor,2000,6(2):41-42.
[3]蒋国军,王朝.港口断面测量计算机成图探讨[J].港工技术,2010,47(3):57-59.
JIANG G J,WANG C.Inquiry on Computer Mapping for Port Cross-section Measurement[J].Engineering Technology,2010,47(3):57-59.
[4]王小敏.基于VBA的公路纵断面 CAD系统开发[J].交通科技,2004,202(1):31-34.
WANG X M.Basis VBA on the Research of Developing Highway Vertical Section[J].Tech.,information of Water Transportation,2004,202(1):31-34.
[5]麦苗,高峰.应用 VBA 技术实现提取水深数据自动化[J].水道港口,2006,27(2):123-126.
MAI M,GAO F.Automatic Pick-up of Water Depth Data With VBA Technique[J].Journal of Waterway and Harbor,2006,27(2):123-126.
[6]闫志刚,赵晓虎,唐宏.AutoCAD2000 在测量数据处理中的应用[J].北京测绘,2000(3):20-24.
YAN Z G,ZHAO X H,TANG H.Application of AutoCAD2000 on Survey Data Processing[J].Beijing Surveying and Mapping,2000(3):20-24.
Application of program development for AutoCAD VBA in research on port and waterway engineering
QIAN Min(Tianjin Research Institute for Water Transport Engineering,Tianjin300456,China)
The redevelopment technique for AutoCAD VBA was introduced in this paper.Combining with the problem and experience of research on port and waterway engineering,the two application examples were provided,which included the programs of automatic drawing of flow field and the extraction of irregular depth data.Lots of practices indicate that VBA can promote greatly the efficiency of processing to mass data and graph in AutoCAD,and that will be applied extensively in the research on port and waterway engineering.
AutoCAD;VBA;automatic drawing;automatic extraction
TP 311
A
1005-8443(2012)03-0270-04
2012-03-05;
2012-04-19
钱敏(1979-),女,江苏省溧阳人,工程师,主要从事计算机软件及遥感处理方面研究。
book=273,ebook=128