利用VBA对AutoCAD二次开发在矿山测量中的应用

2014-02-18 03:50王鹏霖
城市建设理论研究 2014年5期
关键词:矿山测量二次开发

摘要:本文通过对AutoCAD绘图软件、二次开发语言VBA的介绍,以及分析矿山测量在制图时对AutoCAD的需求,阐述利用VBA对AutoCAD二次开发在矿山测量中的应用。

关键词:AutoCAD;VBA;二次开发;矿山测量

中图分类号: O434.19 文献标识码: A

1关于AutoCAD、 VBA

1.1介绍AutoCAD、VBA

AutoCAD(Auto Computer Aided Design)是美国Autodesk公司首次于1982年研究开发的计算机辅助设计软件,是目前国际上应用最流行的绘图工具,功能全面,操作稳定,普适性强,广泛用于二维绘图、详细绘制,深受各行各业设计者和工程技术人员的喜爱。与此同时,高普适性也对应着AutoCAD另一大特点:开放的结构体系。这种开放体系,使得不同行业、专业根据自身的特点能够对其进行Autodesk二次开发,可以说AutoCAD的普适性为其二次开发提供了必要条件,从而也弥补了其专业针对性能不强的弱点。

从AutoCAD R14.01版开始,Autodesk在AutoCAD中加入了VBA(Visual Basic for Applications),作为AutoCAD的一种二次开发工具。VBA是一种完全面向对象体系结构的编程语言,是Visual Basic的一种宏语言,与VB有着相似的语言结构和开发环境。在VBA中,AutoCAD通过AetiveX提供了一个沟通外部世界的机制,使得AutoCAD通过不同的编程语言和环境进行二次开发。可见,VBA是通过ActiveX接口建立与AutoCAD对象之间的联系,在AutoCAD和Visual Basic之间搭建起起了一座桥梁,将其完美的融合在一起,创造出符合用户要求的程序,形成新的功能性强、灵活性高的软件。

1.2利用VBA对AutoCAD进行二次开发的优点

VBA与其他AutoCAD二次开发技术相比,优点有很多:

VB语言基础广泛。作为世界上使用人数最多的计算机编程语言,VB有非常坚实的语言基础,编程环境相对于其他二次开发技术更容易学习和使用。

嵌入式与独立性并举。在二次开发中,VBA以AutoCAD软件为依托,但并不是所有的应用程序都要与AutoCAD进行交互,体现了VBA的灵活性。

运行速度快而稳定。当VBA与AutoCAD在同一进程空间运行时,运行速度要比其他二次开发语言应用程序快,运行也更加稳定。

2矿山测量对AutoCAD二次开发的需求

2.1矿山测量的现状

矿山测量人员在井下进行外业工作时,由于受到井下不利環境、条件与人员配置的限制,数字化仪器通用性并不高。使用光学仪器作业往往需要测量大量的基本数据,如角度、距离。在传统测量内业工艺流程中,先要将原始数据进行处理,然后将处理好的数据准确、合理的体现在图纸上或计算机上。在绘图过程中,基本会重复相同的工作,如绘制巷道、采场平面图:要将测得的同一方位上的支距点(特征点)在不同的比例尺下进行逐一展绘、分别成图,无论是手工绘图还是普通的CAD制图,都是一项重复率极高、效率极低的工作,而且极容易随着制图人员的疏漏和疲劳产生误差,甚至是错误。

通过以上对矿山测量内外业工作的描述可见,矿山测量的硬件设施难以有实质性的提升,但是内业处理仍有很大的操作空间。如果我们将AutoCAD进行二次开发,将传统数据处理与制图这两项“脱节”的工作有机结合在一起,将会大大提升工作效率和内业精度。

2.2开发方法

二次开发主要方法是把原始的测量数据进行专业分类,将不同种类的数据分别传递给不同的参数(相同种类传递相同参数),再根据测量人员的要求,用相关的公式、方法将参数进行专业性整合,当参数改变时(即不同种类的观测值、观测量),程序仍然按照预定的表达式来执行,通过人机交互,完成绘图,从而实现变量化设计,自动化制图。

2.3程序界面

如图1所示,进入VBA二次开发程序界面之后,在编写代码之前,要根据该程序所需的变量、参数,来确定都要在界面当中添加哪些控件。

2.4代码部分

此处将部分 “图2绘制采场、联络道平面图程序设计”的代码进行注释,对照示意图来进行AutoCAD VBA二次开发的解析:

Private Sub CommandButton7_Click()‘计算罗盘导线点坐标

