張玉方(漳州市測繪設計研究院,福建漳州 363000)
AutoCAD擴展屬性在地形圖更新中的應用
張玉方?
(漳州市測繪設計研究院,福建漳州 363000)
摘 要:主要介紹了AutoCAD實體的擴展數據的存儲格式,并提出采用VBA編程技術對地形圖中的對象屬性進行存儲,實現了地形圖圖形數據與屬性數據一體化結合,從而方便添加或查詢與圖形可視性無關的擴展信息,如地形圖修測日期、內外業人員、文件存放路徑等,對地形圖更新日常管理提出了一種新的處理思路。通過一段時間的應用,證明此方法有效地提高了工作效率,更好地避免了地形圖重復修測。
關鍵詞:實體;擴展屬性;地形圖更新
AutoCAD作為國際上最流行的CAD繪圖軟件,在測繪行業的應用廣泛。目前,國家及各省、市的基礎測繪、城市測量及許多工程設計用圖,成圖格式多為AutoCAD的DWG格式[1]。在測繪行業的圖形里,各種地理元數據的分類繁多,所附地理信息量巨大,僅憑AutoCAD的圖層、顏色、線寬等圖形參數無法處理,需利用AutoCAD的擴展屬性來解決。大比例尺地形圖日常測繪瑣碎而繁多,地形圖更新時無法確定待更新地形圖的修測時間及人員安排等信息,往往出現重復測量等現象,從而浪費人力和物力。基于以上工作現狀,本文提出了利用地形圖的擴展屬性對地形圖中的實體屬性進行存儲,將地形圖圖形數據與屬性數據一體化結合,通過查詢實體擴展屬性來體現作業人員、工作時間、存放路徑等信息,避免重復測量,有效節省人力、物力和財力,提高工作效率。
實體的擴展屬性由應用程序所建立,跟隨在該實體常規的實體數據之后,它與常規實體數據一起構成內容更加廣泛的實體數據。VBA應用程序可以為實體附著擴展屬性(Xdata),它可以附著在任何實體上,包含一個或多個1001組。每一組均以一個互不相同的應用類型名開頭,擴展屬性的組碼在1000~1071之間,按應用類型分組存取不同的數據以適應需要。CAD實體的擴展屬性位于普通數據之后,擴展屬性的數據結構為(-3應用程序名稱類型應用程序名稱實體擴展屬性類型實體擴展屬性)。應用類型名是存取擴展實體數據的標識,為最大長度為31字節的字符串。附著擴展屬性必須指定應用類型名,用戶在定義應用類型名時最好具備一定的意義,便于對其進行維護應用。結合地形圖屬性要求,在AutoCAD中地形圖數據的屬性結構定義[2]如表1所示。

AutoCAD中地形圖數據屬性結構 表1
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
利用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—),女,注冊測繪師,工程師,主要從事城市規劃測量工作。