文章引言
Visual LISP是基于AutoCAD环境用于二次开发的编程语言。它扩展和延伸了Auto LISP语言,支持ActiveX技术和反应器技术,还支持DCL对话框设计语言,因此成为AutoCAD二次开发的有利工具。相对于VBA而言,Visual LISP能灵活而充分地使用AutoCAD的现有功能,方便调用AutoCAD中的命令,交互操作性强。
本文介绍利用Visual LISP编程并结合留设保护煤柱的两种算法编制了计算保护煤柱软件,实现了保护煤柱的自动计算和绘制。
1.留设保护煤柱的两种计算方法
1.1垂直剖面法的计算方法
首先,根据受保护建筑物矩形确定保护边界,第二步按保护等级留设围护带,得到围护带边界;然后在沿煤层倾斜方向根据上下山移动角,松散层厚度,煤层倾角等参数计算出保护煤柱梯形的高;然后在沿煤层走向方向根据走向移动角,松散层厚度,松散层移动角等参数计算出保护煤柱梯形的上底和下底;最后在AutoCAD中绘制出保护煤柱梯形。
1.2垂线法的计算方法
首先,确定建筑物边界的位置和尺寸,再按护等级留设围护带,得到围护带边界, 然后根据松散层厚度和松散层移动角确定松散层边界宽度,并得到松散层保护边界。然后根据上、下山移动角,保护面积边界与煤层走向所夹锐角计算伪倾斜移动角,根据上山和下山方向的垂线长度,分别计算出围护带边界四点的垂线长度,并过这些垂线的端点作直线,这些直线的四个交点相连,即可确定保护煤柱边界。
2. 用Visual LISP编制计算保护煤柱软件
编制该软件的思路是先设计输入参数对话框,然后设计对话框驱动程序和两种计算保护煤柱的算法,最后绘制计算保护煤柱的边界。
2.1用DCL语言设计输入参数对话框
DCL语言用来设计对话框进行交互性输入,用AutoLISP程序驱动。利用DCL语言设计输入参数对话框,得到“bhmz.DCL”。用户通过该对话框输入绘制保护煤柱的方法及所需参数。设计的对话框如下图:
图1.设计保护煤柱对话框
2.2 设计对话框驱动程序和两种计算保护煤柱的算法
设计对话框驱动程序时首先定义获取输入对话框中参数的子函数getdata(),然后加载对话框,获取数据。
两种计算保护煤柱的算法的部分代码:
;垂直剖面法:
(setq mn (- yaaa ybbb) qk (- xddd xaaa)) ;确定围护带的宽qk,高mn
(setq mcqj (/(* pi mcqj) 180)) ;将煤层倾角度数转换为弧度
(setq hm(- ha (* bhdj (tan mcqj))))
(setq hn (+ hm (* (/ mn (cos mcqj)) (sin mcqj)))) ;确定建筑物边界c点与煤层的垂直距离
;垂线法:
;求伪倾角
(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 绘制保护煤柱边界线
绘制煤柱边界线时,可以在VisualLISP中直接调用AutoCAD中“pline”命令。代码如下: (command "pline" da db dc dd "c"),在AutoCAD中绘制的结果如下图:
图2.运行结果
结束语
本文首先简单介绍了Visual LISP二次开发语言,然后介绍了设计保护煤柱的两种方法,并用Visual LISP设计了相应的算法,实现了用户输入参数即可绘制出保护煤柱边界。通过本例可以体会到Visual LISP二次开发快速、简捷、能充分灵活调用AutoCAD命令的优点。目前Visual LISP在AutoCAD中的二次开发应用还有很大的发展潜力,希望以后会有更高效的开发实例出现。
参考文献:
[1] 李学志. Visual LISP程序设计[M]. 北京:清华大学出版社,2010.
[2] 林在康,郑希贵. 矿业信息技术基础[M]. 徐州:中国矿业大学出版社,2009.
[3] 林海飞,陈勇.Surfer和AutoCAD软件在编制矿井瓦斯地质图中的应用[J].中国煤炭,2010,36:23-25.
作者简介:
王出(1988-11-17- ),男,山西运城人,助教,学士,2010年毕业于西安科技大学采矿工程专业 ,现从事采矿CAD教学工作