APP下载

AutoCAD二次开发在测量中的应用

2016-08-23彭秋萍

广西水利水电 2016年2期
关键词:批量二次开发样式

彭秋萍

(广东省水文局汕头水文分局,广东 汕头 515041)

AutoCAD二次开发在测量中的应用

彭秋萍

(广东省水文局汕头水文分局,广东 汕头 515041)

AutoCAD是目前应用较为广泛的计算机辅助绘图软件,拥有良好的用户界面,较完善的绘图功能,操作简单的特点,但是仅仅基于AutoCAD绘图是不能满足测量绘图中的特殊需要。为此,概述了AutoCAD的一些基本知识,并用VBA对AutoCAD进行二次开发,解决绘图中一些实际的问题:批量展绘点,批量构造多段线、直线,批量变换点样式等。实现了水文岸边地形测量中,自动绘制岸边道路及建筑物功能。

AutoCAD;VBA;开发;地形测量

1 概述

AutoCAD是制图人员常用的绘图软件,以其强大的绘图功能在建筑、测量及机械等领域广泛应用[1],基于AutoCAD的环境下,可以绘制多种图形,但是要批量展绘野外测量点和构造线是不能实现的,同时,在绘图过程中,常常需要修改文本的属性,基于AutoCAD对于个别的文字修改起来并不难,但是如果是想一次性对文本进行修改却是一件费时又费力的事情,如果可以对AutoCAD进行二次开发,编写一些程序就可以实现这一功能,将大大减少绘图员的工作时间,提高绘图员的绘图效率。将Auto⁃CAD的绘图功能与程序开发语言相结合,利用VBA语言技术对AutoCAD进行二次开发,实现AutoCAD图形的自动绘制或修改功能[2]。

本文主要论述了AutoCAD开发的一些基本知识以及利用VBA对AutoCAD进行二次开发:①介绍了一些关于AutoCAD开发需了解到一些基本知识;②用VBA实现了AutoCAD的展点功能,即实现批量画点并修改点的样式;③实现了批量绘制直线与多段线,可采用手工方式输入点名自动绘制直线或多段线,同时可采用导入的形式自动绘制直线或多段线;④对文字高度实现了批量修改功能。

2 AutoCAD的对象模型

2.1 application对象

用户访问AutoCAD图形时,需通过AutoCA⁃DActiveXAutomation对象,而这个对象的根是Appli⁃cation对象,当用户要通过某种方法或特性来访问图形中的对象时都需要通过Application对象,同时Application对象还提供了指向VBAIDE(通过VBE特性)、AutoCAD工具栏(通过MenuGroups和Menu⁃Bar集合)和菜单以及AutoCAD图形(通过Docu⁃ments集合)的链接。

2.2 Document对象

通过Document对象可以访问CAD中所有图形和大部分非图形对象。当用户需访问图形对象时(点、线、圆等图形)可通过ModelSpace和PaperSpace集合来访问,访问非图形对象时(文本样式、线型、图层等)可通过具有类似名称的集合来访问,访问图形特性时可通过Document对象的SummaryInfo特性。通过Document对象还可访问Utility和Plot对象。

2.3 Utility对象

Utility对象提供应用程序中使用的输入函数和转换函数,这些输入函数可以用来提示用户在Auto⁃CAD命令行上输入各种类型的数据,例如字符串、整数、实数和点等。

2.4 选择集

在VBA开发过程中,如何实现用户和AutoCAD之间的交互是需要解决的重点,这种交互方式可通过两种途径解决:①Utility对象的Get系列方法;②选择集。当用户需同时选择多个图形对象时,只有通过选择集的方式才可实现,另外,选择集还提供了丰富的手段供用户选择符合某种特定条件下的实体对象。

3 AutoCAD开发实例[3-6]

在水文测量中常常需要大量导入高程点或是地物特征点,特别是用全站仪测得测量点后需要导入AutoCAD制图,而AutoCAD无法实现批量展点的功能,同时,岸上测量的主要构筑物又是以道路及建筑物为主。本文的设计思路是将现场这些地物的特征点采集后,把采集的地形点批量展绘在CAD上,对需要连成多段线或是直线的地物地貌的特征点号存在txt文本中,通过VBA程序对CAD进行二次开发实现自动绘图,实现了批量的展绘点,批量的构造多段线、直线,对点样式的批量修改,对文本高度的批量修改,其思路如图1所示。

图1 展点、画线思路

在具备二维点坐标数据文件的前提下,通过对文本文件中全部点的读操作来批量创建点图元,在点图元的信息中包括点号、点坐标、点的高程值。考虑其中某几个点按顺序构成直线或多段线,方法有两种,第一方法是通过读取文本文件批量构造多条直线或是多段线;第二种方法是通过在CAD的命令窗口里输入点号,让它自动按输入点号的顺序构成直线或是多段线。

应用循环的语句批量创建点、多段线、直线、点号文字、高程文字,存在VBA宏里,加载在菜单栏上运行。下面是主要的程序代码:

(1)创建点坐标

Setpointobject=ThisDrawing.ModelSpace.Ad ⁃dPoint(point)

(2)创建点号单行文字

Settextobject=ThisDrawing.ModelSpace.AddText(pn(i),interpoint,1)

(3)创建点高程值单行文字

Settextobject1=ThisDrawing.ModelSpace.AddText(pz(i),interpoint1,1)

(4)在命令窗口上输入字符串,获取字符串

inputname (i) =ThisDrawing.Utility.GetString(False,vbNewLine&"请输入点号")

3.1 批量展点

把全站仪存储的观测的原始数据存入电脑,其格式如表1。

表1 原始数据存入表

通过编制的程序,可直接将数据导入并将点展示在CAD界面中,如图2所示。

图2 批量展点

