AutoCAD扩展属性在地形图更新中的应用
2015-07-04张玉方漳州市测绘设计研究院福建漳州363000
张玉方(漳州市测绘设计研究院,福建漳州 363000)
AutoCAD扩展属性在地形图更新中的应用
张玉方∗
(漳州市测绘设计研究院,福建漳州 363000)
摘 要:主要介绍了AutoCAD实体的扩展数据的存储格式,并提出采用VBA编程技术对地形图中的对象属性进行存储,实现了地形图图形数据与属性数据一体化结合,从而方便添加或查询与图形可视性无关的扩展信息,如地形图修测日期、内外业人员、文件存放路径等,对地形图更新日常管理提出了一种新的处理思路。通过一段时间的应用,证明此方法有效地提高了工作效率,更好地避免了地形图重复修测。
关键词:实体;扩展属性;地形图更新
1 引 言
AutoCAD作为国际上最流行的CAD绘图软件,在测绘行业的应用广泛。目前,国家及各省、市的基础测绘、城市测量及许多工程设计用图,成图格式多为AutoCAD的DWG格式[1]。在测绘行业的图形里,各种地理元数据的分类繁多,所附地理信息量巨大,仅凭AutoCAD的图层、颜色、线宽等图形参数无法处理,需利用AutoCAD的扩展属性来解决。大比例尺地形图日常测绘琐碎而繁多,地形图更新时无法确定待更新地形图的修测时间及人员安排等信息,往往出现重复测量等现象,从而浪费人力和物力。基于以上工作现状,本文提出了利用地形图的扩展属性对地形图中的实体属性进行存储,将地形图图形数据与属性数据一体化结合,通过查询实体扩展属性来体现作业人员、工作时间、存放路径等信息,避免重复测量,有效节省人力、物力和财力,提高工作效率。
2 AutoCAD扩展属性存储方法
实体的扩展属性由应用程序所建立,跟随在该实体常规的实体数据之后,它与常规实体数据一起构成内容更加广泛的实体数据。VBA应用程序可以为实体附着扩展属性(Xdata),它可以附着在任何实体上,包含一个或多个1001组。每一组均以一个互不相同的应用类型名开头,扩展属性的组码在1000~1071之间,按应用类型分组存取不同的数据以适应需要。CAD实体的扩展属性位于普通数据之后,扩展属性的数据结构为(-3应用程序名称类型应用程序名称实体扩展属性类型实体扩展属性)。应用类型名是存取扩展实体数据的标识,为最大长度为31字节的字符串。附着扩展属性必须指定应用类型名,用户在定义应用类型名时最好具备一定的意义,便于对其进行维护应用。结合地形图属性要求,在AutoCAD中地形图数据的属性结构定义[2]如表1所示。
AutoCAD中地形图数据属性结构 表1
3 程序实现
3.1开发工具介绍
VBA(Visual Basic for Application)是基于ActiveX Automation技术的AutoCAD二次开发工具,可以通过ActiveX与AutoCAD进行通信,并操纵AutoCAD的许多功能[3]。它基于Visual Basic版本,是完全面向对象体系结构的一种编程语言,有着与VB几乎相同的开发环境和语法。VBA依附于主应用程序AutoCAD,它与主程序的通信简单而高效,由于共享内存空间,使它具有更快的执行速度,且其语法结构简洁[4],因此深受广大工程技术人员的喜爱。
3.2开发流程
软件主要用于地形图更新时,为要更新的地形图添加修测时间,作业人员等信息,方便下次修测本区域时的人员安排,是否修测或重测等问题。功能主要包括添加地形图属性信息和查询地形图属性信息两个方面。系统设计流程图如图1所示。
图1 系统设计流程图
3.3用户界面设计[5]
鉴于用户界面要简洁,便于用户操作,本程序的用户界面如图2所示。程序一启动,就打开图所示的用户窗体,由用户选择是添加地形图属性信息,还是查询地形图属性信息。如果选择添加地形图属性信息,必须先填完整所需的信息,才可添加。如果选择查询地形图信息,则查询的信息将以对话框的形式显示如图3所示,并将属性显示在文本框中,这时“打开原文件”按钮才可用。
图2 用户界面
图3 查询的地形图属性信息
3.4主要功能及程序代码
(1)添加扩展属性数据
本过程主要实现的功能是:通过选择地形图中的实体,来构成一个选择集,然后将预先设置好的属性信息附着在该选择集中的每个实体上。
Private Sub ComBF_Click()
If TextBox1.Text<>"" And TextBox2.Text<>"" And Text-Box3.Text<>"" And_ TextBox4.Text<>"" Then
Dim objent As AcadObject
Dim pnt As Variant
Me.Hide
Dim Sel_GX As AcadSelectionSet ‘定义一个选择集
Set Sel_GX=CreatSelectionSet
Sel_GX.Clear
Sel_GX.SelectOnScreen ‘单选或框选实体
If Not IsEmpty(Sel_GX) Then ‘如果选择集不为空,则赋值给扩展属性
Dim dType(0 To 4) As Integer
Dim dData(0 To 4) As Variant
dType(0)= 1001:dData(0)= "ACad_GX"
dType(1)= 1000:dData(1)= TextBox1.Text
dType(2)= 1000:dData(2)= TextBox2.Text
dType(3)= 1000:dData(3)= TextBox3.Text
dType(4)= 1000:dData(4)= TextBox4.Text
Dim i As Integer
For i=0 To Sel_GX.Count-1‘为选择集中每个实体添加扩展属数据
Sel_GX(i).SetXData dType,dData
Next
Else
ThisDrawing.Utility.Prompt "没有选择对象"
End If
Me.Show
Else
MsgBox "请填完整地形图属性信息!"
End If
End Sub
(2)查询扩展属性数据
本过程主要功能是:通过选择图形中的单个实体,然后读取它的扩展属性数据,并将查询到的结果显示出来。代码如下:
Private Sub ComBCK_Click()
Dim a As String
Dim objent As AcadObject
Dim pnt As Variant
Me.Hide
ThisDrawing.Application.ActiveDocument.Utility.GetEntity objent,pnt,vbCr & "请选_择一个实体"
a=GetCode(objent,"ACad_GX") ‘获取所选实体的扩展属性数据
MsgBox a
Me.Show
End Sub
在上个过程中有一个关键的函数过程,其功能为:提取实体的扩展属性数据,并将结果返回,并赋值给用户界面上的文本框。其代码如下:
Public Function GetCode(objent As AcadEntity,strAppName As String) As Variant
Dim dType As Variant,dData As Variant,i As Integer
Dim s() As String
If HasXData(objent,strAppName)= False Then
GetCode=""
else
objent.GetXData strAppName,dType,dData
For i=LBound(dType) To UBound(dType) ‘提取出实体的扩展属性
If dType(i)= 1000 Then
GetCode=GetCode+dData(i)+" "
End If
Next i
Dim inform() As String
Dim j As Integer
s=Split(GetCode," ")
GetCode="修测日期:" +s(0) +Chr(10) +"外业作业人员:"+s(1)+Chr(10)_+"更新人员:"+s(3)+Chr(10)+"原文件存放路径:"+s(2)
TextBox1.Text=s(0) ‘为文本框赋值,将地形图属性信息显示出来
TextBox2.Text=s(1)
TextBox3.Text=s(2)
TextBox4.Text=s(3)
ComOpenFile.Enabled=True ‘打开原文件按钮可用
End If
End Function
4 结 论
利用AutoCAD的扩展属性,来保存与图形可视性无关的数据,可以根据用户的不同需求给实体添加扩展属性,这大大扩展了AutoCAD中实体的应用范围和使用功能。在本例中,利用AutoCAD的扩展属性可以有效合理地解决地形图更新项目管理问题,可以准确确定数据更新时间与人员,方便在大量更新地形图时,根据其扩展属性查询相关更新信息,确定修测范围,追溯作业人员,方便查找及打开原文件,为下一步对地形图是否要修测或重测、如何安排作业人员等提供了很好的参考信息。本程序已经在日常地形图更新中进行了应用,收到了较好的效果。
参考文献
[1] 浮怀鹏,谭卢师,吴元硕.CAD图元扩展数据[J].华北水利水电学院学报,2010,31(3):74~75.
[2] 郭振华,薛兰格.基于AutoCAD扩展属性的多边形面积统计汇总应用[J].北京测绘,2014(3):57~60,56.
[3] 郑玲利,林烈清,石冬冬.AutoCAD VBA的序号标注的程序开发[J].机械设计与制造,2005(7):83~84.
[4] 杨钦,白润才.CAD二次开发在三维地质建模中的应用[J].微计算机信息,2010,26(12-1):169~170.
[5] 郭振华.AutoCAD的扩展属性在树木测绘数据处理中的应用[J].城市勘测,2011(1):105~106,109.
Application of AutoCAD Extended Attribute on Topographic Map Updating
Zhang Yufang
(Zhangzhou Institute of Surveying and Mapping,Zhangzhou 363000,China)
Abstract:This paper introduces the storage format of extended data of CAD entity,and put forwards to adopt VBA to store object properties in topographic maps.It combines graphic data and attribute data integration,so it is easy to add or query the extended information which has nothing to do with the graphics visibility,such as topographic revision date, workers,file storage path.This paper proposes a new way in management of topographic map updating.Through a period of application,it is proved that this method can effectively improve the work efficiency,better avoid the repeated revision and surveying of topographic map.
Key words:entity;extended attribute;topographic map updating
文章编号:1672-8262(2015)01-63-03中图分类号:P208.1
文献标识码:B
收稿日期:∗2014—10—22
作者简介:张玉方(1981—),女,注册测绘师,工程师,主要从事城市规划测量工作。