Dim b2, b3, b4, b5, b6, b7 As Double‘定义过程变量的数据类型

Const pm As Double = 3.141592653‘定义常量

If tt1 = "" Then‘IF条件语句,该text文本框为空倾角为0

tt1 = 0

End If

b1 = tx3 - 7.5‘井下与井上磁方位角差值

b2 = (b1) / 180 * pm‘将角度进行弧度化

图1 绘制采场、联络道平面图程序设计

b3 = tx4 * (Cos(tt1 / 180 * pm))‘计算罗盘导线长度

b4 = tx1

b6 = b3 * Sin(b2)

b7 = b3 * Cos(b2)

f1 = Val(CInt(Right(Fix((b4 + b6) * 10000), 1) / 10)) / 1000 + Val(Left(Fix((b4 + b6) * 10000), 7)) / 1000‘计算未知点坐标

f2 = Val(CInt(Right(Fix((b5 + b7) * 10000), 1) / 10)) / 1000 + Val(Left(Fix((b5 + b7) * 10000), 7)) / 1000

tx5 = f1‘将已求出的坐标值体现在文本框中

End Sub

Private Sub CommandButton8_Click()‘展罗盘导线点

Dim lpp, lpdx As AcadPoint

Dim lpposition(0 To 2) As Double

Dim lpd(0 To 2) As Double

lpposition(0) = Val(tx1)‘三维坐标赋值

lpposition(1) = Val(tx2)

lpposition(2) = 0

Set lpp = ThisDrawing.ModelSpace.AddPoint(lpposition) ‘将点展入到AutoCAD中

lpd(0) = Val(tx5)

lpd(1) = Val(tx6)

lpd(2) = 0

Set lpdx = ThisDrawing.ModelSpace.AddPoint(lpd)

End Sub

Private Sub CommandButton15_Click() ‘计算支距点坐标

Dim lpzhu, lpz, lpy, zdz, zdy, l6, r6, l61, r61, lpzy, lpzx, lpry, lprx, msg As Double

If tt1 <> 0 Then

msg = MsgBox("注意,倾角不为0时主尺没有铺在地面,请认真检查数据,谢谢", 0 + vbInformation)

End If

Const hlp As Double = 3.141592653

lpzhu = tx7 ‘将测得的主尺位置、对应的左右支距赋值

lpz = tx8

If lpzhu = 0 Then

zdz = tx1

zdy = tx2

End If

If lpzhu <> 0 Then‘计算主尺不为0时,主尺点坐标

zdz = tx1 + lpzhu * Sin(b1 / 180 * hlp)

End If

lpzy = lpz * Sin(l61)‘計算坐标增量与支距点坐标

lpzx = lpz * Cos(l61)

If tx8 = "" Or tx8 = 0 Then

tx10 = ""

If tx9 = "" Or tx9 = 0 Then

tx12 = ""

End If

End Sub

Private Sub CommandButton9_Click()‘展左支距点

Dim lpzz(0 To 2) As Double

Dim lpointzuozhi As AcadPoint

lpzz(0) = Val(tx10)

lpzz(1) = Val(tx11)

lpzz(2) = 0

Set lpointzuozhi = ThisDrawing.ModelSpace.AddPoint(lpzz)

End Sub

3结束语

使用VBA对AutoCAD进行二次开发,是今后提高矿山测量人员绘图效率、精度,减少工作量的重要手段,它很好的补充了AutoCAD的制图功能。到目前为止,此种方法在矿山测量领域应用并不广泛,仍有很大空间,是值得投入与研究的。希望能有更多的工程技术人员加入到二次开发的行列中,让AutoCAD软件在使用上更加得心应手,为矿山数字化做出自己的贡献。

参考文献:

[1] 王围,李波,邹元平.AutoCAD二次开发中的若干问题探析[J].电脑知识与技术,2012,08 (1):163-165.

[2] 张帆,郑立楷,王华杰.AutoCAD VBA开发精彩实例教程[M].北京:清华大学出版社,2004.

[3] 李琳. 基于VBA的AutoCAD二次开发[J].硅谷,2011,(18):191.

[4] 孙运平,高玉春. AutoCAD二次开发及应用研究[J].商场现代化,2012,(679):102.

作者简介:王鹏霖,1988年生,大学本科,籍贯:山东省五莲县,测量助理工程师,主要从事矿山测量工作

猜你喜欢
矿山测量二次开发
例谈对高中数学教材中习题的二次开发
浅谈CAD软件二次开发的方法及工具
例谈课本习题的“二次开发”
GPS—RTK技术在矿山测量中的应用探讨
金矿测绘技术总结研究