梁 昭 陽
(福建船政交通職業(yè)學(xué)院,福建 福州 350000)
?
·計算機技術(shù)及應(yīng)用·
基于AutoCAD二次開發(fā)技術(shù)道路斷面圖繪制技術(shù)探索
梁 昭 陽
(福建船政交通職業(yè)學(xué)院,福建 福州 350000)
介紹了CAD常見的二次開發(fā)手段與幾種常用的開發(fā)模式,并結(jié)合實踐,闡述了道路斷面圖繪制程序開發(fā)的工具選擇方法及技術(shù)要點,為類似問題的研究奠定了基礎(chǔ)。
AutoCAD,二次開發(fā),道路勘測,縱橫斷面
AutoCAD是Autodesk公司研發(fā)的一款計算機輔助設(shè)計軟件,具有強大的圖形編輯繪制功能。測繪行業(yè)應(yīng)用主要以該平臺下的CASS軟件為代表,它是基于AutoCAD的二次開發(fā)的掛接軟件,因其是在CAD平臺下運行,而CAD又是設(shè)計人員的必備工具,所以被測繪行業(yè)廣泛采用??v橫斷面圖作為勘測階段提交的主要成果,其成果的準確性和時效性將直接影響設(shè)計進度,因此如何保證高效又準確的完成斷面圖繪制對勘測工作一直是一個挑戰(zhàn)。本文通過對CAD二次開發(fā)技術(shù)幾種形式進行闡述,分別介紹了利用CAD的二次開發(fā)功能,在道路斷面圖繪制方面的幾種應(yīng)用。
CAD軟件二次開發(fā)是指在現(xiàn)有的軟件基礎(chǔ)上,各用戶為提高軟件的使用效率,讓軟件更加貼合用戶的實際需求,而進行功能定制化的開發(fā)工作。其主要目的是為讓CAD軟件的功能最大化利用起來,實現(xiàn)用戶的個性化需求。CAD軟件為用戶提供的常見二次開發(fā)手段有以下幾種:
1)函數(shù)庫形式,主要是利用CAD提供的編程環(huán)境和基于函數(shù)庫的API接口,用戶通過編寫程序來實現(xiàn)對AutoCAD開發(fā)的方法,可實現(xiàn)在無CAD環(huán)境下運行,但該法具有一定的局限性,無法充分發(fā)揮CAD的系統(tǒng)性能。另外,可以實現(xiàn)界面定制,擴充CAD功能,但只能在CAD系統(tǒng)內(nèi)運行。
2)ActiveX Automation形式,它是建立在COM基礎(chǔ)之上,由OLE Automation發(fā)展而來的,其核心技術(shù)是允許一個應(yīng)用程序操作另一個應(yīng)用程序,是一種比較成熟方便且實用的技術(shù),在實際開發(fā)中得到了廣泛的運用。
AutoCAD公司為了滿足廣大用戶對軟件功能的定制功能要求,針對各類客戶的需求提供了多種形式的二次開發(fā)工具,如Auto LISP,VBA,Object ARX等開發(fā)工具。用戶可根據(jù)自己的實際情況選擇合適的開發(fā)工具進行二次開發(fā),以滿足設(shè)計生產(chǎn)的需要,實現(xiàn)圖形繪制的快速化提高工作效率。針對道路勘測階段對設(shè)計的重要性,確保斷面圖繪制的快速和高效十分必要。下面介紹幾種常用的二次開發(fā)模式,并結(jié)合測繪行業(yè)的需求特點進行總結(jié)。
1)VBA(Visual Basic for Applications)開發(fā)模式,它被集成到AutoCAD 2000中,打通了用戶訪問CAD中豐富技術(shù)框架的全新通道。VBA可用通過ActiveX接口實現(xiàn)與CAD的通信,并能夠訪問和控制CAD所有圖形對象和非圖形對象,包括這些對象的方法和屬性等。由于VBA是由VB發(fā)展而來,都是面向?qū)ο缶幊?,與其他程序語言相比,具有更簡單,更易學(xué)等特點。因此,在測繪行業(yè)內(nèi)運用較為廣泛,二次開發(fā)的測繪案例較多。但VBA開發(fā)具有交互性差,不能直接編譯等缺點。
2)Object ARX 開發(fā)模式,Object ARX是Autodesk公司針對AutoCAD平臺上的二次開發(fā)而推出的一個開發(fā)軟件包,它提供了以C++為基礎(chǔ)的面向?qū)ο蟮拈_發(fā)環(huán)境及應(yīng)用程序接口,能真正快速的訪問AutoCAD圖形數(shù)據(jù)庫。 與以往的 AutoCAD 二次開發(fā)工具 Auto LISP 和ADS不同,Object ARX應(yīng)用程序是一個DLL(動態(tài)鏈接庫),共享AutoCAD的地址空間,對AutoCAD進行直接函數(shù)調(diào)用。所以使用ARX編程的函數(shù)的執(zhí)行速度得以大大提高。ARX 類庫采用了標準的C++類庫的封裝形式,這也大大提高了程序員編程的可靠度和效率。通過ARX定義的外部命令,可以像CAD內(nèi)部命令一樣執(zhí)行, LISP所調(diào)用,具有可封裝性、可繼承性、多態(tài)性等特點。因此,廣泛被專業(yè)軟件開發(fā)公司用于模塊定制與升級等商業(yè)開發(fā)。但只有具備了相關(guān)專業(yè)軟件開發(fā)知識和系統(tǒng)的學(xué)習(xí)才能掌握這一開發(fā)技術(shù),對于普通測繪工作者來講具有相當大的難度[2]。
3)Auto LISP開發(fā)模式,LISP語言是一種針對擴充及自訂AutoCAD函數(shù)機能而產(chǎn)生的,它擅于處理串行文字,于20世紀50年代末期出現(xiàn)。隨著Autodesk公司不斷改進,推出了新的版本Visual LISP(VLISP),它是Auto LISP的換代版本,與老式LISP語言相比,具有更加快速便捷的優(yōu)點。本身提供了一個完整的開發(fā)環(huán)境,擁有一個交互式的編譯平臺,使用戶在編寫程序時更加便捷高效。作為通用LISP語言小子集,它為用戶提供了眾多的功能函數(shù),用戶只需直接調(diào)用函數(shù)即可實現(xiàn)大部分的CAD圖形繪制功能,編寫時按照其語法慣例和規(guī)則,即可實現(xiàn)靈活的程序開發(fā)。另外,VLISP還提供了用于發(fā)布獨立應(yīng)用程序的工具,保障了程序的安全性和密封性?;赩LISP開發(fā)出的應(yīng)用程序具有相對獨立性的特點,與Object ARX應(yīng)用程序共享CAD地址空間不同,當程序運行一旦出現(xiàn)錯誤或失敗等問題,不會對CAD自身進程造成影響。加之具有開發(fā)周期短,語言簡單易學(xué),十分受廣大測繪工作者的歡迎,尤其是程序開發(fā)的初學(xué)者。
測繪行業(yè)與設(shè)計行業(yè)的聯(lián)系十分緊密,基于CAD在設(shè)計行業(yè)的廣泛應(yīng)用,CAD對于測繪行業(yè)人員來說十分重要。尤其是在勘測單位,地形圖與道路斷面數(shù)據(jù)是設(shè)計的基礎(chǔ)性數(shù)據(jù)。道路的縱橫斷面圖主要是由外業(yè)采集的地面線組成,各斷面按照樁號的大小一一對應(yīng),斷面形態(tài)直接反映現(xiàn)場道路走向的地形變化情況。為了能夠準確反映出現(xiàn)場的地形狀況,在斷面采集時,除了對整數(shù)樁號(一般整20 m)的斷面進行采集外,還需要對地形起伏較大的地段進行一定加樁,這樣造成經(jīng)過不同地形的斷面數(shù)量差距往往很大。由于每個斷面的數(shù)據(jù)都不一樣,要完成一個道路勘測項目的斷面繪制內(nèi)業(yè)任務(wù)將十分繁重。
3.1 開發(fā)工具的選擇
針對斷面圖繪制開發(fā)自動化繪制程序十分必要,根據(jù)上述CAD提供的幾種開發(fā)模式優(yōu)缺點,結(jié)合道路斷面圖繪制的特點,本文認為采用VLISP和VBA的開發(fā)工具進行二次開發(fā)具有優(yōu)勢。主要原因有兩個:
1)根據(jù)測繪行業(yè)自身屬于基礎(chǔ)服務(wù)性的特點,尤其是在勘測領(lǐng)域,主要任務(wù)是提供基礎(chǔ)數(shù)據(jù),功能相對單一,這就決定了不需要大型的專業(yè)程序,在道路斷面繪制程序上更是如此,要求程序具備按照規(guī)范要求能夠自動化完成斷面圖繪制即可。2)測繪從業(yè)者大多沒有接受過專業(yè)的軟件開發(fā)培訓(xùn),尤其是在一線的測量人員,Object ARX的開發(fā)模式往往需要更系統(tǒng)的軟件開發(fā)知識儲備,VBA和VLISP的開發(fā)工具更為簡單,語言基礎(chǔ)要求較低,通過自學(xué)即可掌握相關(guān)的開發(fā)技術(shù)。
3.2 技術(shù)要點分析
雖然根據(jù)工程性質(zhì)的不同,對斷面圖繪制要求會有所不同,但在基本框架和整體要求上基本一致,原理性的東西并沒有變,通常一個完整的斷面圖包括:坐標軸、斷面線、基本坐標格網(wǎng)、輔助坐標格網(wǎng)、比例尺、工程信息等內(nèi)容。按照規(guī)范規(guī)定,線路縱斷面采用直角坐標法繪制,以里程為橫坐標,以高程為縱坐標。里程比例尺常采用1∶2 000和1∶1 000,為突出地形起伏,高程比例尺通常為里程比例尺的10倍~20倍。橫斷面一般選在里程樁和線路橫向地形變化明顯處,在大中小橋頭、隧道洞口等地適當加密,線路的縱橫比例尺一般采用1∶100或1∶200。在CAD平臺下繪制時首先是要建立相應(yīng)的圖層,分別用不同顏色和線型加以區(qū)分,以便于用戶對斷面線、格網(wǎng)線、圖框線等信息判斷。然后是建立相應(yīng)的圖框和格網(wǎng),格網(wǎng)的作用是為了方便用戶能夠在圖紙上直接量取斷面的距離和高程信息。接著就是要將項目的基本信息進行錄入,主要是項目的人員信息和單位信息。最后,要完成斷面線的繪制,將地面特征點逐一展現(xiàn)在圖上并連線,即繪出斷面圖[1](見圖1)。
斷面圖繪制程序設(shè)計主要技術(shù)難點在于如何根據(jù)地面特征點高程的變化來確保合理容納適量的斷面線。因為,通常一張斷面圖只能容納有限的斷面線,要確保斷面線既不超出圖框范圍又不造成空間浪費,需要采取合理的算法來進行約束。根據(jù)本文的研究和實驗,可采用計算每個斷面最大高差的形式來確定每條斷面的占用空間,這樣就可準確計算出各斷面圖容納的斷面梳理。
道路斷面圖繪制是道路勘測的基本任務(wù),目前對斷面圖繪制程序的開發(fā)案例也比較多,但多數(shù)只局限于單位的內(nèi)部利用,各單位開發(fā)的繪圖程序只針對本單位所涉及的業(yè)務(wù)種類,并不具有通用性,如何開發(fā)出具通用性的繪圖程序?qū)⑹侨蘸蟮囊粋€方向。作者也在積極做這方面的嘗試,嘗試用C# 語言和腳本技術(shù)結(jié)合的方法進行程序開發(fā),使得程序功能更加完善,能夠脫離CAD環(huán)境運行,已有初步成果,將在日后的論文中發(fā)表。
[1] 梁昭陽.EPS平臺支持下的道路橫斷面數(shù)據(jù)采集模塊開發(fā)與實現(xiàn)[J].測繪,2016(2):80-82.
[2] 方 毅.基于C#與AutoCAD的斷面圖繪制程序設(shè)計與應(yīng)用[J].地理空間信息,2012(5):143-145.
[3] 鄒進貴,田 徑,劉衛(wèi)平.基于AutoCAD二次開發(fā)的道路縱斷面自動繪制[J].測繪通報,2013(sup):219-221.
[4] 趙奇平.CAD軟件二次開發(fā)方法與技術(shù)探索[J].理工高教研究,2002(4):125-126.
[5] 李厚陣,王翠芹,劉學(xué)忠.Autocad實現(xiàn)橫斷面圖自動繪制研究[J].山東水利,2009(4):59-60.
Exploration on road section drawing technology based on AutoCAD secondary development technology
Liang Zhaoyang
(FujianShippingPolicyCommunicationsCareerAcademy,Fuzhou350000,China)
This paper introduced CAD common secondary development tool and several common development model, and combining with the practice, elaborated the selection methods and technology key points of common development tools of road cross section drawing program, laid foundation for the research of similar problems.
AutoCAD, secondary development, road survey, vertical and horizontal section
1009-6825(2016)27-0254-03
2016-07-15
梁昭陽(1985- ),男,碩士,工程師
P207
A