本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注!
不仅是CATIA软件具有VBA二次开发接口,很多机械设计软件也都具有VBA二次开发接口。本期,就来为大家介绍一下Auto CAD软件的VBA二次开发,使用VisualStudio软件编写一个能够在Auto CAD软件中绘制圆的软件。
Auto CAD软件版本:Auto CAD 2018。
Visual Studio软件版本:Microsoft Visual Studio Ultimate 2010。
一、项目创建
在Microsoft Visual Studio Ultimate 2010软件中创建“Windows窗口应用程序”模板项目,项目名称为Auto CAD画图工具。
二、Auto CAD对象库引用
在添加引用对话框中选择“COM”标签,然后在其下点选“AutoCAD 2018 Type Library”对象组件,将其引用到项目中。
三、软件窗体布置与属性设置
1.设置Form1窗体属性。
Form1窗体属性 | ||
属性 | 设置参数值 | 说明 |
FormBorderStyle | FixedSingle | 设置窗体的边框样式为固定单边框。 |
MaximizeBox | False | 设置在窗体的标题栏中不显示 “最大化”按钮。 |
MinimizeBox | False | 设置在窗体的标题栏中不显示 “最小化”按钮。 |
Text | 画图工具 | 设置窗体标题为“画图工具”。 |
2.在Form1窗体中添加两个Label控件、1个TextBox控件、2个Button控件,添加完成后分别设置控件属性。
Label1控件属性 | ||
属性 | 设置参数值 | 说明 |
(Name) | CircleRadiusLabel | 设置控件的名称为“CircleRadiusLabel”。 |
Text | 圆半径设定: | 设置控件显示内容为“圆半径设定:”。 |
Label2控件属性 | ||
(Name) | RadiusUnitLabel | 设置控件的名称为“RadiusUnitLabel”。 |
Text | mm | 设置控件显示内容为“mm”。 |
TextBox控件属性 | ||
(Name) | CircleRadiusTextBox | 设置控件的名称为“CircleRadiusTextBox”。 |
Text | 50.0 | 设置控件显示内容为“50.0”。 |
TextAlign | Center | 设置控件中文本的对齐方式为中心对齐。 |
Button1控件属性 | ||
(Name) | CmdCreateDrawing | 设置控件的名称为“CmdCreateDrawing”。 |
Text | 新建图纸 | 设置控件显示内容为“新建图纸”。 |
Button2控件属性 | ||
(Name) | CmdCreateCircle | 设置控件的名称为“CmdCreateCircle”。 |
Text | 创建圆 | 设置控件显示内容为“创建圆”。 |
3.控件添加与属性设置完成后,将各个控件摆放至合适位置,然后拖动Form1窗体至合适大小。
四、Auto CAD软件连接
1.双击Form1窗体控件,在代码编辑区的最前面添加Auto CAD对象库引用代码。
2.在Form1窗口的Load事件中编写代码,实现画图工具软件与Auto CAD软件的控制连接。
五、新建图纸功能实现
在“新建图纸”按钮的Click事件下编写新建图纸功能代码,并在编写完成后对功能进行运行测试。
六、画圆功能实现
在“创建圆”按钮的Click事件下编写绘制圆的功能代码,本次绘制使用的是圆心与半径约束创建圆的方法。
软件完整代码如下所示。
Imports AutoCAD
Public Class Form1
Dim AcadApp As AcadApplication
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Try
'获取AutoCAD软件COM对象
AcadApp = GetObject(, "AutoCAD.Application")
Catch ex As Exception
'未打开AutoCAD软件时提示打开软件
MsgBox("请先打开AutoCAD软件。")
End
End Try
End Sub
Private Sub CmdCreateDrawing_Click(sender As System.Object, e As System.EventArgs) Handles CmdCreateDrawing.Click
'创建新图纸
AcadApp.Documents.Add()
End Sub
Private Sub CmdCreateCircle_Click(sender As System.Object, e As System.EventArgs) Handles CmdCreateCircle.Click
Dim CircleObj As AcadCircle
Dim CenterPoint(0 To 2) As Double
Dim Radius As Double
'定义圆心坐标数据
CenterPoint(0) = 100.0 : CenterPoint(1) = 100.0 : CenterPoint(2) = 0.0
'获取圆半径数据
Radius = Val(CircleRadiusTextBox.Text)
Try
'创建圆
CircleObj = AcadApp.ActiveDocument.ModelSpace.AddCircle(CenterPoint, Radius)
'显示整个图形
AcadApp.ZoomAll()
'更新视图
CircleObj.Update()
Catch ex As Exception
MsgBox("请先新建一张图纸或打开一张图纸。")
End Try
End Sub
End Class
七、软件运行测试
1.对编写的代码进行测试,在没有打开Auto CAD软件的情况下弹出提示语句“请先打开AutoCAD软件”,若是Auto CAD软件已经打开,软件则可正常启动。
2.Auto CAD软件启动后,点击画图工具中的“创建圆”按钮,若是Auto CAD软件还未添加图纸文件,此时会弹出对话框提示“请先新建一张图纸或打开一张图纸”。
3.点击画图工具中的“新建图纸”按钮,在Auto CAD软件中新建一张图纸,然后再次点击“创建圆”按钮,可以看到在Auto CAD软件中创建了一个圆心位于(100,100)位置处,半径为50mm的圆。
4.改变圆半径设定值,再次点击“创建圆”按钮,将在相同位置处绘制出设定半径值的圆。