欢迎来到天天文库
浏览记录
ID:34511558
大小:297.40 KB
页数:5页
时间:2019-03-07
《autolisp编程快速求取煤层倾角方法的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、AutoLISP编程快速求取煤层倾角方法的实现1123田迎斌韩晶磊王江波田锋(1.煤炭科学研究总院唐山研究院,河北唐山063012;2.北京世纪千府国际工程设计有限公司河南分院,河南新乡453000;3.邹城市国土资源局,山东邹城273500)摘要:针对目前煤矿用图及开采沉陷预计中经常要使用或掌握煤层倾角、地形坡度等数据,本文利用AutoCAD的二次开发语言——AutoLISP语言编程实现了对煤层倾角、地形坡度等的快速求取,从而大大增加了工作效率。关键词:AutoLISP;煤层倾角;地形坡度科研项目:“十一五”国家科技支撑计划课题目前,煤矿相关技术工作人员及其他科研人员在工作中要经常了解
2、或求取煤层倾角或地形坡度等数据,一般是先通过获取图中已知数据,然后再利用计算器求得。这样当需要快速求取大量的角度时,就显的机械和重复。AutoLISP语言是AutoCAD的二次开发语言,它可以在程序中调用AutoCAD中的各种命令并进行及时的输出,作者针对这个问题利用AutoLISP语言编程实现了对煤层倾角、地形坡度等的快速求取。1AutoLISP语言简介LISP是一门历史悠久,用途广泛,功能极强,生命力极强的人工智能程序设计语言。AutoLISP语言是LISP语言的一个子集。AutoLISP语言全名为LISTProcessingLanguage,是一种计算机表处理语言,这种编程语言用来
3、处理由括号(即“(”和“)”)构成的列表。它于1985年第一次出现在AutoCADR2.18中,是一种嵌入在AutoCAD内部的LISP编程语言。AutoLISP语言不仅具有一般高级语言的基本结构和功能,又具有一般高级语言所没有的强大图形处理能力,它可以实现对AutoCAD当前图形数据库的直接访问和修改、定义新命令、实现参数化绘图、扩充AutoCAD现有功能,可以直接调用几乎全部的AutoCAD命令,是开发AutoCAD的强有力的工具。2求取煤层倾角的一般方法2.1求取煤层倾角应注意的问题煤矿相关技术工作人员及其他科研人员在工作中要经常使用,比如煤层底板等高线图、矿区地形图等煤矿用图和下
4、沉预计等值线图等。在这些图中都包括了丰富的数据信息,在煤层底板等高线图中有煤层底板等高线,在地形图中有地形等高线,在下沉预计等值线图中有预计下沉等值线。但是在这些图中一般没有直接给出煤层倾角、地形坡度及地表附加坡度的数据,所以需要根据图中已有数据进行间接求取,在求取过程中需要注意如下问题:1(1)在量取等高线平距时,应沿等高线的法线方向,即沿垂直于等高线的方向;否则,计算出的角度或坡度是伪角度或伪坡度;(2)一般煤层底板等高线或地形等高线在图中疏密程度是不一样的,等高线密的地方表明角度或坡度大,等高线疏的地方表明角度或坡度小。可以根据需要求取平均角度或坡度。2.2求取煤层倾角的一般方法以
5、煤层底板等高线图为例来简要说明求取煤层倾角的方法。要求取煤层倾角需要知道两条煤层底板等高线之间的法线距离和高差。图1为某煤矿底板等高线CAD图局部底板等高线(其它信息略),由图可知,基本等高距为10m,-400与-410标高之间平距比-410与-420标高之间平距大,说明-400与-410标高之间煤层比-410与-420标高之间煤层倾角要缓。如果要求取标高为-400与-410之间或-410与-420之间或-400与-420之间的煤层倾角,大致步骤如下:EA-400C-410B-420DF图1煤层底板等高线①获取两等高线之间的平距。在AutoCAD调用“dist”命令,根据提示分别点击沿等
6、高线法线如A、B或C、D或E、F或沿法线方向其它任意两点,之后可以在AutoCAD文本框种获取该两点之间的距离和其它信息。②获取两等高线之间的高差。两点之间的高差通过等高线标高相减可以得到,如A、B两点高差和C、D两点高差都为10m,E、F两点的高差为20m。③求取煤层角度。用两点的平距除以两点相应的高差,就是煤层倾角的正切值,然后用计算器或其它工具可以求出反正切,即可获得煤层倾角。例如,通过在图中实际量取,A、B或C、D或E、F之间的距离分别为54.1m、30.7m、84.6m;高差分别为10m、10m、20m;用计算器求取反正切得到三处煤层倾角分别为10.5°、18.1°、13.3°
7、。23AutoLISP程序实现煤层倾角的快速求取3.1求取煤层倾角的AutoLISP程序AutoLISP程序设计的思想流程是:量取两点之间的距离,输入两点的高差,利用AutoLISP中内嵌反正切函数求取角度,并进行屏幕输出。AutoLISP程序源代码如下:(defunc:mcqj()(if(=(getvar'userr1)0)(setvar"userr1"10))(setqh(getreal(strcat"请输入煤层两底板等高线
此文档下载收益归作者所有