展绘在AutoCAD的点,根据不同的需要,常常会改变点的样式。在水文测量绘图中常用的点样式有:图根点、埋石图根点、注记点、十字丝、方块点。点样式图形是以外块的形式存储起来,当选择点样式的时候,程序会找到图纸上点的坐标,然后赋给图块的插入点坐标,即就在点的坐标上插入点样式图块。

在模型空间中插入块

RetVal=object.InsertBlock(InsPoint,

Name,Xscale,Yscale,ZScale,Rotation[,Password])

批量改变点的点样式,程序中设计的窗体如图3(a)所示,以埋石图根点作为例子改变点的样式,如图3(b)所示。

图3 点样式修改

3.2 批量画线

在展绘好的地形点上,把需要连成多段线或是直线的地物地貌的特征点号存在txt文本中,通过VBA程序实现绘图。txt文本如图4(a)所示,多段线的效果图如图4(b)所示。

图4 批量画线

(1)创建多段线

Setplineobject1=ThisDrawing.ModelSpace.Ad ⁃dPolyline(points)

(2)创建直线

Setlineobject1=ThisDrawing.ModelSpace.Ad ⁃dLine(point1,point2)

3.3 文字变换高度

在CAD图形中,文字是一个很重要的属性信息。在绘图当中,对文字的修改是经常需要的,特别是在需要对岸上一些构筑物的标注时,往往不知道哪个高度大小比较合适,经常需要修改比例,想要选中高度在两个值之间的文本,或是把选中的文字高度统一加上一个值,如果能在AutoCAD批量的修改它的高度,这样就可以大大提高绘图的效率。笔者针对CAD的文本的编辑功能比较弱,对Auto⁃CAD的文字编辑功能进行了二次开发。文字高度变换的程序流程下:

(1)创建选择集,从AutoCAD屏幕上框选得到Setsset=ThisDrawing.SelectionSets.Add("name")

创建选择集的时候需要注意的是:及时删掉不需要的选择集,不然程序运行时会出现错误。创建时可以防止存在已有的选择集得代码如下:

IfNotIsNull (ThisDrawing.SelectionSets.Item("name"))Then

Setsset=ThisDrawing.SelectionSets.Item("name")

sset.Delete

EndIf

sset.SelectOnScreen

(2)把从选择集里得到得对象存储在一个Ex⁃portEntity函数,以便调用对象:

ExportEntity(ByRefobjCollection()AsVariant,nAsInteger,ByRefEntitys()AsVariant)

在AutoCAD上选择到的选择集对象会显示虚线。

(3)程序可以只处理单行文字,也可以只处理多行文字,还可以单多行文字一起处理。

(4)调用窗体根据不同的过滤条件得到要做变换的文字对象。过滤条件有:大于、小于、等于、不等于、在两个值之间,窗体如图6。

在一幅已经标好尺寸的构筑物平面图,当要出图的时候发现他们图形和尺寸标注大小比例不好,需要批量的修改尺寸的高度,原图有些标注尺寸的字压到了线,如果用手工去改变这些标注尺寸的大小值,是一件很费时的事情,但如果用程序去实现这一过程就简单了。用程序操作的效果图和原图对比如图7。

图6 文字高度过滤条件窗体

图7 文字修改效果对比

4 结语

在本程序中实现批量创建点和线,批量展绘地形点,点信息包括点的坐标、点号及高程值,根据地物特征的需要,批量的把这些点连成多段线和直线,也可以在命令行上输入点号自动绘制多段线和直线。同时,程序实现批量变换点的样式和文字高度,通过本文中程序的实现,在熟悉AutoCAD实体和对象集合、它们的属性和操作方法的前提下,可以充分利用VBA对AutoCAD进行二次开发,明显地提高绘图的效率。

[1] 刘克福,牟有忠.VBA与AutoCAD中的二次开发[J].科技资讯,2007,(15):87-88.

[2] 李 建.利用AutoCADVBA获取等高线上高程点的方法[J].实验室研究与探索,2009,28(10):172-175.

[3] 丁国军.VBA的二次开发在工程测绘中的应用[J].科技经济市场,2007(2):9-10.

[4] 李长勋.AutoCADVBA程序开发技术[M].北京:国防工业出版社,2005.

[5] 张 帆,郑立楷,卢择临,等.AutoCADVBA二次开发教程/实例通系列[M].北京:清华大学出版社,2006.

[6] 吴业红.应用VBA技术进行AutoCAD二次开发[J].电脑知识与技术,2009,5(10):7950-7951.

(责任编辑:周 群)

Application of AutoCAD secondary development achievements in survey

PENG Qiu-ping
(Shantou Branch of Guangdong Hydrology Bureau,Shantou 515041,China)

As the computer-aided drawing software that is now widely used,AutoCAD provides good user interface,relatively perfect drawing functions and permits simple operation,but fails to meet the special requirements for sur⁃vey drawing.Based on a brief introduction of the basic knowledge of AutoCAD,secondary development of AutoCAD was conducted with VBA to solve the actual problems of drawing such as batch plotting points,batch structural poly⁃lines and lines,batch conversion of point style etc.,so as to permit automatic drawing of bank roads and buildings required for shore topographic survey.

AutoCAD;VBA;development;topographical survey

TP391.72

B

1003-1510(2016)02-0047-04

2016-01-22

彭秋萍(1987-),女,广东汕头人,广东省水文局汕头水文分局工程师,学士,主从事水利水电测量工程。

猜你喜欢

批量二次开发样式
CPMF-I 取样式多相流分离计量装置
CPMF-I 取样式多相流分离计量装置
批量提交在配置分发中的应用
取样式多相流分离计量装置
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
基于VBA井斜数据批量校正方法
这是巴黎发布的新样式
在数控车床上批量钻铰孔类工件的实践