趙文良,王瑞昕,趙韻琳
(1.內(nèi)蒙古自治區(qū)水利水電勘測設(shè)計(jì)院,內(nèi)蒙古 呼和浩特 010020;2.中國科學(xué)院大學(xué),北京 100049)
“縱斷點(diǎn)成果表”是通過外業(yè)定線測繪成果編輯而成的一種測繪成果表,是河道測量、堤防測量、管線測量、道路及帶狀工程中的測繪成果,具體內(nèi)容見表1,“縱斷點(diǎn)成果表”主要由表頭信息、表頭、文本區(qū)及繪圖區(qū)組成,其中右側(cè)的“軸線說明”需用地形圖圖示符號繪出沿軸線兩側(cè)一定寬度內(nèi)的地物,為工程建設(shè)提供詳細(xì)準(zhǔn)確的地理信息,確保工程順利進(jìn)行。
由于“縱斷點(diǎn)成果表”中,包含有文本數(shù)據(jù)和地形圖圖示符號,在Word中編輯文本容易,但畫軸線圖比較困難;在南方CASS 7.1中畫軸線圖容易,文本編輯需要進(jìn)行二次開發(fā)。長期以來只能利用Word編輯好文本部分,打印出來紙制表格后,靠手工繪制“軸線說明”,傳統(tǒng)方法自動化程度低,數(shù)據(jù)檢查復(fù)雜,數(shù)據(jù)交換困難,工作效率低,無法實(shí)現(xiàn)成果的數(shù)字化。
在長期的生產(chǎn)實(shí)踐過程中,經(jīng)過探索開發(fā)出繪制表格及編輯文本的3種方法,可以較好地解決“縱斷點(diǎn)成果表”數(shù)字化的問題。
利用改造后的Word表格,先編輯好文本內(nèi)容,將其粘貼到南方CASS7.1軟件預(yù)先設(shè)計(jì)好的模板上,再利用地形圖符號繪制軸線圖的地物,“縱斷點(diǎn)成果表”以圖形文件的形式保存、打印輸出。本方法的主要缺點(diǎn)是文本與圖形之間很難達(dá)到準(zhǔn)確銜接。具體方法詳見刊登在《內(nèi)蒙古水利》2018年08期的《定線測量“縱斷點(diǎn)成果表”數(shù)字化的實(shí)現(xiàn)》一文。
表1 縱斷點(diǎn)成果表
點(diǎn)名里程樁號深泓點(diǎn)高程/m地面高程/m堤頂高程/m左右左右軸線說明J10+000998.69999.671000.79J20+0351000.740+050998.64999.651000.650+100998.65999.621000.600+150998.61999.581000.570+1691000.530+1861000.490+1911000.470+200998.43999.471000.440+250998.36999.391000.420+300998.33999.361000.390+350998.28999.331000.350+400998.23999.261000.29J30+417.5998.21999.251000.54...J50+938997.78999.021000.27
新版的AutoCAD,在工具欄“繪圖”中增加了“表格”的功能,“表格”功能可靈活地繪制各種常用的表格,文字編輯也較為方便,可兼顧文本編輯與繪制表格的功能,但文本需要逐一手工輸入,數(shù)據(jù)量大時,易出錯,適用于文本內(nèi)容少的地方,無法實(shí)現(xiàn)批量定位導(dǎo)入數(shù)據(jù)。
AutoLISP是一種計(jì)算機(jī)的表處理語言,在人工智能學(xué)科領(lǐng)域廣泛應(yīng)用的一種程序設(shè)計(jì)語言。AutoCAD內(nèi)部嵌入LISP目的是讓用戶能充分利用AutoCAD進(jìn)行二次開發(fā),在AutoCAD環(huán)境中,主要是實(shí)現(xiàn)表格繪制和文本編輯,AutoLISP語言具有強(qiáng)大的圖形處理功能,可與AutoCAD功能相互結(jié)合開發(fā)出自動繪制表格的功能。
1.3.1基本數(shù)據(jù)
(1)文本數(shù)據(jù)
將表1中的文本數(shù)據(jù)在Word中轉(zhuǎn)換成開發(fā)軟件可讀的格式,縱斷點(diǎn)文本數(shù)據(jù)應(yīng)保存為*.TXT格式。由于表的行數(shù)設(shè)定為27行,軟件是按照行讀取數(shù)據(jù),對應(yīng)的每頁文本行數(shù)也應(yīng)為27行,超過的行數(shù)轉(zhuǎn)入下一個文件中,行數(shù)不足時,用空數(shù)據(jù)行補(bǔ)齊,文本轉(zhuǎn)換后的格式如下:
"J1" "0+000" "999.69""999.67" "" """1000.79"
"J2" "0+035" "" "" "" "" "1000.74"
" " "0+050" "998.64" "998.65""" """1000.65"
.
.
.
"J5""0+938" "997.78" "999.02" "" "" "1000.27"
(2)表框制作
在AutoCAD中按1∶1的比例繪制一張“縱斷點(diǎn)成果表”,其中表格區(qū)域?yàn)榭瞻讌^(qū)(如圖1所示),將表框轉(zhuǎn)為圖塊,命名為ZDBK。
圖1 “縱斷點(diǎn)成果表”表框
(3)表格制作
根據(jù)表格的大小繪制表格文件,并為表格中的數(shù)據(jù)定義屬性,將表格轉(zhuǎn)為塊,命名為ZDBG。
1.3.2程序框圖
程序命名為ZDB.LSP,如圖2所示。
圖2 程序流程圖
(DEFUN ZDB();定義ZDB函數(shù)
(略)
(closefp);關(guān)閉打開的文本文件
(setqa(1+a));累加縱斷點(diǎn)成果表的頁數(shù)
)
)
程序編譯,打開AutoCAD的工具菜單,選擇AutoLISP的visual LISP(V)編輯器,將源程序ZDB.LSP編譯后,形成應(yīng)用程序ZDB.VLX。
(1)添加搜索路徑
將程序ZDB.VLX、文本文件、圖框圖形ZDBK、表格圖形ZDBG存放在同一個文件夾中,啟動AutoCAD進(jìn)入“工具”中的“選項(xiàng)”添加“縱斷點(diǎn)成果表”文件所在絕對的路徑(如圖3所示),點(diǎn)擊“確定”即可。
圖3 添加文件搜索路徑
(2)加載運(yùn)行程序
方法1:在AutoCAD的命令窗口中,輸入(LOAD“ZDB.VLX”)回車(如圖4所示),即可完成加載序程。
方法2:從AutoCAD工具欄“工具”下的“AutoLISP”中,選擇“加載”找到對應(yīng)的程序文件進(jìn)行加載。
圖4 AutoCAD的命令窗口
(3)運(yùn)行程序
在圖4命令中輸入函數(shù)名(ZDB)回車,系統(tǒng)在AutoCAD的命令窗口中,先提示在屏幕輸入定位點(diǎn)后,顯示圖1中的表框,再輸入文本文件名,系統(tǒng)會自動繪制表格,并同時完成填寫相關(guān)文本內(nèi)容,如圖5左側(cè)的文本部分所示。用同樣的方法,依次完成其他頁的表格繪制。表格繪制完后,填寫表頭、表尾的相關(guān)信息,先利用工具欄“修改”中的“分解”把表框塊進(jìn)行分解,再完善相關(guān)內(nèi)容的統(tǒng)一填寫。
CASS 7.1地形地藉成圖軟件是基于AutoCAD平臺技術(shù)的GIS前端數(shù)據(jù)處理系統(tǒng),廣泛應(yīng)用于地形成圖、地藉成圖、工程測量應(yīng)用、空間數(shù)據(jù)建庫、市政監(jiān)管等領(lǐng)域。
“軸線說明”是根據(jù)《量距手簿》外業(yè)實(shí)測數(shù)據(jù)進(jìn)行繪制,用地形圖圖式符號表示軸線兩側(cè)的地物,圖5右側(cè)的“軸線說明”是在南方CASS 7.1軟件中繪制完成的,圖5為一頁完整的“縱斷點(diǎn)成果表”。
圖5 縱斷點(diǎn)成果表
成果表輸出可按圖6中的參數(shù)設(shè)置,打印區(qū)域選用“窗口”,按圖5外邊的矩形范圍選定打印邊界,最后成果以A4紙幅面輸出紙制資料。
“縱斷點(diǎn)成果表”實(shí)現(xiàn)數(shù)字化, 繪制出的成果表,可以滿足現(xiàn)代測繪成果要求的標(biāo)準(zhǔn)化、規(guī)范化,提高了工作效率,減輕了內(nèi)業(yè)工作量,方便使用者間的數(shù)據(jù)交換,也有利于測繪成果資料檔案數(shù)字化、信息化管理。存在的不足之處是,每繪制一頁成果表都要調(diào)用對應(yīng)數(shù)據(jù)文件,無法實(shí)現(xiàn)一次全自動將所有成果頁繪制完成。本文也為其他領(lǐng)域在AutoCAD中繪制規(guī)范化表格提供了有意義的借鑒。
圖6 輸出“縱斷點(diǎn)成果表”