【VB开源代码栏目提醒】:网学会员在VB开源代码频道为大家收集整理了“AutoCAD+VBA程序开发在水运工程研究中的应用 - 硕士论文“提供大家参考,希望对大家有所帮助!
第33卷第3期 水道港 口 Vol33 Nn.3 2012年6月 Journal of Waterway and Harbor Ju..2012 Aut0CAD VBA程序开发在水运工程研究中的应用 钱敏 (交通运输部天津水运工程科学研究所,天津300456) 摘要:通过对AutoCAD的VBA二次开发技术的介绍,井结台水运工程研究中竭y.iJ的实际问题种实践 经验,给出了VBA二次开发技术在复杂流场的自动绘制、不规则水深数据的提取2个实例的应用。
通过 大髓的研究实践表明.采用VBA程序对AuIoCAD进行二次开发,能够对海量数掘进行快速准确的处理, 能够大大提高数据和图形处理的效率,并在水运丁程研究中能够得到广泛的应用。
关键词:AutoCAD;VBA;自动绘制;自动提取 中图分类号:TP 311 文献标识码:A 文章编号:1005—844312012)03—0270—04 近年来随着计算机技术的飞速发展,各类软件、程序在管理、工程、研究等领域得到了广泛应用,并快速 有效地解决了大量问题。
在水运T程设计、研究等方面,3s技术、CAD自动成斟技术等也得到了空前的应用 和发展,不仅为设计人员提供了精确、精美的操作平台,也为研究人员在现场资料处理、数据计算、成果
演示 等方面提供了强有力的_【:具。
1“。
但由于很多软件都主要提供了应用功能,缺少二次开发的空间,因此如果 大量数据在格式上或处理结果上有特另U需要,一些软件就很难直接满足要求,这在水运工程研究中也是常常 遇到的
问题。
因此就需要选取适合的软件,并能够在此基础上进行二次编程开发.这样既可以提高丁作效率, 也能够适应处理结果的隧童性。
.AutoCAD绘图软件近年来存各类行业的
设计及研究中得到了广泛应用.泫软 件不仅能够很好地处理矢量图,也具备VBA等二次开发功能,设计或研究人员可在此平台上根据需要进行 程序编制,实现绘图、数据读写、数据计算等多种功能。
本文首先对AutoCAD的VBA二次开发技术进行介 绍,根据作者近年来在水运工程研究中应用VBA开发的实践经验,给出VBA在该领域多项应用实例。
1 AutoCAD VBA概况及原理 1.1 AutoCAD简介及应用概况 AutcCAD是Autodesk公司于20世纪80年代为计算机应用CAD技术(Computer Aided Design)而开发 的专业绘图
软件包,由于它具有完善的绘图功能、良好的用户界面、易学易用等特点.近年来在各类行业的设 计及研究中得到了广泛应用。
该款软件为f{j户提供了多种二次开发下具,其中常用的有AutoLlSP、VBA、 ObjeetARX、*.net 4种方式。
其中VBA是VB的一个子集.是美同微软公司推ff{的程序开发工具,它简单易 学,适用面广,也能够在Windows平台上被广泛使用,是设计、研究人员进行程序设汁的首选工具。
近年来,对 于AutoCAD软件中VBA程序的二次开发已有过大量研究和实践,比如在港口断面测量的
计算机成图方面, 蒋国军、王朝3利用VBA对CAD进行二次开发,采用人机对话可视化界面,开发出界面友好的断面自动成 网软件,不仅提高了测量精度,也大大提高成网效率。
王小敏4提出在AutoCAD2000罔形支承平台下,使用 VBA及ActiveX来进行公路路线纵断面CAD系统的开发。
麦苗、高峰r应用VBA技术实现了提取 AutoCAD 水深数据的自动化技术。
1.2 VBA程序的基本原理 收稿15t期:2012—03—05;修回日期:2012-04—19 作者简介:钱敏(1979~),女,江苏省溧阳人.T干旱i而,主耍从事计算机软件及遥感处理方而研究。
Biography:QIAN Min(1979一).female,engineer.万方数据 2012年6月 钱敏 AutoCAD VBA程序开发在水运T程研究中的应用 27l VBA(Visual Basic for Application)是新-ft.标准宏语言,具有相当完整的高级语言特征。
VBA在AutoCAD 中主要包括语言引擎和集成开发环境(IDE),前者应用程序中被执行的逐条
代码,后者是提供编辑和调试 VBA
代码的工具。
VBA是在AutoCAD进程内部运行的,可直接连接到AutoCAD。
其主要通过’F11isD--Hw.『19对 象链接到当前AutoCAD进程的活动图形。
利用ThisDrawing直接获得访问当前
文档对象和所有相关的方法、 属性。
在AutoCAD环境中与绘图相关的各类对象封装了不同的图形操作功能,启动某项程序就需要使用应 用程序对象。
这些对象均包含属性、方法,这些属性和方法也是与外界的接口。
下面就AutoCAD中对象的模 型框架作一些简介-6一: (1)AutoCAD.Application(应用程序对象)为最顶层.获取它就意味着启动了AutoCAD应用程序,也就找 到了访问其他对象的根接口。
(2)Document(图形
文档对象)及其集合Documents是AutoCAD对象模型的第二层,Documerll相当于一 打开的¥.Dwg文件,它主要连接AutoCAD的绘图对象集合及对象。
Document对象包含Layerscollection、Line— typeseollection、nxtstylecollection、Utility等子对象,用户可使用Documenl对象的对应属性去访l’口1它们。
(3)Modelspace Entites Colleetiont和Paperspaee Entites Collection是AutoCAD对象模型的第i层,它们是 Document的子对象,Circle、Line、Point、Polyline、shape、.11ext等又是它们的子对象,即第川层对象+而这些对象 正是组成图形的基本实体。
上述即为AutoCAD VBA程序语言的基本结构和原理,此处不再赘述,以下主要以几项实例进一步阐述 其应用情况。
2在水运工程研究中的应用实例 2.1复杂流场的自动绘制 现场大范围多垂线水文测量以及物理模型、数学模型等试验的模拟结果会产生大量矢量数据,采用
程序 快速、准确地绘制…矢量图是必要的。
以下编制的VBA程序能够处理和绘制类似大批量流场数据,程序拓展 性和随意性强,不仅能够结合CAD地形及
方案绘制复杂流场,而且能够在其中设置流场颜色、箭头尺寸、旋 转角度,并可进一步拓展加入所需要的数学计算。
此外,在潮流数值模拟时,由于网格剖分的疏密往往随关注区域不同而有所差异;物理模型流场试验中, 也会产生大量的疏密不均的原始数据,这些都会导致直接绘制的流场m现疏密不均的状况。
凼此,在绘制流 场前有必要对原始数据进行前处理,并采用适当的方法进行数据插值处理,将原有流场数据在空间上均匀化 以使流场显示效果更佳。
数据均化的插值处理方法很多,一方面可直接采用Surfer、Tecplot等软件进行数据 的前处理,建立适当的网格进行均化捕值。
另外,也可以将一些插值算法直接植入程序中,
常用的箅法包括距 离加权插值法、克里金插值法、最近邻点插值法等,这些算法在网上或文献中均能找到基小原理和源
代码,此 处不再赘述。
以下给fi{VBA在AutoCAD中向动绘制流场的主体程序结构: Dim plineObj As AcadLWPolyline Dim poIntsl(0 To 3),points2(0 To 3),points3(O To 3)As Double Dim x,Y.a,v,xl,yl,aa As Double:pi=3.1415926 Open”D:\Field.dat”For Input As#l DoWhileNot EOF(1) Input#l,x,y,v,a ‘将航海坐标转化为直角坐标 fla=450一a:If aa>=360 Then:aa=aa一360:End If 。
‘定义线段始末点坐标 pointsl(0)=x:pointsl(1)=Y xl=x+v+Cos(Ra 4 pi/180):yl 2 Y+v 8 Sin(aa 4 pi,180)万方数据 水道港口 第33卷第3期 pmnbl(2)=xl:poimsl(3)=yl ‘创建一细多段线对象 Set plineObj=ThisDrawing.ModelSpace.AddLightWeishtPolyline(pointsl) ’……同法用线段绘制箭头 plineObj.c010r=acGreen‘设置流场颜色 Loop Close#1‘关闭文件通道 !。
。
广\厂———■—~ 2.2不规则水深数据的自动提取 在提取CAD水深地形数据时,常会遇到选中的 数据提取后有坐标,但没有水深数据的情况,这主要 一岛——,\20一——12-”o 是不同程序写入CAD时采用的数据格式和对象不 同。
通常情况下,采用String对象的居多,而一旦遇到 、 I…,、 其他对象格式,则通常的程序就很难实现了。
以下程 ≯ …. 序主要解决这一问题,该程序主要通过改变对象类型 图1 VBA程序绘制流场结果示例 来实现对不同格式水深数据的提取,其中程序中的坐 Fig 1 Example offlow field by VBA program 标值z0和文字内容zt均有选择性地作为所需水深 值。
该程序的主要结构如下: Dim x0(),yO(),加()AsDouble:Dim zt()As String Dim n,m,mill,r As Integer:Dim SSetObj As AcadSeleetionSet Dim Pnt As Variant Set SSetObj=CreateSelectionSet:SSetObj.SelectOnScreen If SSetObj.Count=0 Thcn Exit Sub ‘提取选中的水深数据 Fori=0 To SSetObj.Count—l Pnt=SSetObj(i)insertionPoint:ReDim P”∞rve x0(m),yO(m),zO(m),n(m) x0(m)=Formet(Pnt(0),”0.0”):y0(m)=Format(Pnt(1),”0.0”) z0(m)=Formm(Pm(2),”0.0”):n(m)=(SSetObj(i)textStrlng) m=m+1 Nexti Print#1。
x0(i),yO(j),zO(i),吐(i)‘需设置循环输出至指定文件 ‘用于在屏幕中选取所需数据的子程序 Public Function CreateSeIeetionSet(Optional ssName As String。
”ss”)As AcadSeleetionSet Dim ss As AcadSeleetionSet On Error Resume Next:Set SS=ThisDrawingSelectionSets(ssName) If Err Thell Set SS=ThisDrawing SelectionSets Add(ssName) SS.Clear:Set CreateSeleetionSet=SS End Funetion 3结论 本文对Aut0CAD中的二次开发程序VBA语言原理及方法进行了介绍.并结合自身经验编制了实用VBA 程序,以复杂流场的自动绘制和不规则水深数据提取2个实际案例,阐述了VBA在水运工程研究中的应用 情况。
大量研究实践表明,采用VBA程序对AuWCAD进行二次开发能够对海量数据进行快速准确的处理, 也能实现矢量图形的自动绘制,大大提高了数据和图形处理效率。
能够在水运工程研究中得到更深入和广泛 的应用。
万方数据 2012年6月 钱敏 AutoCAD VBA程序开发在水运工程研究中的应用 273 参考文献: 〔Ij高莹.Acad中地形罔数据注记格式的转换〔J〕.水道港口,2006。
27(s0):35—38. GAO Y.Conversion ofDataAnnotationFormatinTopographicMaps underAcad〔J〕.Journal ofWaterway and Harbor,2006,27(50): 35—38. 〔2〕杨鲲.陈广利.地理信息
系统与数字化测I割〔J〕.水道港1:3,2000,6(2):41—42. YANGK,CHENGLGeographicInformation System and Digital Mapping〔J〕.Journal ofWateⅢ日y 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 MeasurementLJ J.Engineering TechnologY.2010.47 (3):57—59 r 〔4〕王小敏.基于VBA的公路纵断面CAD系统开发〔J〕.交通科技,2004。
202(】):3I-34. WANG x M.Basis VBA on the Research of Developing Highway Verlieal Section〔J〕.Tech.,information of Water Transportation, 2004.202(1):3I一34. 〔5〕麦苗,高峰.应用VBA技术实现提取水深数据自动化〔J〕.水道港kq,2006.27(2):123一126. MAI M,GAO F.Automatic Pick·up of Water Depth Data With VItA‘Feehnique〔J〕.Journal of wateⅢav 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 Data Oil SuⅣ8Y Processing〔J〕.Beijing Surveying and Mapping. 2000(3):20—24. Application of program development for AutoCAD VBA in research on pod and waterway engineering QIANMin 礤j嘶in Research Institu.te}oT Water Tramport En87neering,Tianjin 300456。
China) Abstract:The redevelopment technique for AutoCAD VBA introduced in this was paper.Combining with theproblem and experience of research 011 port and waterway engineering,the two application examples wereprovided.which included the progTellis of automatic drawing of flow field and the extraction of irregular depthdata-Lots of practices indicate that VBA can promote greatly the efficiency of processing to mass data and graphin AutoCAD,and that will be applied extensively in the research on and waterway engineering. port Key WOrds:AutoCAD;VBA;automatic drawing;automalic extraetion万方数据AutoCAD VBA程序开发在水运工程研究中的应用作者: 钱敏, QIAN Min作者单位:
交通运输部天津水运工程科学研究所天津300456刊名: 水道港口英文刊名: Journal of Waterway and Harbor年,卷期: 2012333本文链接:http://d.g.wanfangdata.com.cn/Periodical_sdgk201203016.aspx.