3 VBA二次开发实例
在学习了AutoCAD VBA基础知识后,接下来介绍一个简单实例。通过该实例的学习,我们可以初步掌握开发VBA应用程序的一般过程。
训练1 应用VBA编写输入起点和终点坐标绘制直线的参数化程序。
应用VBA程序绘制直线的方法为:AddLine(StartPoint, EndPoint),其中StartPoint, EndPoint为起点、终点坐标,必须为3元素列表(即数组)。
操作步骤如下:
(1) 打开VBA管理器,单击“新建”按钮,添加名称为“ACADProject”、位置为“Global2”的新工程,如图12所示。选中该工程后,再单击“另存为”将之保存于D盘,名称为“DrawLine.dvb”。
图12 VBA管理器
(2) 打开VBA IDE,在“插入”菜单中选择“用户窗体”插入新窗体。
(3) 打开“工具箱”(如图13所示),点击“框架”按钮,在窗体中建立两个框架,分别用于起点和终点坐标的输入;再点击“标签”和“文字框”按钮,在两个框架中分别建立用于输入起点和终点坐标的标签和对话框;再点击“命令按钮”按钮,在用户窗体中建立“确定”和“结束”按钮。
图13 “用户窗体”编辑窗口
(4) 打开“属性窗口”(如图14所示),在“用户窗体”中依次点击控件,在其“属性窗口”中设置相应属性。按表1所示设置窗体及控件的相应属性。
图14 “属性”设置窗口
表1 绘制直线的窗体及控件属性设置
窗体及控件名称
|
属性
|
设置值
|
作用
|
窗体
|
Name
|
frmLine
|
|
Caption
|
参数化绘直线练习
|
|
框架
|
Name
|
fraSP,fraEP
|
|
Caption
|
起点坐标,终点坐标
|
|
标签
|
Name
|
lblXS,lblYS,lblZS,
lblXE,lblYE,lblZE
|
|
Caption
|
x_start,y_start,z_start,
x_end,y_end,z_end
|
提示输入直线起点、终点坐标值
|
文本框
|
Name
|
txtXS,txtYS,txtZS,
txtXE,txtYE,txtZE
|
|
Text
|
10,10,0,40,40,40
|
输入直线起点、终点坐标值
|
命令按钮
|
Name
|
cmdOK_Click,cmdEnd_Click
|
|
Caption
|
确定,结束
|
点击按钮
|
(5) 双击“确定”按钮打开“代码窗口”,在行Private Sub cmdOK_Click( )和行End Sub之间输入以下代码:
ThisDrawing.Application.Documents.Add ’ 打开新图形
Dim StartPoint(0 To 2) As Double ’ 定义起点坐标
Dim EndPoint(0 To 2) As Double ’ 定义终点坐标
StartPoint(0) = txtXS ’ 提取起点x坐标
StartPoint(1) = txtYS ’ 提取起点y坐标
StartPoint(2) = txtZS ’ 提取起点z坐标
EndPoint(0) = txtXE ’ 提取终点x坐标
EndPoint(1) = txtYE ’ 提取终点y坐标
EndPoint(2) = txtZE ’ 提取终点z坐标
Dim LineObj As AcadLine ’ 定义Line对象
’ 设置Line对象
Set LineObj = ThisDrawing.ModelSpace.AddLine (StartPoint, EndPoint)
ThisDrawing.SaveAs("D:\Line_Ex.dwg") ’ 保存图形
(6) 双击“结束”按钮打开“代码窗口”,在行Private Sub cmdEnd_Click( )和行End Sub之间输入代码“End”,用于结束程序。
步骤(5)、(6)输入的代码如图15所示。
(7) 从VBA IDE的“运行”菜单中选择“运行子程序/用户窗体”选项或按F5键来运行程序。
(8) 当程序运行完时,AutoCAD应用程序将置于最前。此时可在图形中看到直线,且图形的文件名称为Line_Ex.dwg。
图15 实例的代码窗口
注:VBA中的出错处理方法