第三章参考格式.doc
利用AutoCAD帮助信息快速开发采矿软件 林在康1 ,王强1 等 (1.中国矿业大学、江苏 徐州 221008,2.皖北煤电集团公司、安徽 宿州 234000 ) 摘 要本文结合开发绘制半圆拱巷道断面轮廓软件的实例,详细地介绍了利用AutoCAD帮助信息快速开发软件的全过程。最终编译并得到绘制半圆拱巷道断面轮廓软件的可执行文件。用这种方法已开发了40余个(套)实用的采矿软件。 关键词AutoCAD;帮助信息;采矿软件;巷道断面;VBA;VB6 中图分类号文献标识码文章编号 一、前言 AutoCAD是国内外煤炭企事业单位最广泛使用的工程绘图软件之一。目前常用的AutoCAD版本有2004、2005、2006。AutoCAD帮助信息中包含了丰富的绘图信息。其中AutoCAD 2004的帮助信息中用VBA编制的824个小程序十分实用,为初学者提供了丰富的技术资料和快速开发实用软件的捷径。 根据我们长期从事采矿CAD教学科研的经验,走出了一条利用AutoCAD帮助信息快速开发采矿软件的成功之路。具体地说,首先从AutoCAD的帮助信息中得到软件的VBA代码,将其复制到AutoCAD的VBA编辑器中。其次,在VBA编辑器中调试运行成功后再复制到VB6的“代码”区域中。在VB6中“添加模块”、增加必要的控件、按VB6规定适当修改代码,调试运行成功后按VB格式存储。最后编译并得到实用软件的可执行文件。用这种方法已开发了40余个(套)采矿软件。 本文结合开发绘制半圆拱巷道断面轮廓软件的实例详细地介绍上述全过程。 二、实例与分析 图1 设一半圆拱巷道断面轮廓尺寸为巷道净宽B4000,墙高h1400,标志性的五个点坐标分别为a(0,1400),b(0,0),c(4000,0),d(4000,1400),e(2000,1400),见图1。 该巷道断面轮廓线由三条直线和一段圆弧组成。只要能写出用VB6编程绘制直线和圆弧的代码,并输入正确的参数,就能绘制出巷道断面轮廓图形。而对于初学者来讲,VB6编程的代码、格式、控件、引用和属性的设置等等任何一个环节出了错都会导致编程的失败。 本文提供的思路可帮助初学者解决编程的入门问题。具体地步骤是 第一步,找到绘制直线的VBA源代码,先绘制一条直线,再绘制三条直线。 第二步,找到绘制圆弧的VBA源代码,并绘制一段圆弧。 第三步,合并绘制直线和圆弧的VBA源代码,输入a、b、c、d、e各点组成的直线和圆弧,绘制出半圆拱巷道断面轮廓图形。 第四步,在VB6中将编程的代码、格式、控件、引用和属性的设置好,使程序实用。 第五步,在VB6中将全部内容编译成可执行文件。 问题的关键在于找到绘制直线和圆弧的VBA源代码。 三、AutoCAD中的帮助信息 1.查找绘制对象的VBA源代码 正常打开AutoCAD 2004,按以下步骤找到绘制直线的VBA源代码。 1)按F1键,打开AutoCAD中的帮助信息。 2)点击目录“自定义手册\ActiveX Automation 和VBA”,出现相关内容。 3)点击目录“ActiveX Automation and VBA Reference”,提供关于 ActiveX 对象模型及其相关接口部件的参考信息。 4)点击目录“Code Examples”,列出了824个AutoCAD提供的应用实例。实例按英文字母A-Z排列。 5)找到并点击目录“AddLine Example”(绘制直线实例),出现以下VBA源代码 Sub Example_AddLine This example adds a line in model space Dim lineObj As AcadLine Dim startPoint0 To 2 As Double Dim endPoint0 To 2 As Double Define the start and end points for the line startPoint0 1 startPoint1 1 startPoint2 0 endPoint0 5 endPoint1 5 endPoint2 0 Create the line in model space Set lineObj ThisDrawing.ModelSpace.AddLinestartPoint, endPoint ZoomAll End Sub 这是一组完整的绘制一条直线的VBA代码,直线的起点为(1,1),终点为(5,5)。 2.运行VBA代码 只有将上述VBA代码复制到AutoCAD中的VBA编辑器中才能运行。 1)在AutoCAD中,点击菜单“工具\宏\Visual Basic编辑器”,出现无代码窗口的Visual Basic编辑器界面。 2)点击Visual Basic编辑器的菜单“视图\代码窗口”,出现有空白代码页面的Visual Basic编辑器界面。 3)将上述VBA代码复制到AutoCAD中的VBA编辑器的空白代码页面中,即可进行第一次运行。 4)在VBA编辑器中,有三种运行方式 (1)将光标放在本段代码的任何地方,点击工具栏处的“运行子过程”三角图标。 (2)将光标放在本段代码的任何地方,点击菜单“运行\运行子过程”。 (3)将光标放在本段代码的任何地方,按F5键。 5)在AutoCAD中,有一种运行方式 点击菜单“工具\宏\宏”,选中“全局1ThisDrawing.Example_ AddLine”,点击“运行”按钮。 3.修改绘制直线实例 将“AddLine Example”中绘制直线语句作相应的修改(代码见后)。 4.绘制圆弧实例 同理,点击目录“AddArc Example”(绘制圆弧实例),找到完整的绘制圆弧的VBA代码,并将代码复制到AutoCAD中的VBA编辑器中,再将“AddArc Example”中的参数设置为中心点e(2000,1400),半径 2000,起始角0,结束角180。 将“AddArc Example”中绘制圆弧的语句作相应的修改(代码见后)。 5.绘制巷道断面轮廓 将“AddL ine Example”和“AddArc Example”二者合并,组成绘制“巷道断面轮廓”的VBA代码 Sub Example_AddHangDao ‘巷道断面轮廓 Dim lineObj As AcadLine Dim startPoint10 To 2 As Double ‘定义直线起点 Dim startPoint20 To 2 As Double Dim startPoint30 To 2 As Double Dim endPoint10 To 2 As Double‘定义直线终点 Dim endPoint20 To 2 As Double Dim endPoint30 To 2 As Double Dim arcObj As AcadArc Dim centerPoint0 To 2 As Double‘定义圆弧中心点 Dim radius As Double‘定义圆弧半径 Dim startAngleInDegree As Double‘定义圆弧起始角 Dim endAngleInDegree As Double‘定义圆弧结束角 Define the start and end points for the line A(0,1400),B(0,0),C(4000,0),D(4000,1400)‘直线各点坐标 startPoint10 0 startPoint11 0 startPoint12 0‘直线起点 startPoint20 0 startPoint21 0 startPoint22 0 startPoint30 4000 startPoint31 0 startPoint32 0 endPoint10 0 endPoint11 1400 endPoint12 0‘直线终点 endPoint20 4000 endPoint21 0 endPoint22 0 endPoint30 4000 endPoint31 1400 endPoint32 0 Create the line in model space Set lineObj ThisDrawing.ModelSpace.AddLinestartPoint1, endPoint1 ‘绘制直线 Set lineObj ThisDrawing.ModelSpace.AddLinestartPoint2, endPoint2 Set lineObj ThisDrawing.ModelSpace.AddLinestartPoint3, endPoint3 centerPoint0 2000 centerPoint1 1400 centerPoint2 0‘圆弧中心点 radius 2000‘圆弧半径 startAngleInDegree 0‘圆弧起始角 endAngleInDegree 180‘圆弧结束角 Convert the angles in degrees to angles in radians Dim startAngleInRadian As Double‘定义圆弧起始角(弧度) Dim endAngleInRadian As Double‘定义圆弧结束角(弧度) startAngleInRadian startAngleInDegree * 3.141592 / 180‘圆弧起始角(弧度) endAngleInRadian endAngleInDegree * 3.141592 / 180‘圆弧结束角(弧度) Create the arc object in model space Set arcObj ThisDrawing.ModelSpace.AddArccenterPoint, radius, startAngleInRadian, endAngleInRadian ‘绘制圆弧 ZoomExtents‘AutoCAD全界面显示 End Sub 运行此代码,即可绘制出如图1所示的图形。 四、将VBA程序调入VB6中 从AutoCAD中的帮助信息中得到的VBA代码,复制到AutoCAD中的VBA编辑器中即可运行。但此时的VBA代码是不能编译的解释性语言。解释性语言主要用于调试程序,其运行速度、实用性和保密性都不理想。 Visual Basic 6(VB6)是Windows平台上使用的优秀编程软件(本文不详细介绍VB6的基础知识)。本文提及的采矿工程软件都是用VB6编译过的可执行文件,运行速度快、实用性和保密性都很理想。 1.在VB6中编辑软件 1)打开VB6编程软件,将AutoCAD中的VBA编辑器中的源代码复制到VB6中“窗体”的1中的“查看代码”区域中。 图2 2)在VB6中加入“添加模块”,加入代码,见图2。此模块的作用是将VB6与AutoCAD相连接并设置当前文件和模型空间(详见文献[1]) 3)在VB6的1中添加必要的控件,即巷道净宽B和墙高h,见图3。 4)在VB6的菜单“工程\引用”中,选择“AutoCAD2004 Type Library” 5)在VB6的菜单“工程\工程1属性\启动对象”中,选择“Sub Main” 6)将源代码中的相关语句按VB6要求作适当修改(详见文献[1])。请读者仔细将这两段代码加以对比,找出各语句的区别(注意下面代码后面加*号的语句)。修改后代码如下 Private Sub Command1_Click 巷道断面轮廓***** 图3 Dim lineObj As AcadLine Dim startPoint10 To 2 As Double 定义直线起点 Dim startPoint20 To 2 As Double Dim startPoint30 To 2 As Double Dim endPoint10 To 2 As Double 定义直线终点 Dim endPoint20 To 2 As Double Dim endPoint30 To 2 As Double Dim B As Integer 定义巷道净宽***** Dim h As Integer 定义墙高***** Dim arcObj As AcadArc Dim centerPoint0 To 2 As Double 定义圆弧中心点 Dim radius As Double 定义圆弧半径 Dim startAngleInDegree As Double 定义圆弧起始角 Dim endAngleInDegree As Double 定义圆弧结束角 B Text1.Text 给巷道净宽赋值***** h Text2.Text 给墙高赋值***** startPoint10 0 startPoint11 0 startPoint12 0 直线起点 startPoint20 0 startPoint21 0 startPoint22 0 startPoint30 B startPoint31 0 startPoint32 0’***** endPoint10 0 endPoint11 h endPoint12 0 直线终点’***** endPoint20 B endPoint21 0 endPoint22 0’***** endPoint30 B endPoint31 h endPoint32 0’***** Create the line in model space Set lineObj moSpace.AddLinestartPoint1, endPoint1 绘制直线’***** Set lineObj moSpace.AddLinestartPoint2, endPoint2 ’***** Set lineObj moSpace.AddLinestartPoint3, endPoint3 ’***** centerPoint0 B / 2 centerPoint1 h centerPoint2 0 圆弧中心点’***** radius B / 2 圆弧半径’***** startAngleInDegree 0 圆弧起始角 endAngleInDegree 180 圆弧结束角 Convert the angles in degrees to angles in radians Dim startAngleInRadian As Double 定义圆弧起始角(弧度) Dim endAngleInRadian As Double 定义圆弧结束角(弧度) startAngleInRadian startAngleInDegree * 3.141592 / 180 圆弧起始角(弧度) endAngleInRadian endAngleInDegree * 3.141592 / 180 圆弧结束角(弧度) Create the arc object in model space Set arcObj moSpace.AddArccenterPoint, radius, startAngleInRadian, endAngleInRadian 绘制圆弧’***** ZoomExtents AutoCAD全界面显示’***** MsgBox “绘制结束“’***** End Sub Private Sub Command2_Click ‘退出 End End Sub 7)调试运行成功后存储文件。 2.在VB6中将软件编译成可执行文件 点击菜单“文件\生成巷道断面轮廓.”,编译后得到可执行文件“巷道断面轮廓.”。运行此文件可绘制出不同参数B和h的巷道断面轮廓图形。在上述代码中再加入绘制圆、图层、线型、线宽、充填、文本、尺寸标注等等语句,即可开发出实用的巷道断面绘制软件。 读者可由小到大、从简单到复杂、不断完善,持之以恒,最终开发出完整实用的各种采矿软件。 五、采矿设计和煤矿生产技术管理软件包简介 用上面介绍的方法,我们开发了一批采矿设计和煤矿生产技术管理软件,包括巷道断面、平斜面交岔点、采区上、中、下部车场、采区煤仓、工业广场及各类保护煤柱等40多个(套)软件。详细情况可上网,在我们主办的网站(采矿软件与数字矿井)上查询和下载相关资料。 参考文献 [1] 林在康,王斌等,采矿CAD开发及编程技术,中国矿业大学出版社,1998.11 [2] 郭朝勇、林在康等,AutoCAD R14 中文版二次开发技术,清华大学出版社,1999.4 [3] 林在康,左秀锋等,矿业信息及计算机应用,中国矿业大学出版社,2002.8 [4] 林在康,丘福新等,采矿软件技术基础,中国矿业大学出版社,2006.1 第一作者简介 林在康,1945年出生,1981年毕业于中国矿业大学北京研究生部。现任江苏徐州中国矿业大学矿业工程学院采矿工程系教授、博士生导师,江苏省高等学校教学名师。主要从事采矿信息及数字矿井和煤矿生产技术软件包开发方面的研究。获国家奖一项、省部级奖四项,出版教材或专著15部。 联系信息 电 话 林在康13912005198,王强13951357262 Email 网 站 邮 编 221008 地 址 江苏徐州中国矿业大学文昌校区矿压楼204室 6