论文部分内容阅读
摘 要:用Visual Basic 6.0和Microsoft Excel2007对AutoCAD2007进行开发,使得CAD的功能得到扩展,介绍了VB中如何调用Excel和CAD的类型库和从VB代码中来操作EXCEL和CAD的方法和技术,从而可以在VB中调用Excel和CAD,并引用Excel的数据来生成CAD中的图元,进而探讨如何由煤矿中涉及到的抽采钻孔参数数据快速生成钻孔平面图,最后用AutoCAD2007中自带的VBA编辑器开发AutoCAD2007的菜单,添加新的菜单项,并将开发出的能生成钻孔的可执行文件与新的菜单项并联,达到能从CAD的菜单中快速调用关于生成抽采钻孔的CAD二次開发程序。
关键词:Visual Basic 6.0;Excel;AutoCAD;evelopment;类型库;钻孔;菜单
中图分类号:TD712.6 文献标识码:A 文章编号:1004-7344(2018)18-0153-02
在高瓦斯矿井和突出矿井都会采取一些措施来治理瓦斯,常常会采取用顶抽巷、底抽巷打穿层钻孔,或沿煤层打顺层钻孔来抽瓦斯达到降低或消除突出危险性和瓦斯含量。在作月度或年度验收评价时会需要期间所打钻孔的实际分布图,一般都用CAD来完成制图工作,如果只用CAD中提供的基本的绘图命令和编辑工具并依照日常统计的钻孔参数数据来完成百上千个钻孔图形会是一个繁琐费事的过程,而却还很容易出错,因此就需要探索一种快速准确的并基于钻孔基本参数数据完成制图方法,将日常统计的钻孔参数数据快速准确的转换为CAD图形的钻孔。
1 基本原理
本本所涉及的发开方法是用Visual Basic 6在CAD2007和office2007基础上所开发的,关键在于解决钻孔的excel数据装换成CAD特定钻孔图形。
ActiveX Automation interface[1](ActiveX自动化界面技术)是微软公司推出的一个技术标准,该技术是在Windows系统的统一管理下协调不同的应用程序,允许应用程序之间相互控制、相互调用。AutoCAD作为一种具有高度开放结构的CAD平台软件,它提供了强大的二次开发环境,并AutoCAD引入了ActiveX技术。所以许多面向对象化编程的语言和应用程序,可以通过ActiveX与AutoCAD进行通信,并操纵AutoCAD的许多功能。
从图1中可以看出,能使用ActiveX自动化界面技术的语言环境有很多,这是ActiveX技术的一大优点。另外,采用ActiveX技术还可以是应用程序之间很好地共享数据,如AutoCAD、office excel、office word等。Visual Basic是一种可视化的计算机开发语言,是一门容易掌握和使用的计算机语言可以轻松的创建ActiveX控件。所以在做此项开发时,用vb6.0的ActiveX技术同时调用excel和AutoCAD的类型库来并完成数据交换处理。
2 如何实现Excel数据转为CAD图
2.1 VB中调用CAD的方法与技术
VB中的用CAD可分为以下几步来完成,其中关键在于如何调用CAD类型库[2]。
(1)打开VB建立一个新的工程,添加一个名为Module1标准模块单。
(2)启动“工程”菜单下的“引用”命令,打开应用对话框,找到“AutoCAD2007 TypeLibrary”并在其复选框上打钩,然后单击确“确定”。
(3)启动“工程”菜单下的“工程引用”命令,单击工程属性对话框中的“启动对象”栏右端的箭头,在其组合框中选中“Sub Main”,单击确定。(把Sub Main设定为启动过程[1])
(4)在SubMain过程中添加以下程序代码:
Public acadapp As Object
Public acaddoc As Object
Public mospace As Object
Sub Main()
On Error Resume Next
‘错误处理,如果错误执行下一句
Set acadapp=GetObject(,"Autocad.Application")
If Err <> 0 Then
Err.Clear
‘如果CAD打开把当前打开图档作为操作图档
Set acadapp=CreateObject("Autocad.Application")
If Err<>0Then
Err.Clear
MsgBox"CAD未打开,_
请打先打开一个CAD图档!",48,"错误:"
Exit Sub
End If
‘如果CAD没打开,自动新建新的图档文件
End If
Set acaddoc=acadapp.ActiveDocument
Set mospace=acaddoc.ModelSpace
Set paspace=acaddoc.PaperSpace
acadapp.Visible=acTrue
End Sub
2.2 VB调用Excel的方法与技术
(1)在D盘目录中建立名为"列表.xls"的Excel文件。
(2)打开VB建立一个新的工程,添加一个名为窗体,在窗体上添加两个控件将command1标签改为“修改”,command2标签改为“退出”。
(3)用2.1中所述的方法引用Excel的类型库。 (4)添加如下代码:
Private Sub Command1_Click()
Dim xlapp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Set xlapp=CreateObject("excel.application")
Set xlbook=_
xlapp.Workbooks.Open("D:\列表.xls")
xlapp.Visible=false
Set xlsheet=xlbook.Worksheets("sheet1")
xlsheet.Cells(1,1)="河南煤化"
xlbook.Close(True)
xlapp.Quit
Set xlapp=Nothing
End sub
Private Sub Command2_Click()
End
End sub
运行程序后单击“修改”后,打开“列表.xls”文件,会发现其A1单元格内容变成了“河南煤化”。
3 根据钻孔参数生成CAD图形技术
将打成的钻孔数据制成Excel表,假如现有穿层钻孔参数列表,如表1所示,先要将根据此参数生成CAD图。
3.1 程序设计预期
根据表1中的参数,在CAD图档中生成三条钻孔,其钻孔间距为1.2m,都于巷道中线垂直,图中所画各段长度均为根据倾角转换的投影长,在补下28号孔的见煤处,和补下30号孔的50m处标记喷孔符号“”,分别把孔号标记到各个钻孔上如图2所示。
3.2 程序设计思路
要想生成如图2中的钻孔首先要建立一个匿名图块[3],并此匿名块命名为“*Z”,用来在其中添加所插入的所有钻孔和孔号及喷孔标记,在添加钻孔时每个钻孔有三条线段构成分别是红色的顶板段、绿色的煤段、红色的底板段,添加时把巷道视为水平的从左到右依次是补下29、补下28、补下30号钻孔,此时钻孔与中线夹角为钻孔和用户坐标系X正半轴的夹角,每条钻孔需要4个点的坐标来定三条线段,每条钻孔的起点坐标为横坐标依次增大一个间距,纵坐标不变,可取为0,因此每条钻孔的起点坐标已知,可根据其与X正半轴夹角求出其他三点坐标,当坐标求出之后,那就可以根据此这些坐标点添加每条线段、孔号和喷孔标记,补下30号的“50m喷孔”中的50m指的是从钻孔起点开始向此钻孔终点方向的50m处。所有图元添加完毕之后就要用insertblock方法[1]插入此匿名块的块参照,然后sendCommand方法[3]调用CAD2007中的“_rotate”来任意旋转插入后的块参照[1],再用explode方法[1]分解此块参照,最后删除块参照便留下分解后的所有图元。
其中用来添加钻孔顶板段、煤段、底板段投影线段的四点坐标用以下公式求的,坐标示意图如图3。
Xn1=(n-1)·J(1)
Yn1=0(2)
Xn2=Xn1+i·cos(γ)(3)
Yn2=Yn1+i·sin(γ)(4)
Xn3=Xn1+(i+j)·cos(γ)(5)
Yn3=Yn1+(i+j)·sin(γ)(6)
Xn4=Xn1+(i+j+k)·cos(γ)(7)
Yn4=Yn1+(i+j+k)·sin(γ)(8)
式中:J为钻孔间距;γ为钻孔与巷道中线的夹角;α为钻孔与水平面的夹角;n=1,2,3…按照钻孔生成先后顺序依次增大,表示第n条钻孔;i为顶板段投影,i=顶板段·cos(α);j为煤段投影,j=煤段·cos(α);k为底板段投影,k=底板段·cos(α)。
4 结 论
(1)CAD经过此项开发后可以根据钻孔参数快速准确地生成所设计好样式的钻孔平面圖。
(2)可以利用本方法作更多的开发,使CAD的功能得到扩展,更适合制图人员所从事的专业的使用。
参考文献
[1]王 钰.用VBA开发Autocad2000应用程序[M].北京:人民邮电出版社,1999.
[2]朱桂华.基于VBA技术实现Excel数据生成CAD对象的方[J].中国西部科技,2007(8):88~89.
[3]张 帆.AutocadVBA二次开发教程[M].北京:清华大学出版社,2006.
收稿日期:2018-5-24
关键词:Visual Basic 6.0;Excel;AutoCAD;evelopment;类型库;钻孔;菜单
中图分类号:TD712.6 文献标识码:A 文章编号:1004-7344(2018)18-0153-02
在高瓦斯矿井和突出矿井都会采取一些措施来治理瓦斯,常常会采取用顶抽巷、底抽巷打穿层钻孔,或沿煤层打顺层钻孔来抽瓦斯达到降低或消除突出危险性和瓦斯含量。在作月度或年度验收评价时会需要期间所打钻孔的实际分布图,一般都用CAD来完成制图工作,如果只用CAD中提供的基本的绘图命令和编辑工具并依照日常统计的钻孔参数数据来完成百上千个钻孔图形会是一个繁琐费事的过程,而却还很容易出错,因此就需要探索一种快速准确的并基于钻孔基本参数数据完成制图方法,将日常统计的钻孔参数数据快速准确的转换为CAD图形的钻孔。
1 基本原理
本本所涉及的发开方法是用Visual Basic 6在CAD2007和office2007基础上所开发的,关键在于解决钻孔的excel数据装换成CAD特定钻孔图形。
ActiveX Automation interface[1](ActiveX自动化界面技术)是微软公司推出的一个技术标准,该技术是在Windows系统的统一管理下协调不同的应用程序,允许应用程序之间相互控制、相互调用。AutoCAD作为一种具有高度开放结构的CAD平台软件,它提供了强大的二次开发环境,并AutoCAD引入了ActiveX技术。所以许多面向对象化编程的语言和应用程序,可以通过ActiveX与AutoCAD进行通信,并操纵AutoCAD的许多功能。
从图1中可以看出,能使用ActiveX自动化界面技术的语言环境有很多,这是ActiveX技术的一大优点。另外,采用ActiveX技术还可以是应用程序之间很好地共享数据,如AutoCAD、office excel、office word等。Visual Basic是一种可视化的计算机开发语言,是一门容易掌握和使用的计算机语言可以轻松的创建ActiveX控件。所以在做此项开发时,用vb6.0的ActiveX技术同时调用excel和AutoCAD的类型库来并完成数据交换处理。
2 如何实现Excel数据转为CAD图
2.1 VB中调用CAD的方法与技术
VB中的用CAD可分为以下几步来完成,其中关键在于如何调用CAD类型库[2]。
(1)打开VB建立一个新的工程,添加一个名为Module1标准模块单。
(2)启动“工程”菜单下的“引用”命令,打开应用对话框,找到“AutoCAD2007 TypeLibrary”并在其复选框上打钩,然后单击确“确定”。
(3)启动“工程”菜单下的“工程引用”命令,单击工程属性对话框中的“启动对象”栏右端的箭头,在其组合框中选中“Sub Main”,单击确定。(把Sub Main设定为启动过程[1])
(4)在SubMain过程中添加以下程序代码:
Public acadapp As Object
Public acaddoc As Object
Public mospace As Object
Sub Main()
On Error Resume Next
‘错误处理,如果错误执行下一句
Set acadapp=GetObject(,"Autocad.Application")
If Err <> 0 Then
Err.Clear
‘如果CAD打开把当前打开图档作为操作图档
Set acadapp=CreateObject("Autocad.Application")
If Err<>0Then
Err.Clear
MsgBox"CAD未打开,_
请打先打开一个CAD图档!",48,"错误:"
Exit Sub
End If
‘如果CAD没打开,自动新建新的图档文件
End If
Set acaddoc=acadapp.ActiveDocument
Set mospace=acaddoc.ModelSpace
Set paspace=acaddoc.PaperSpace
acadapp.Visible=acTrue
End Sub
2.2 VB调用Excel的方法与技术
(1)在D盘目录中建立名为"列表.xls"的Excel文件。
(2)打开VB建立一个新的工程,添加一个名为窗体,在窗体上添加两个控件将command1标签改为“修改”,command2标签改为“退出”。
(3)用2.1中所述的方法引用Excel的类型库。 (4)添加如下代码:
Private Sub Command1_Click()
Dim xlapp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Set xlapp=CreateObject("excel.application")
Set xlbook=_
xlapp.Workbooks.Open("D:\列表.xls")
xlapp.Visible=false
Set xlsheet=xlbook.Worksheets("sheet1")
xlsheet.Cells(1,1)="河南煤化"
xlbook.Close(True)
xlapp.Quit
Set xlapp=Nothing
End sub
Private Sub Command2_Click()
End
End sub
运行程序后单击“修改”后,打开“列表.xls”文件,会发现其A1单元格内容变成了“河南煤化”。
3 根据钻孔参数生成CAD图形技术
将打成的钻孔数据制成Excel表,假如现有穿层钻孔参数列表,如表1所示,先要将根据此参数生成CAD图。
3.1 程序设计预期
根据表1中的参数,在CAD图档中生成三条钻孔,其钻孔间距为1.2m,都于巷道中线垂直,图中所画各段长度均为根据倾角转换的投影长,在补下28号孔的见煤处,和补下30号孔的50m处标记喷孔符号“”,分别把孔号标记到各个钻孔上如图2所示。
3.2 程序设计思路
要想生成如图2中的钻孔首先要建立一个匿名图块[3],并此匿名块命名为“*Z”,用来在其中添加所插入的所有钻孔和孔号及喷孔标记,在添加钻孔时每个钻孔有三条线段构成分别是红色的顶板段、绿色的煤段、红色的底板段,添加时把巷道视为水平的从左到右依次是补下29、补下28、补下30号钻孔,此时钻孔与中线夹角为钻孔和用户坐标系X正半轴的夹角,每条钻孔需要4个点的坐标来定三条线段,每条钻孔的起点坐标为横坐标依次增大一个间距,纵坐标不变,可取为0,因此每条钻孔的起点坐标已知,可根据其与X正半轴夹角求出其他三点坐标,当坐标求出之后,那就可以根据此这些坐标点添加每条线段、孔号和喷孔标记,补下30号的“50m喷孔”中的50m指的是从钻孔起点开始向此钻孔终点方向的50m处。所有图元添加完毕之后就要用insertblock方法[1]插入此匿名块的块参照,然后sendCommand方法[3]调用CAD2007中的“_rotate”来任意旋转插入后的块参照[1],再用explode方法[1]分解此块参照,最后删除块参照便留下分解后的所有图元。
其中用来添加钻孔顶板段、煤段、底板段投影线段的四点坐标用以下公式求的,坐标示意图如图3。
Xn1=(n-1)·J(1)
Yn1=0(2)
Xn2=Xn1+i·cos(γ)(3)
Yn2=Yn1+i·sin(γ)(4)
Xn3=Xn1+(i+j)·cos(γ)(5)
Yn3=Yn1+(i+j)·sin(γ)(6)
Xn4=Xn1+(i+j+k)·cos(γ)(7)
Yn4=Yn1+(i+j+k)·sin(γ)(8)
式中:J为钻孔间距;γ为钻孔与巷道中线的夹角;α为钻孔与水平面的夹角;n=1,2,3…按照钻孔生成先后顺序依次增大,表示第n条钻孔;i为顶板段投影,i=顶板段·cos(α);j为煤段投影,j=煤段·cos(α);k为底板段投影,k=底板段·cos(α)。
4 结 论
(1)CAD经过此项开发后可以根据钻孔参数快速准确地生成所设计好样式的钻孔平面圖。
(2)可以利用本方法作更多的开发,使CAD的功能得到扩展,更适合制图人员所从事的专业的使用。
参考文献
[1]王 钰.用VBA开发Autocad2000应用程序[M].北京:人民邮电出版社,1999.
[2]朱桂华.基于VBA技术实现Excel数据生成CAD对象的方[J].中国西部科技,2007(8):88~89.
[3]张 帆.AutocadVBA二次开发教程[M].北京:清华大学出版社,2006.
收稿日期:2018-5-24