張玉方(漳州市測繪設(shè)計(jì)研究院,福建漳州 363000)
AutoCAD擴(kuò)展屬性在地形圖更新中的應(yīng)用
張玉方?
(漳州市測繪設(shè)計(jì)研究院,福建漳州 363000)
摘 要:主要介紹了AutoCAD實(shí)體的擴(kuò)展數(shù)據(jù)的存儲格式,并提出采用VBA編程技術(shù)對地形圖中的對象屬性進(jìn)行存儲,實(shí)現(xiàn)了地形圖圖形數(shù)據(jù)與屬性數(shù)據(jù)一體化結(jié)合,從而方便添加或查詢與圖形可視性無關(guān)的擴(kuò)展信息,如地形圖修測日期、內(nèi)外業(yè)人員、文件存放路徑等,對地形圖更新日常管理提出了一種新的處理思路。通過一段時(shí)間的應(yīng)用,證明此方法有效地提高了工作效率,更好地避免了地形圖重復(fù)修測。
關(guān)鍵詞:實(shí)體;擴(kuò)展屬性;地形圖更新
AutoCAD作為國際上最流行的CAD繪圖軟件,在測繪行業(yè)的應(yīng)用廣泛。目前,國家及各省、市的基礎(chǔ)測繪、城市測量及許多工程設(shè)計(jì)用圖,成圖格式多為AutoCAD的DWG格式[1]。在測繪行業(yè)的圖形里,各種地理元數(shù)據(jù)的分類繁多,所附地理信息量巨大,僅憑AutoCAD的圖層、顏色、線寬等圖形參數(shù)無法處理,需利用AutoCAD的擴(kuò)展屬性來解決。大比例尺地形圖日常測繪瑣碎而繁多,地形圖更新時(shí)無法確定待更新地形圖的修測時(shí)間及人員安排等信息,往往出現(xiàn)重復(fù)測量等現(xiàn)象,從而浪費(fèi)人力和物力?;谝陨瞎ぷ鳜F(xiàn)狀,本文提出了利用地形圖的擴(kuò)展屬性對地形圖中的實(shí)體屬性進(jìn)行存儲,將地形圖圖形數(shù)據(jù)與屬性數(shù)據(jù)一體化結(jié)合,通過查詢實(shí)體擴(kuò)展屬性來體現(xiàn)作業(yè)人員、工作時(shí)間、存放路徑等信息,避免重復(fù)測量,有效節(jié)省人力、物力和財(cái)力,提高工作效率。
實(shí)體的擴(kuò)展屬性由應(yīng)用程序所建立,跟隨在該實(shí)體常規(guī)的實(shí)體數(shù)據(jù)之后,它與常規(guī)實(shí)體數(shù)據(jù)一起構(gòu)成內(nèi)容更加廣泛的實(shí)體數(shù)據(jù)。VBA應(yīng)用程序可以為實(shí)體附著擴(kuò)展屬性(Xdata),它可以附著在任何實(shí)體上,包含一個(gè)或多個(gè)1001組。每一組均以一個(gè)互不相同的應(yīng)用類型名開頭,擴(kuò)展屬性的組碼在1000~1071之間,按應(yīng)用類型分組存取不同的數(shù)據(jù)以適應(yīng)需要。CAD實(shí)體的擴(kuò)展屬性位于普通數(shù)據(jù)之后,擴(kuò)展屬性的數(shù)據(jù)結(jié)構(gòu)為(-3應(yīng)用程序名稱類型應(yīng)用程序名稱實(shí)體擴(kuò)展屬性類型實(shí)體擴(kuò)展屬性)。應(yīng)用類型名是存取擴(kuò)展實(shí)體數(shù)據(jù)的標(biāo)識,為最大長度為31字節(jié)的字符串。附著擴(kuò)展屬性必須指定應(yīng)用類型名,用戶在定義應(yīng)用類型名時(shí)最好具備一定的意義,便于對其進(jìn)行維護(hù)應(yīng)用。結(jié)合地形圖屬性要求,在AutoCAD中地形圖數(shù)據(jù)的屬性結(jié)構(gòu)定義[2]如表1所示。
AutoCAD中地形圖數(shù)據(jù)屬性結(jié)構(gòu) 表1
3.1開發(fā)工具介紹
VBA(Visual Basic for Application)是基于ActiveX Automation技術(shù)的AutoCAD二次開發(fā)工具,可以通過ActiveX與AutoCAD進(jìn)行通信,并操縱AutoCAD的許多功能[3]。它基于Visual Basic版本,是完全面向?qū)ο篌w系結(jié)構(gòu)的一種編程語言,有著與VB幾乎相同的開發(fā)環(huán)境和語法。VBA依附于主應(yīng)用程序AutoCAD,它與主程序的通信簡單而高效,由于共享內(nèi)存空間,使它具有更快的執(zhí)行速度,且其語法結(jié)構(gòu)簡潔[4],因此深受廣大工程技術(shù)人員的喜愛。
3.2開發(fā)流程
軟件主要用于地形圖更新時(shí),為要更新的地形圖添加修測時(shí)間,作業(yè)人員等信息,方便下次修測本區(qū)域時(shí)的人員安排,是否修測或重測等問題。功能主要包括添加地形圖屬性信息和查詢地形圖屬性信息兩個(gè)方面。系統(tǒng)設(shè)計(jì)流程圖如圖1所示。
圖1 系統(tǒng)設(shè)計(jì)流程圖
3.3用戶界面設(shè)計(jì)[5]
鑒于用戶界面要簡潔,便于用戶操作,本程序的用戶界面如圖2所示。程序一啟動(dòng),就打開圖所示的用戶窗體,由用戶選擇是添加地形圖屬性信息,還是查詢地形圖屬性信息。如果選擇添加地形圖屬性信息,必須先填完整所需的信息,才可添加。如果選擇查詢地形圖信息,則查詢的信息將以對話框的形式顯示如圖3所示,并將屬性顯示在文本框中,這時(shí)“打開原文件”按鈕才可用。
圖2 用戶界面
圖3 查詢的地形圖屬性信息
3.4主要功能及程序代碼
(1)添加擴(kuò)展屬性數(shù)據(jù)
本過程主要實(shí)現(xiàn)的功能是:通過選擇地形圖中的實(shí)體,來構(gòu)成一個(gè)選擇集,然后將預(yù)先設(shè)置好的屬性信息附著在該選擇集中的每個(gè)實(shí)體上。
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 ‘定義一個(gè)選擇集
Set Sel_GX=CreatSelectionSet
Sel_GX.Clear
Sel_GX.SelectOnScreen ‘單選或框選實(shí)體
If Not IsEmpty(Sel_GX) Then ‘如果選擇集不為空,則賦值給擴(kuò)展屬性
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‘為選擇集中每個(gè)實(shí)體添加擴(kuò)展屬數(shù)據(jù)
Sel_GX(i).SetXData dType,dData
Next
Else
ThisDrawing.Utility.Prompt "沒有選擇對象"
End If
Me.Show
Else
MsgBox "請?zhí)钔暾匦螆D屬性信息!"
End If
End Sub
(2)查詢擴(kuò)展屬性數(shù)據(jù)
本過程主要功能是:通過選擇圖形中的單個(gè)實(shí)體,然后讀取它的擴(kuò)展屬性數(shù)據(jù),并將查詢到的結(jié)果顯示出來。代碼如下:
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 & "請選_擇一個(gè)實(shí)體"
a=GetCode(objent,"ACad_GX") ‘獲取所選實(shí)體的擴(kuò)展屬性數(shù)據(jù)
MsgBox a
Me.Show
End Sub
在上個(gè)過程中有一個(gè)關(guān)鍵的函數(shù)過程,其功能為:提取實(shí)體的擴(kuò)展屬性數(shù)據(jù),并將結(jié)果返回,并賦值給用戶界面上的文本框。其代碼如下:
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) ‘提取出實(shí)體的擴(kuò)展屬性
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) +"外業(yè)作業(yè)人員:"+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的擴(kuò)展屬性,來保存與圖形可視性無關(guān)的數(shù)據(jù),可以根據(jù)用戶的不同需求給實(shí)體添加擴(kuò)展屬性,這大大擴(kuò)展了AutoCAD中實(shí)體的應(yīng)用范圍和使用功能。在本例中,利用AutoCAD的擴(kuò)展屬性可以有效合理地解決地形圖更新項(xiàng)目管理問題,可以準(zhǔn)確確定數(shù)據(jù)更新時(shí)間與人員,方便在大量更新地形圖時(shí),根據(jù)其擴(kuò)展屬性查詢相關(guān)更新信息,確定修測范圍,追溯作業(yè)人員,方便查找及打開原文件,為下一步對地形圖是否要修測或重測、如何安排作業(yè)人員等提供了很好的參考信息。本程序已經(jīng)在日常地形圖更新中進(jìn)行了應(yīng)用,收到了較好的效果。
參考文獻(xiàn)
[1] 浮懷鵬,譚盧師,吳元碩.CAD圖元擴(kuò)展數(shù)據(jù)[J].華北水利水電學(xué)院學(xué)報(bào),2010,31(3):74~75.
[2] 郭振華,薛蘭格.基于AutoCAD擴(kuò)展屬性的多邊形面積統(tǒng)計(jì)匯總應(yīng)用[J].北京測繪,2014(3):57~60,56.
[3] 鄭玲利,林烈清,石冬冬.AutoCAD VBA的序號標(biāo)注的程序開發(fā)[J].機(jī)械設(shè)計(jì)與制造,2005(7):83~84.
[4] 楊欽,白潤才.CAD二次開發(fā)在三維地質(zhì)建模中的應(yīng)用[J].微計(jì)算機(jī)信息,2010,26(12-1):169~170.
[5] 郭振華.AutoCAD的擴(kuò)展屬性在樹木測繪數(shù)據(jù)處理中的應(yīng)用[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
文獻(xiàn)標(biāo)識碼:B
收稿日期:?2014—10—22
作者簡介:張玉方(1981—),女,注冊測繪師,工程師,主要從事城市規(guī)劃測量工作。