赵祥岍 于 洋 陈定超
(徐州工程学院土木工程学院,江苏 徐州 221000)
隧道工程是一种修建在地下、水下或者山体中的大型工程,广泛应用于交通、运输、给排水等领域。隧道工程在修建过程中需要绘制大量隧道工程图,目前,这些图件均由工程技术人员通过AutoCAD进行手工绘制,效率低下。而利用VB编辑程序语言控制AutoCAD中的绘图命令,可实现自动绘制隧道图,提高绘图效率,缩减工程时间。
AutoCAD本身所具有的ActiveX Automation技术使用户能够从AutoCAD的内部或外部以编程方式来操作AutoCAD。而用VB实现AutoCAD自动绘图,采用的就是这项技术。通过在VB中引用AutoCAD部件,并编辑一定的程序语言控制ActiveX Automation中的绘图对象,可实现VB与AutoCAD两个软件的连接。
例:连接AutoCAD 2018版本时,方法是在“工程”菜单中选择“引用”,在“引用”对话框中选择“AutoCAD 2018 Type Library”。
由于AutoCAD版本众多,因此有必要设置一种通用接口,以提高软件之间的兼容性。
其中,AutoCAD中的GetObject函数可以访问文件中的ActiveX对象,并且将该对象赋给对象变量。CreateObject函数可以创建并返回一个对ActiveX对象的引用。
而当GetObject或CreateObject函数使用的ProglD没有附加版本号时,可使其独立于版本,实现AutoCAD连接版本的通用化。具体代码如下:
Dim AcadApp As AcadApplication
Dim AcadDoc As AcadDocument
On Error Resume Next
Set acadapp = GetObject(, "autocad.application") ‘获得正在运行的AutoCAD应用程序对象
If Err Then
Err.Clear
Set acadapp = CreateObject("autocad.application") ‘创建一个新的AutoCAD应用程序对象
If Err Then
MsgBox ("不能运行AutoCAD,请检查是否安装了AutoCAD")
Exit Sub
End If
End If
acadapp.Visible = True ‘显示AutoCAD应用程序
在绘制隧道图时,需要根据不同情况选择隧道形状类型,主要分为矩形隧道、圆形隧道和马蹄形隧道。由于同类隧道形状具有相似性,且内部各部件尺寸基本成比例,因此,可以针对以上三种类型的隧道,分别作出一种通用隧道图模板,并确定隧道图中的变量个数,即:同一类隧道具有相同的变量个数,变量个数由绘图的需要决定。变量个数要求既能满足隧道图的精度,又不能增加冗杂数据。将隧道图中各部件的尺寸大小用参数合理表示。根据隧道形状和各部件尺寸,分别绘制隧道的俯视图和右视图,并用参数进行标注,形成完整的参数式隧道图模板。根据标注完成的隧道图模板编写绘图命令,并在VB中设置友好的运行界面。用户启动系统后,输入各部件尺寸大小,系统自动将输入的数值替代对应的参数,实现自动绘制隧道图。同类隧道图中输入的参数大小可以不同,但各参数基本成比例。因此,当用户输入不同参数时,只要参数合理,最终自动绘制出的隧道图也是合理的。绘图步骤如图1所示。
在VB中可以通过编辑程序语言控制AutoCAD中的每一个绘图命令,以下为部分绘图命令的代码。
1)绘制直线的命令:
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
startPoint(0) = x1:startPoint(1) = y1
endPoint(0) = x2:endPoint(1) = y2
Set lineObj = AcadApp.ActiveDocument.ModelSpace.AddLine
(startPoint, endPoint)
其中,起始点坐标为(x1,y1),末端点坐标为(x2,y2)。
2)绘制点的命令:
Dim point As Double
Dim centerpoint(0 To 2) As Double
centerpoint(0) = x: centerpoint(1) = y
Set pointobj = AcadApp.ActiveDocument.ModelSpace.AddPoint(centerpoint)
其中,点的坐标为(x,y)。
3)绘制圆的命令:
Dim centerpoint(0 To 2) As Double
Dim radius As Double
centerpoint(0) = x: centerpoint(1) = y
radius = r
Set circleobj= AcadApp.ActiveDocument.ModelSpace.AddCircle(centerpoint, radius)
其中,圆心坐标为(x,y)、半径r。
以矩形隧道为例,分别定义隧道宽度为a,隧道高度为b,锚杆长度为c,管道半径为d,排水沟深度为e。根据a,b,c,d,e五个参数合理表示隧道图中各部件尺寸大小,绘制出完整的参数式隧道模板图。在VB中编写程序语言,并编辑出简洁的系统运行界面,实现一种基于VB的AutoCAD自动绘图技术。例:分别输入300,200,150,10,20时,绘制结果如图2所示。具体的参数比例根据隧道类型和内部结构的形状自行调整,参数比例决定最终绘制图形的准确性和精确度。系统具有在线编辑、维护、修改、扩展功能。当用户有特殊需求,需要修改或者增加新的结构部件时,可在AutoCAD软件界面中直接对原图进行修改并保存,大大降低绘图易错率。
基于VB的AutoCAD自动绘图技术,可以大大降低隧道工程绘图难度,提高绘图效率,降低施工周期。本文以矩形隧道三视图的绘制为例,介绍了该方法的原理、过程和应用,如果能按照本文提供的自动绘图方法进一步扩展其在隧道工程中的应用范围,可有效改进传统的AutoCAD绘图方式,促进隧道工程实践技术的发展。