劉剛,張小波
(成都市勘察測繪研究院,四川 成都 610081)
Visual LISP程序設(shè)計(jì)在市政管線竣工測量的應(yīng)用
劉剛*,張小波
(成都市勘察測繪研究院,四川 成都 610081)
傳統(tǒng)方式下的AutoCAD圖形編輯,存在大量機(jī)械重復(fù)人工操作,已不能滿足現(xiàn)代化工程測量作業(yè)要求?;趦?yōu)化作業(yè)流程、保證數(shù)據(jù)質(zhì)量、提高作業(yè)效率,便于各級質(zhì)檢等目的,在市政管線竣工測量內(nèi)業(yè)處理中,以管線竣工圖上標(biāo)注竣工間距為例,利用Visual LISP程序設(shè)計(jì)實(shí)現(xiàn)AutoCAD平臺的二次開發(fā)。
Visual LISP;AutoCAD;二次開發(fā);市政工程;管線竣工測量
隨著城市化的發(fā)展,城市市政工程建設(shè)規(guī)模不斷擴(kuò)大,使用功能日趨復(fù)雜。城市地下管線由單一、簡單的管線發(fā)展到多類別、多權(quán)屬和布局復(fù)雜的管線網(wǎng)。任何一種管線發(fā)生故障,都會對城市建設(shè)、居民生活帶來重大影響。因此須按照城市規(guī)劃管理的要求,精確獲取管線數(shù)據(jù),在數(shù)字化地形圖中,綜合疊加地下及地面的各類管線竣工數(shù)據(jù)、規(guī)劃區(qū)域和規(guī)劃道路等基礎(chǔ)測繪信息,形成一個(gè)基于測繪數(shù)據(jù)的城市管線信息系統(tǒng)。本文主要敘述基于AutoCAD制圖軟件,在市政管線竣工測量內(nèi)業(yè)處理中應(yīng)用Visual LISP程序設(shè)計(jì)進(jìn)行二次開發(fā),打破傳統(tǒng)作業(yè)方式,從而實(shí)現(xiàn)內(nèi)業(yè)的自動(dòng)化處理,適應(yīng)新時(shí)代工程測量作業(yè)要求。
2.1 管線竣工測量階段
測繪單位對竣工管線進(jìn)行外業(yè)實(shí)測,測量內(nèi)容包括:平面坐標(biāo)位置、井底及地面高程、管頂高程、溝底高程,電力桿、地上架空管道可不測架空管線高程,調(diào)查內(nèi)容包括:種類、走向、管徑(圓徑及方徑)、管數(shù)及孔數(shù)、附屬物、特征、管偏、埋設(shè)方式、壓力、電壓、流向、埋管時(shí)間、材質(zhì)、權(quán)屬單位、探測單位等。
我院管線竣工測量具體流程如圖1所示:
2.2 管線竣工驗(yàn)收階
城市規(guī)劃部門負(fù)責(zé)對竣工管線進(jìn)行竣工驗(yàn)收工作,其中,比對經(jīng)規(guī)劃審定的設(shè)計(jì)數(shù)據(jù)與測繪單位提供的竣工數(shù)據(jù)是其中一項(xiàng)驗(yàn)收項(xiàng)目,對比設(shè)計(jì)圖“規(guī)劃間距”與竣工點(diǎn)位到道路規(guī)劃中線(以下簡稱“竣工間距”),判斷管線位置是否按“規(guī)劃間距”修建,將“竣工間距”作為管線竣工的驗(yàn)收依據(jù)之一。
圖1 管線竣工測量作業(yè)流程
在內(nèi)業(yè)數(shù)據(jù)處理時(shí),管線竣工測量作業(yè)流程中第3、4步均可由程序完成,自動(dòng)化程度較高,但目前第5、6步均為人工操作。對于動(dòng)輒幾十個(gè)、多則數(shù)百個(gè)、甚至上千個(gè)管線點(diǎn)來說,機(jī)械重復(fù)的人工操作,一方面工作效率低,另一方面出錯(cuò)概率大,錯(cuò)誤源主要來自以下幾個(gè)方面:
(1)CAD圖面標(biāo)注時(shí),沒有捕捉到相應(yīng)管線點(diǎn);
(2)CAD圖面標(biāo)注時(shí),沒有捕捉到相應(yīng)中線,或者中線相應(yīng)位置;
(3)填寫間距至竣工報(bào)告時(shí),未將間距和點(diǎn)號一一對應(yīng),錯(cuò)把A點(diǎn)間距輸入B點(diǎn)表格;
(4)填寫間距至竣工報(bào)告時(shí),數(shù)字輸入錯(cuò)誤。
此外,對于后期的資料質(zhì)檢人員來說,無法快速、準(zhǔn)確的核對竣工間距的正確性。
4.1 工具選擇
Visual LISP既可以直接加載源代碼解釋執(zhí)行,也可以通過編譯器先將源代碼編譯為可執(zhí)行程序,然后再加載執(zhí)行。前者的優(yōu)點(diǎn)是可隨時(shí)測試或修改源代碼,可以利用所有的調(diào)試程序的工具;后者的優(yōu)點(diǎn)是提高了執(zhí)行速度,并對源代碼保密。利用Visual LISP程序設(shè)計(jì)實(shí)現(xiàn)在AutoCAD平臺的二次開發(fā)是較便捷、有效的辦法。
4.2 初步設(shè)計(jì)
用戶只需在AutoCAD中選擇參考線(道路中線、設(shè)計(jì)中線等),程序自動(dòng)標(biāo)注圖面所有管線點(diǎn)與線的間距,并生成報(bào)表,保存至與圖形同路徑處。
4.3 詳細(xì)設(shè)計(jì)
(1)定義函數(shù)
①設(shè)置間距標(biāo)注樣式:標(biāo)注圖層、箭頭類型、箭頭大小、文字大小、文字方向、文字偏移等;
代碼如下:
(vl-load-com)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
mSpace (vla-get-ModelSpace AcadDocument))
(setq F_DimStyle(vla-get-ActiveDimStyle AcadDocument)
F_DimStyles(vla-get-DimStyles AcadDocument))
(setq New_DimStyle(vla-add F_DimStyles "管線間距"));新建圖層
(vla-put-ActiveDimStyle F_Active New_DimStyle)
(setvar "dimblk" "_ArchTick");設(shè)置箭頭名稱
(setvar "dimasz" 0.6);設(shè)置箭頭大小
(setvar "dimdec" 2);設(shè)置精度,小數(shù)后2位
(setvar "dimpost" "m");設(shè)置后綴
(setvar "dimtoh" 0);設(shè)置文字方向
(setvar "dimtih" 0);設(shè)置文字方向
(setvar "dimtad" 1);設(shè)置文字垂直
(setvar "dimtxt" 0.5);設(shè)置文字大小
(setvar "dimgap" 0.5);設(shè)置文字偏移量
(command "_DIMSTYLE" "S"(getvar "DIMSTYLE") "Y");調(diào)用AutoCAD命令,保存間距標(biāo)注樣式
②獲取圖形文件信息:文件名稱、文件路徑;
③獲取圖面信息:圖層名稱列表;
④調(diào)用Excel程序:生成報(bào)表模版。
(2)主函數(shù)
在AutoCAD命令行輸入“JGJJ”(竣工間距)后回車,程序開始執(zhí)行,具體流程如圖2所示:
圖2 主函數(shù)流程圖
其中,逐個(gè)提取點(diǎn)號、坐標(biāo),并計(jì)算間距的主要代碼如下:
(while(<= n P_len)
(setq P_ent(ssname P_ss(1- n))
P_xyz(cdr(assoc 10(entget P_ent(list "*"))))
P_xy(reverse(cdr(reverse P_xyz)))
D_list(list)
nn 1)
(while(<= nn L_len)
(setq L_ent(ssname L_ss(1- nn))
xdstyle(cdr(assoc 0(entget L_ent)))
vlaobj(vlax-ename->vla-object L_ent)
L_xyz(vlax-curve-getClosestPointTo vlaobj P_xy)
L_xy(reverse(cdr(reverse L_xyz)))
P_dist(distance L_xy P_xy)
D_list(cons P_dist D_list) D_listC D_list
nn(+ nn 1))
(if(=(length D_listC) 1)
(setq min_dist(car D_listC))
(while(>(length D_listC) 0)
(setq min_dist1(car D_listC)
min_dist2(cadr D_listC))
(if(=(length D_listC)(- nn 1))
(if(> min_dist1 min_dist2)
(setq min_dist min_dist2
min_dist min_dist1))
(if(> min_dist1 min_dist)
(setq min_dist min_dist
min_dist min_dist1))
)
(setq D_listC(cdr D_listC))
)
)
(setq N_dist(length(member min_dist D_list))
xd(ssname L_ss(- N_dist 1))
xdstyle(cdr(assoc 0(entget xd)))
vlaobj(vlax-ename->vla-object xd)
L_xyz(vlax-curve-getClosestPointTo vlaobj P_xy)
L_xy(reverse(cdr(reverse L_xyz)))
P_DH(substr(cdr(caddr(car(cdr(assoc -3(entget P_ent(list "*"))))))) 6)
n(+ n 1)))
采用Visual LISP程序生成的竣工成果表如圖3所示:
圖3 竣工成果表
采用Visual LISP程序在AutoCAD圖面標(biāo)注的間距如圖4所示:
圖4 竣工成果圖
筆者采用實(shí)際生產(chǎn)中的數(shù)據(jù),模擬完成人工操作與程序執(zhí)行的對比測試,具體如下:
5.1 正確率對比
通過作業(yè)人員的認(rèn)真操作,仔細(xì)核對,方可保證人工操作數(shù)據(jù)的正確性。
經(jīng)過筆者反復(fù)測試,消除Visual LISP程序代碼Bug,可確保圖面標(biāo)注以及報(bào)告填注的準(zhǔn)確性。
5.2 效率對比
在保證數(shù)據(jù)正確的前提下,筆者通過自己和其他作業(yè)人員的實(shí)際操作,記錄完成不同數(shù)量標(biāo)注花費(fèi)的平均時(shí)間。同時(shí),采用Visual LISP程序執(zhí)行方式完成相同數(shù)量標(biāo)注的時(shí)間作為分析數(shù)據(jù),具體如表1所示:
效率對比數(shù)據(jù) 表1
備注:不同的系統(tǒng)配置和CAD版本,結(jié)果會略有不同;筆者使用的系統(tǒng)配置為:64位Win7旗艦版,8G內(nèi)存,CAD2007。
時(shí)間對比如圖5所示:
圖5 時(shí)間對比
效率對比如圖6所示:
圖6 效率對比
5.3 對比分析
通過以上數(shù)據(jù)可得到以下結(jié)論:
(1)為保證數(shù)據(jù)的正確性,人工操作需每次花費(fèi)大量時(shí)間,而編寫Visual LISP程序只需要一次性投入。
(2)隨著竣工點(diǎn)位數(shù)量的增加,人工操作花費(fèi)的時(shí)間遠(yuǎn)遠(yuǎn)超過Visual LISP程序執(zhí)行;
(3)隨著竣工點(diǎn)位數(shù)量的增加,人工操作時(shí)間的增長速度明顯,Visual LISP程序執(zhí)行的增長速度可忽略不計(jì);
(4)隨著時(shí)間的推移,人工操作的效率逐漸下降,竣工點(diǎn)位數(shù)量從1~1000,效率下降約40%;
(5)Visual LISP程序的效率在竣工點(diǎn)位數(shù)量從1~200的區(qū)間內(nèi)迅速上升,當(dāng)達(dá)到200以后,趨于穩(wěn)定。
綜上所述,利用Visual LISP執(zhí)行程序可有效地避免人為操作出現(xiàn)錯(cuò)誤,降低作業(yè)人員勞動(dòng)強(qiáng)度,提高作業(yè)人員作業(yè)速度,便于各級質(zhì)檢人員檢查,達(dá)到了預(yù)定的目標(biāo)。
目前的專業(yè)圖形編輯軟件,有基于AutoCAD平臺的,例如:南方CASS、中望CAD等;有自主研發(fā)平臺的,例如:南方iData數(shù)據(jù)工廠、清華山維EPS等,他們在數(shù)字成圖,數(shù)據(jù)入庫方面都已經(jīng)相當(dāng)成熟,但在特殊專業(yè)、復(fù)雜用途的圖形編輯中,依據(jù)現(xiàn)有軟件的功能往往難以實(shí)現(xiàn),我們可以通過對AutoCAD的二次開發(fā),解決工作中的實(shí)際問題,達(dá)到提高企業(yè)的生產(chǎn)效率和技術(shù)水平的目的。
本文通過Visual LISP程序設(shè)計(jì)在市政管線竣工測量內(nèi)業(yè)處理應(yīng)用中的一個(gè)示例,解決了長期以來在間距標(biāo)注中由于人工操作帶來的勞動(dòng)強(qiáng)度大、工作效率低、數(shù)據(jù)質(zhì)量差三大難題。除此之外,我們還可以根據(jù)工作中的實(shí)際需求,利用Visual LISP強(qiáng)大的功能性、與AutoCAD良好的交互性,將Visual LISP程序設(shè)計(jì)擴(kuò)展到市政管線竣工測量的其他方面以及其他測量工程。
[1] 李學(xué)志,方戈亮,孫力紅. Visual LISP程序設(shè)計(jì)AutoCAD 2006(第2版)[M]. 北京:清華大學(xué)出版社,2010.
[2] 陳伯雄,馮偉. Visual LISP程序設(shè)計(jì)技巧與范例[M]. 北京:人民郵電出版社,2002.
[3] 李曉輝,薛欣. 計(jì)算機(jī)輔助設(shè)計(jì)與繪圖(AutoCAD 2006 中文版)[M]. 北京:清華大學(xué)出版社,2006.
[4] CJJ/T8-2011.城市測量規(guī)范[S].
[5] CH/T 1037-2015.管線信息系統(tǒng)建設(shè)技術(shù)規(guī)范[S].
[6] 李灶強(qiáng),湯麗珍. 基于VLISP開發(fā)生成平面輔助圖的實(shí)現(xiàn)[J]. 城市勘測,2012(6):113~116.
Visual LISP Programming In Municipal Pipeline Surveying Applications
Liu Gang,Zhang Xiaobo
(Chengdu Institute of Survey and Investigation,Chengdu 610081,China)
AutoCAD Graphics traditional mode,there are a large number of mechanical repetition of manual operations Can’t meet the operational requirements of modern engineering measurement. Based optimize processes,ensure data quality,improve operational efficiency,ease of quality control and other purposes at all levels in the municipal pipeline completed surveying process to the pipeline built drawings marked the completion of the pitch,for example,the use of Visual LISP program designed to achieve AutoCAD platform secondary development.
visual LISP;AutoCAD;secondary development;municipal works;pipeline surveying
1672-8262(2017)03-141-04
P209
B
2016—07—26
劉剛(1980—),男,工程師,主要從事市政工程測量產(chǎn)品審核等技術(shù)工作。