王出
(運(yùn)城職業(yè)技術(shù)學(xué)院 山西運(yùn)城 044000)
基于Visual LISP的工業(yè)廣場保護(hù)煤柱設(shè)計(jì)軟件
王出
(運(yùn)城職業(yè)技術(shù)學(xué)院 山西運(yùn)城 044000)
本文利用AutoCAD中的Visual LISP語言編制了工業(yè)廣場保護(hù)煤柱設(shè)計(jì)軟件,實(shí)現(xiàn)利用垂直剖面法和垂線法自動(dòng)設(shè)計(jì)出保護(hù)煤柱,避免了在繪制礦圖中復(fù)雜的計(jì)算及繁瑣的繪圖步驟。
Visual LISP 保護(hù)煤柱 垂線法 垂直剖面法
文章引言
Visual LISP是基于AutoCAD環(huán)境用于二次開發(fā)的編程語言。它擴(kuò)展和延伸了Auto LISP語言,支持ActiveX技術(shù)和反應(yīng)器技術(shù),還支持DCL對(duì)話框設(shè)計(jì)語言,因此成為AutoCAD二次開發(fā)的有利工具。相對(duì)于VBA而言,Visual LISP能靈活而充分地使用AutoCAD的現(xiàn)有功能,方便調(diào)用AutoCAD中的命令,交互操作性強(qiáng)。
本文介紹利用Visual LISP編程并結(jié)合留設(shè)保護(hù)煤柱的兩種算法編制了計(jì)算保護(hù)煤柱軟件,實(shí)現(xiàn)了保護(hù)煤柱的自動(dòng)計(jì)算和繪制。
1.1 垂直剖面法的計(jì)算方法
首先,根據(jù)受保護(hù)建筑物矩形確定保護(hù)邊界,第二步按保護(hù)等級(jí)留設(shè)圍護(hù)帶,得到圍護(hù)帶邊界;然后在沿煤層傾斜方向根據(jù)上下山移動(dòng)角,松散層厚度,煤層傾角等參數(shù)計(jì)算出保護(hù)煤柱梯形的高;然后在沿煤層走向方向根據(jù)走向移動(dòng)角,松散層厚度,松散層移動(dòng)角等參數(shù)計(jì)算出保護(hù)煤柱梯形的上底和下底;最后在AutoCAD中繪制出保護(hù)煤柱梯形。
1.2 垂線法的計(jì)算方法
首先,確定建筑物邊界的位置和尺寸,再按護(hù)等級(jí)留設(shè)圍護(hù)帶,得到圍護(hù)帶邊界,然后根據(jù)松散層厚度和松散層移動(dòng)角確定松散層邊界寬度,并得到松散層保護(hù)邊界。然后根據(jù)上、下山移動(dòng)角,保護(hù)面積邊界與煤層走向所夾銳角計(jì)算偽傾斜移動(dòng)角,根據(jù)上山和下山方向的垂線長度,分別計(jì)算出圍護(hù)帶邊界四點(diǎn)的垂線長度,并過這些垂線的端點(diǎn)作直線,這些直線的四個(gè)交點(diǎn)相連,即可確定保護(hù)煤柱邊界。
編制該軟件的思路是先設(shè)計(jì)輸入?yún)?shù)對(duì)話框,然后設(shè)計(jì)對(duì)話框驅(qū)動(dòng)程序和兩種計(jì)算保護(hù)煤柱的算法,最后繪制計(jì)算保護(hù)煤柱的邊界。
2.1 用DCL語言設(shè)計(jì)輸入?yún)?shù)對(duì)話框
DCL語言用來設(shè)計(jì)對(duì)話框進(jìn)行交互性輸入,用AutoLISP程序驅(qū)動(dòng)。利用DCL語言設(shè)計(jì)輸入?yún)?shù)對(duì)話框,得到“bhmz.DCL”。用戶通過該對(duì)話框輸入繪制保護(hù)煤柱的方法及所需參數(shù)。設(shè)計(jì)的對(duì)話框如下圖:
圖1.設(shè)計(jì)保護(hù)煤柱對(duì)話框
2.2 設(shè)計(jì)對(duì)話框驅(qū)動(dòng)程序和兩種計(jì)算保護(hù)煤柱的算法
設(shè)計(jì)對(duì)話框驅(qū)動(dòng)程序時(shí)首先定義獲取輸入對(duì)話框中參數(shù)的子函數(shù)getdata(),然后加載對(duì)話框,獲取數(shù)據(jù)。
兩種計(jì)算保護(hù)煤柱的算法的部分代碼:
;垂直剖面法:
(setq mn(-yaaa ybbb)qk(-xddd xaaa)) ;確定圍護(hù)帶的寬qk,高 mn
(setq mcqj(/(*pi mcqj)180)) ;將煤層傾角度數(shù)轉(zhuǎn)換為弧度
(setq hm(-ha(*bhdj(tan mcqj))))
(setq hn(+hm(*(/mn(cos mcqj))(sin mcqj))));確定建筑物邊界c點(diǎn)與煤層的垂直距離
;垂線法:
;求偽傾角
(setq xsydjw(sqrt(+(*(expt(cot xsydj)2)(expt(cos zxjj)2))(*(expt (cot zxydj)2)(expt(sin zxjj)2)))))
(setq ssydjw(sqrt(+(*(expt(cot ssydj)2)(expt(cos zxjj)2))(*(expt(cot zxydj)2)(expt(sin zxjj)2)))))
(setq xsydjw1(sqrt(+(*(expt(cot xsydj)2)(expt(cos zxjj1)2))(*(expt (cot zxydj)2)(expt(sin zxjj1)2)))))
(setq ssydjw1(sqrt(+(*(expt(cot ssydj)2)(expt(cos zxjj1)2))(*(expt (cot zxydj)2)(expt(sin zxjj1)2)))))
(setq qx(/xsydjw(+1(*xsydjw(tan mcqj)(cos zxjj)))))
(setq lx(/ssydjw(-1(*ssydjw(tan mcqj)(cos zxjj)))))
(setq qx1(/xsydjw1(+1(*xsydjw1(tan mcqj)(cos zxjj1)))))
(setq lx1(/ssydjw1(-1(*ssydjw1(tan mcqj)(cos zxjj1)))))
(setq qa1(*(-haaa btchd)qx))
(setq qa2(*(-haaa btchd)qx1))
2.3 繪制保護(hù)煤柱邊界線
繪制煤柱邊界線時(shí),可以在VisualLISP中直接調(diào)用AutoCAD中“pline”命令。代碼如下:(command"pline"da db dc dd"c"),在AutoCAD中繪制的結(jié)果如下圖:
圖2.運(yùn)行結(jié)果
本文首先簡單介紹了Visual LISP二次開發(fā)語言,然后介紹了設(shè)計(jì)保護(hù)煤柱的兩種方法,并用Visual LISP設(shè)計(jì)了相應(yīng)的算法,實(shí)現(xiàn)了用戶輸入?yún)?shù)即可繪制出保護(hù)煤柱邊界。通過本例可以體會(huì)到Visual LISP二次開發(fā)快速、簡捷、能充分靈活調(diào)用AutoCAD命令的優(yōu)點(diǎn)。目前Visual LISP在AutoCAD中的二次開發(fā)應(yīng)用還有很大的發(fā)展?jié)摿ΓM院髸?huì)有更高效的開發(fā)實(shí)例出現(xiàn)。
[1]李學(xué)志.Visual LISP程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2010.
[2]林在康,鄭希貴.礦業(yè)信息技術(shù)基礎(chǔ)[M].徐州:中國礦業(yè)大學(xué)出版社,2009.
[3]林海飛,陳勇.Surfer和AutoCAD軟件在編制礦井瓦斯地質(zhì)圖中的應(yīng)用[J].中國煤炭,2010,36:23-25.
王出(1988-11-17-),男,山西運(yùn)城人,助教,學(xué)士,2010年畢業(yè)于西安科技大學(xué)采礦工程專業(yè),現(xiàn)從事采礦CAD教學(xué)工作