王振輝
(國家測繪局第七地形測量隊,海南海口 570203)
公路路產是國家財產,受國家法律保護,任何單位和個人均不得侵占和破壞。公路作為促進社會經濟高速發展的基礎性設施,在國民經濟中的重要作用日益突出。保護公路路產最重要的方面即是對公路路產進行確權登記和建檔,它是公路路產管理的前提和基本手段。而公路路產登記資料之一是公路用地權屬范圍圖,圖中需要標注道路中心線的中樁以及對應用地范圍線邊樁的坐標。公路用地權屬確認的過程十分復雜,確權部門因多種因素會經常對用地范圍線進行更改,如果通過手工對道路中、邊樁的坐標進行標注,會因用地范圍線的變更而重復做很多工作。因此,通過AutoCAD二次開發,運用程序進行中樁和邊樁的坐標自動標注,能很大程度提高工作效率。
AutoLISP作為通用LISP語言的一個小子集,嚴格地遵循其語法和慣例,又添加了許多針對AutoCAD的功能。通過AutoLISP,用戶可以運用適合于編寫圖形應用程序的強大的高級語言來編寫宏程序和函數,并開發出各種軟件包。從AutoCAD R14起,Visual LISP就被引入到AutoCAD中,它增強及擴展了AutoLISP,嵌于AutoCAD內部,是一種智能型語言。運用Visual LISP可以靈活方便地增加AutoCAD的新命令,幾乎能無限地擴展AutoCAD的功能。Visual LISP沒有特殊的硬件需求,能運行AutoCAD即可運行Visual LISP。
本文將通過一個公路路產登記實例介紹Visual LISP在自動標注道路中、邊樁坐標工作中的應用,通過編寫程序來提高工作效率,避免人工重復、繁瑣的工作以及避免手工操作引起的遺漏和錯誤。
公路路產登記工作中用地權屬確認的過程往往會因多種因素經常變更用地范圍線,如果用手工對道路中、邊樁的坐標進行標注,會導致大量的重復工作。另外路產登記的公路往往是幾千米甚至十幾千米,道路中心線中樁的標注和其用地范圍線邊樁的坐標標注,如果按百米來標注,其工作量非常大。因此,通過AutoCAD二次開發,運用Visual LISP程序批量自動處理,能很大程度提高工作效率。
本文通過某市縣道X506進行路產登記的工作實例,介紹Visual LISP程序對提高路產登記工作效率的貢獻。
本程序有三個子程序,分別是自動計算并標注中樁號、求輔助線和用地線交點、用地線坐標自動標注。
本子程序會生成“道路中心線”、“bak”、“道路樁號”三個圖層。將用戶選取的多線段放入“道路中心線”層并更改屬性。通過用戶輸入的標注中樁的間距,由中心線的起點開始計算出中樁的坐標,并在該坐標上標注樁號和中樁線,并放入“道路樁號”層。子程序還做了一個為下一步做鋪墊的工作,即沿中樁線的方向作延長線,與用地邊線相交,并將該輔助線放入“bak”層。
本子程序的部分代碼如下:


其中,函數a-get-Angle是中樁線角度的獲取程序。
本子程序運行后如圖1所示,綠線為道路中心線,紅線為用地范圍線,黑線為輔助線。

圖1 自動標注中樁號
本子程序利用上一子程序運行后生成的輔助線,計算其與兩邊用地范圍線的交點坐標,并寫入文件。這是為下一步的用地范圍線對應中樁的邊樁進行坐標標注做準備。
本子程序的部分代碼如下:


本子程序利用上一子程序計算出的交點坐標,對用地范圍線對應中樁的邊樁進行坐標標注。程序先根據交點坐標作用地線的垂線,坐標引線是由用戶輸入字體的大小按比例畫,坐標文字注記是按坐標引線的方向進行標注。
本子程序的部分代碼如下:



圖2 成果圖
本實例最后成果如圖2所示(因篇幅原因只顯示部分圖面成果)。由于本程序標注的坐標是由計算得出并賦值標注出來,所以避免了人工標注坐標時出現捕捉錯點位的情況。
目前,在各工程設計單位中AutoCAD已經得到普及應用,Visual LISP對于拓展AutoCAD的功能具有重要意義。本文通過一個公路路產登記實例說明Auto-CAD的二次開發在實際工作中發揮著重要的作用,充分說明在工程設計工作中結合本專業要求開發一定功能的Visual LISP程序可以有效降低工作人員的勞動強度,從而使AutoCAD不僅僅是繪圖工具,而真正成為設計人員得心應手的高效設計平臺。
[1]李長勛.AutoCAD Visual LISP程序開發技術[M].北京:國防工業出版社,2005
[2]陳伯雄,馮偉.Visual LISP程序設計—技巧與范例[M].北京:人民郵電出版社,2002
[3]康博創作室.Visual LISP實用教程[M].北京:人民郵電出版社,1999
[4]湯峻.AutoCAD2000高級應用與Visual LISP開發寶典[M].北京:人民郵電出版社,2001
[5]GB/T 20257.1-2007.1 ∶500、1 ∶1000、1 ∶2000 地形圖圖式[S]
[6]米桂杰.AutoCAD在公路路線繪圖中的應用[J].企業技術開發,2010,29(5)