廖東杰
摘要:在市政道路交通工程設(shè)計過程中,交通標(biāo)牌繪圖量大,統(tǒng)計耗時,影響著整個設(shè)計項(xiàng)目的進(jìn)度。本文中設(shè)計的交通工程繪圖系統(tǒng),采用DWGdirect中的圖形交互技術(shù)、ObjectARX中的深度克隆技術(shù),以及標(biāo)牌屬性的自識別技術(shù),從自動化與智能性等方面著手,極大地提高了設(shè)計出圖效率。
關(guān)鍵詞:市政道路;DWGdirect圖形;工程繪圖系統(tǒng)
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2017)01-0165-01
1 引言
在市政設(shè)計領(lǐng)域中,交通標(biāo)志的繪制及其工程量統(tǒng)計非常重。在長達(dá)數(shù)十公里的道路上,按照設(shè)計規(guī)范逐個繪制標(biāo)牌,并加以統(tǒng)計,是一項(xiàng)較為耗時的工作。為此,需要利用計算機(jī)輔助制圖進(jìn)行參數(shù)化設(shè)計。根據(jù)GB 5768-2009中關(guān)于道路交通標(biāo)志的規(guī)定,本文將常用的交通標(biāo)志歸為以下幾類:警告標(biāo)志47種、禁令標(biāo)志48種、指示標(biāo)志36種、指路標(biāo)志79種、旅游標(biāo)志17種、輔助標(biāo)志22種,并制作成模板保存到Dwg文件中。根據(jù)設(shè)計需要使用模板時,其內(nèi)容和尺寸都可能被調(diào)整,這給參數(shù)化設(shè)計帶來一定挑戰(zhàn)。為此,本文使用基于DWGdirect的圖形交互技術(shù),增強(qiáng)參數(shù)化體驗(yàn);通過深度克隆技術(shù),快速繪制參數(shù)化修改后的標(biāo)牌;再結(jié)合標(biāo)牌屬性的自識別,實(shí)現(xiàn)一鍵式工程量統(tǒng)計,提高整體設(shè)計效率。
2 DWGdirect圖形交互技術(shù)
DWGdirect源于開放設(shè)計協(xié)會,是一套針對CAD文件讀寫的高質(zhì)量類庫。它可以獨(dú)立于AutoDesk平臺對DWG文件進(jìn)行讀寫操作及圖形查看,方便集成到Winform窗體上。本文設(shè)計的軟件系統(tǒng)中,將DWGdirect與.net的Panel相結(jié)合,構(gòu)建交通標(biāo)志的展示區(qū),如圖1中的黑色背景區(qū)域,并支持標(biāo)志內(nèi)容的實(shí)時編輯,為用戶提供了高效的交互途徑。
2.1 DWGdirect加載圖形文件
在讀取文件之前,需要通過創(chuàng)建Teigha.Runtime.Services的實(shí)例來注冊服務(wù),這是調(diào)用所有DWGdirect方法的前提。文件的讀取首先要通過DatabaseServices實(shí)例化數(shù)據(jù)庫,然后運(yùn)用ReadDwgFile方法讀取指定圖形文件。打開方式盡量使用OpenForReadAndAllShare模式,減少文件占用報錯的機(jī)率。讀取文件到數(shù)據(jù)庫后,需要將其指定為當(dāng)前工作的數(shù)據(jù)庫。
2.2 圖形交互控件的初始化
先從WinGDI.txv文件加載繪圖模塊并創(chuàng)建繪圖驅(qū)動器。這涉及到Teigha.GraphicsSystem命名空間下的GsModule和Device類。然后通過Device的WindowHDC屬性綁定Panel控件。接著為Dwg數(shù)據(jù)庫指定上下文Context ForDbDatabase,并啟用UseGsModel屬性。最后通過LayoutHelperDevice.SetupActiveLayoutViews方法啟動視圖,完成交互控件的初始化。
2.3 DWGdirect圖形編輯
針對交通標(biāo)志,主要是編輯標(biāo)志中的文字內(nèi)容,這需要文字的選取和修改兩個步驟。文字的選取主要通過繪圖驅(qū)動器graphichsDevice的ActiveView,得到當(dāng)前視圖,然后調(diào)用其Select方法,并傳入鼠標(biāo)點(diǎn)擊的位置坐標(biāo),從而得到文字對象的ID。再用TransactionManager啟動一個事務(wù),根據(jù)ID得到文字對象,修改對應(yīng)的內(nèi)容、顏色等屬性即可。
3 深度克隆技術(shù)
參數(shù)編輯后的交通標(biāo)志需要繪制到用戶CAD中,這里通過數(shù)據(jù)庫之間的克隆技術(shù)來實(shí)現(xiàn)??寺r需要考慮實(shí)體、符號表之間的關(guān)聯(lián),保證克隆的完備性。ObjectARX中數(shù)據(jù)庫對象的封裝,包括命名對象字典、塊表、層表、字體樣式表、標(biāo)注樣式表、線型表、視口表、UCS表、注冊應(yīng)用表等,它們的對應(yīng)關(guān)系如圖2所示。這些關(guān)系中包含硬所有、軟所有、硬指針、軟指針等關(guān)聯(lián)關(guān)系。調(diào)用WblockClone Objects,通過深度克隆將標(biāo)牌模板中的實(shí)體,及其對應(yīng)的圖層、字體、線型等具有指針關(guān)系和所有關(guān)系的對象,一并復(fù)制到當(dāng)前圖形中。
4 標(biāo)牌屬性自識別
標(biāo)牌自識別通過擴(kuò)展數(shù)據(jù)XData來實(shí)現(xiàn)。該機(jī)制方便自定義的應(yīng)用程序進(jìn)行簡單的讀寫操作。同一實(shí)體可以為不同應(yīng)用程序存儲數(shù)據(jù),這需要通過事務(wù)將RegAppTable Record添加到應(yīng)用程序符號表中,完成應(yīng)用程序名的注冊,并通過DxfCode.ExtendedDataRegAppName數(shù)據(jù)類型,指定擴(kuò)展數(shù)據(jù)所屬的應(yīng)用程序。XData支持的數(shù)據(jù)類型有限,其DXF組碼范圍為[1000,1071],且每個實(shí)體的 Xdata數(shù)據(jù)最大為16K。我們僅將標(biāo)牌的類別、形狀、尺寸、備注等關(guān)鍵信息存儲到標(biāo)牌外框的擴(kuò)展數(shù)據(jù)中,供標(biāo)牌統(tǒng)計時使用。
5 結(jié)語
通過對DWGdirect開放類庫,以及深度克隆和擴(kuò)展數(shù)據(jù)等AutoCAD二次開發(fā)技術(shù)的研究與討論,對交通標(biāo)牌的繪制與工程量統(tǒng)計提出了有效解決方案。其效率在實(shí)際工程應(yīng)用中得到證實(shí)。交通標(biāo)線的識別與自適應(yīng)繪制將是下一步的研究重點(diǎn)。
參考文獻(xiàn)
[1]晏韻,許超.基于DWGDirect訪問AutoCAD DWG圖形文件[J].工程圖學(xué)學(xué)報,2010(6):178-181.
[2]饒金通,姜青山.基于ObjectARX的實(shí)體擴(kuò)展數(shù)據(jù)二次開發(fā)技術(shù)研究[C].第16屆全國計算機(jī)新科技與教育研討會,2007.