劉存桂 唐 勇
(安徽省交通規劃設計研究總院股份有限公司,安徽合肥 230088)
在使用緯地生成征地線的時候,隨征地線同時生成的征地線點位標注僅能反映當前征地線的點位坐標,那么當征地線修改的時候,這個標注已經不能反映更改后的征地線的實際位置了。要修改更改后點的位置坐標,在緯地中通常先使用工具—>點到曲線的命令求出該點的樁號和距離,然后手動更改原來的標注值。當只有極少數點需重新標注時,這種方法也不算太過浪費時間。但是,現在的征地圖通常需要從項目起點到項目終點全線微調,那就涉及成千上萬的點位需要重新標注,再使用緯地自身的標注方法顯然不太現實。
而且,現在業主一般要求每個點位要標注完整的樁號,而不是簡化的樁號(例如K0+220要標注完整的K0+200,而不是緯地里簡化的+200),這樣也便于在實際征地放樣中快速的找到所需的位置。而這個要求是緯地無能為力的。
基于緯地的弊端和業主的要求,我們考慮能不能使用LISP擴展程序一次性解決以上的問題,能不能使生成好的標注不需要進行再次的加工(譬如:更改字體,更改圖層,更新標注內容等等),這就是本程序的由來。那么,有了編制這個程序的想法,就需要好好構思這個程序的組織結構使其能準確無誤的實現目標要求。最終定下的實現方法為:1)把生成的道路中線連成一個整體的多段線。2)使用一個主程序,提供用戶選擇道路中線,要標注的征地線和輸入路線起點樁號的接口。3)為了應付特殊情況,需要增加一個手動選點單樁標注的主程序。4)分解程序使之模塊化,易于實現最終目標。
該主程序所要實現的功能如下:1)定義所需的主變量,記錄各個系統變量狀態,預先加載visual函數接口;2)調用所需的AutoCAD線型,定義標注所在的圖層和字體樣式;3)提供了用戶點選和輸入的接口;4)計算征地線上的點距,對符合點距要求的點分別計算垂足和樁號;5)調用標注分解確認子程序,標注征地線上的各點;6)程序運行結束后恢復各系統變量。
具體程序實現如下:



其實現的功能和調用的參數、函數基本同多點標注模式主程序。不同之處在于:1)用戶接口僅需點選道路中線及輸入道路中線對應的起點樁號;2)之后單點要標注的征地線上任意一點即可生成該點所要標注的各項參數。
具體程序實現如下:

該子程序所要實現的功能如下:1)接收主程序所確定的中線樁號、征地線標注點距中線距離、征地線標注點相對于中線的垂足與中線起點形成的弧度矢量、征地線標注點與中線起點形成的弧度矢量、征地線上的標注點的坐標、字符分割線的終點坐標。2)轉換數字格式的中線樁號為標準形式的字符串格式,如:接收的數字格式樁號2856.5轉換成K2+856.5的標準樁號標注格式字符串。3)取得標注分割線的上、下標注,生成標準的上、下標注形式,如:上標注形式為:“樁號 Y坐標值”,下標注形式為:“距離X坐標值”。4)依據接收的兩個弧度矢量判斷征地線上的點在道路中線的左側或右側。5)使用entmake函數在CAD中生成征地線上點的標準標注。
具體程序實現如下:


在多點標注模式下,使用本程序只需用戶單選道路中線,單選所要標注的征地線,輸入道路中線對應的道路起點樁號即可生成整條征地線的標準標注,在單點標注模式下,使用本程序只需用戶單選道路中線,輸入道路中線對應的道路起點樁號,然后單點所要標注的征地線上的點,即可生成該點對應的標準標注。這對于需要調整一次或數次的征地圖來說,相比緯地程序的繁瑣標注更改手段而言,無疑大大節省了勞動時間,使得用戶可以把更多的精力放在如何滿足土地規范和業主要求上面。也可以騰出大量的時間從事整個項目里其他的工作。
[1]郭秀娟,于全通,范小鷗.AutoLISP語言程序設計[M].北京:化學工業出版社,2008.
[2]鄭益民.公路工程CAD[M].北京:清華大學出版社,2010.
[3]Autodesk公司.AutoCAD標準幫助文檔:AutoCAD群碼表[Z].
[4]周 明,董仁揚.Visual LISP程序設計及其應用教程[M].上海:上海科學技術文獻出版社,2008.
[5]趙景亮.AutoCAD 2004與AutoLISP二次開發技術[M].北京:清華大學出版社,2004.
[6]藍屹生.AutoLISP學習導引[M].北京:中國鐵道出版社,2003.
[7]曾洪飛,張 帆,盧擇臨.AutoCAD VBA& VB.NET開發基礎與實例教程[M].北京:中國電力出版社,2008.
[8]二代龍震工作室.AutoCAD LISP/VLISP函數庫查詢辭典[M].北京:中國鐵道出版社,2003.
[9]施佩娟.道路CAD[M].北京:機械工業出版社,2013.
[10]符明娟.道路工程制圖與CAD[M].北京:科學出版社,2004.
[11]王文波.AutoCAD2010二次開發實例教程[M].北京:機械工業出版社,2013.