资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,2011全国矿山测量新技术学术会议,汇报人:田迎斌,AutoLISP与VBA交叉编程技术在铁路保护煤柱留设中的应用,煤炭科学研究总院唐山研究院,1,、引言,2,、,AutoLISP,与,VBA,交叉编程技术简介,3,、利用,AUTOLISP,编程自定义命令,4,、利用,VBA,开发面向对象的对话框,5,、,VBA,程序的调用及向,AutoLISP,的数据传递,6,、应用实例,7,、结论,汇 报 内 容,1,、引言,留设保护煤柱是保护地表建(构)筑物的最有效的方法之一。目前,对于铁路保护煤柱一般采用垂直剖面法进行留设,而其关键就是绘制垂直于铁路纵向的竖向剖面图。,本文针对铁路保护煤柱的留设,利用AutoLISP与VBA交叉编程技术探讨在CAD中绘制剖面图的程序化,从而使铁路保护煤柱留设变得简单易行。,2,、,AutoLISP,与,VBA,交叉编程技术简介,AutoLISP语言不仅具有一般高级语言的基本结构和功能,又具有一般高级语言所没有的强大图形处理能力,它可以实现对AutoCAD当前图形数据库的直接访问和修改、定义新命令、实现参数化绘图、扩充AutoCAD现有功能,可以直接调用全部的AutoCAD命令,是开发AutoCAD的强有力的工具。,AutoCAD的VBA是一个面向对象的编程环境,提供了和VB相似的丰富编程功能,VBA应用窗体设计简单灵活,包括了VB中的所有标准控件。,AutoLISP,与VBA 交叉编程技术的核心即是利用AutoLISP编制自定义绘图程序;利用VBA 进行用户界面制作,实现人机交互中获得设计参数。这种技术应用的关键在于如何成功地在VBA 程序及VLISP 程序中进行数据与信息传递。,3,、,利用AUTOLISP编程自定义绘制铁路垂直剖面图的命令,通过对建筑物、水体、铁路及主要井巷煤柱留设与压煤开采规程中附录九例8的分析,可以得出要绘制一个标准的剖面图需要如表1所示的11个主要参数。,根据表1中的参数编写了名称为“CZPM”的自定义命令,将这些程序写在的文本文件中。,在程序中主要完成,绘图所需参数的输入、剖面图上下山伪移动角的计算及剖面图形的输出,等。其主程序格式如下:,(defun c: CZPM( ),(setq t (getreal “n请输入T:”),(setq w (getreal “n请输入w:”),(setq pt (getpoint “n请输入剖面图插入点pt:”),(setq pl1 (getpoint “n请点击平面图中剖面线与围护边界之交点PL1【左侧】:”),(setq pl2 (getpoint “n请沿剖面线点击PL1外侧之任一点PL2:”),(setq pr1 (getpoint “n请点击平面图中剖面线与围护边界之交点PR1【右侧】:”),(setq pr2 (getpoint “n请沿剖面线点击PR1外侧之任一点PR2:”),),当运行“CZPM”自定义命令时,要求用户依次输入十几个有关参数。这样以调用自定义命令并且逐个输入参数的方式,有其局限性和不足,就是逐个输入参数的方式不够直观,且一旦输入回车后则不能够进行修改,除非退出命令,重新执行该命令。,3,、,利用AUTOLISP编程自定义绘制铁路垂直剖面图的命令,4,、利用,VBA,开发面向对象的参数输入对话框,在VBA 编程环境中,通过拖曳的方式从控件箱中选择控件,调整其位置和大小(如下图所示)。建立VBA 的宏程序,命名为“TLMZ.alternation”,供程序运行时调用。分别为各控件及命令添加代码。,然后将工程保存为。,5,、,VBA程序的调用及向AutoLISP的数据传递,在AutoLISP中是通过“vbarun”命令来运行VBA工程的,可以在中添加如下代码:,(defun c:TLMZ(),(command _vbarun ) ;运行VBA 工程,),当在CAD中运行“TLMZ”自定义命令时,程序就会在AutoCAD 环境中调出如图1所示的自定义用户界面,输入所有要求的参数完毕且单击“确定”按钮后,就会,触发“确定”按钮的Click事件,VBA将会把表1中序号为111的相关参数按照与“CZPM”命令要求的顺序传递到“CZPM”命令中,,随后隐藏对话框界面,将控制权交给CAD进而接着运行“CZPM”命令的后续绘图输出命令,就实现了在CAD模型空间剖面图的绘制工作。这是交叉编程实现参数化设计的关键。,当触发确定按钮的Click事件时,VBA是通过SendCommand 方法来实现VBA向AutoLISP的数据传递的。,6,、应用实例,以绘制某铁路横向垂直剖面保护煤柱为例进行说明具体应用,铁路平面图如下图 所示。,具体步骤:,1、在CAD命令行输入“TLMZ”自定义命令,,弹出对话框,,并输入相关参数。,6,、应用实例,具体步骤:,2、单击“确定”按钮返回CAD命令行,同时,将对话框中相关参数按照一定顺序传递给“CZPM”自定义命令。在程序中对上、下山伪移动角进行了计算。,3、在CAD模型空间任意单击一点,则即刻自动绘制出铁路保护煤柱的剖面。,6,、应用实例,具体步骤:,4、根据CAD命令行提示,依次进行操作。在铁路两侧各标注了一个圆圈代表该剖面上两侧的保护煤柱边界点。至此,程序运行完毕!,5、所有剖面图的绘制与上述步骤相同,只需重复运行该命令,输入该剖面处的铁路及岩层移动,的相关参数即可。,7,、结论,本文兼顾了AutoLISP 的简单便利的编程绘图输出功能及VBA 在制作界面上的方便可行之优点,用VBA开发用户界面,用AutoLISP编制自定义绘图程序,通过SendCommand方法从VBA向AutoLISP自定义命令传递数据,进行了剖面图的可视化参数设计及绘图输出,简单快捷地实现了铁路保护煤柱留设线的绘制,其交叉编程技术也为工程技术人员在绘图工作中提供了一种新的开发手段。,欢迎批评指正!,谢谢!,
展开阅读全文