论文部分内容阅读
【摘要】探讨了在Autocad的二次开发中,采用面向对象的VBA语言实现参数化标准零件绘图的原理,并通过实例绘制开槽圆柱头螺钉,说明VBA在Autocad中实现参数化标准零件绘图的重要性。
【关键词】VBA;参数化设计;二次开发;标准零件
0.前言
Autocad 在计算机辅助绘图和辅助设计领域中占有非常重要的地位,它具有开放式的体系结构,允许用户和开发者对其进行扩充和修改,以最大限度的满足用户的各种需求,而Autocad所支持的高级语言则成为最强有力的扩充手段。在Autocad二次开发的进程中主要用到Visual Lisp 语言和VBA 语言,而使用Visual Lisp语言绘图,代码量比较大,查找错误不方便,VBA 语言代码量相对较少, 查找错误很方便,语法简单、功能强大、易于掌握的特点,突出特点是它的可视化开发环境,具有强大的窗体创建功能,用户能够方便的进行可视化操作,人机界面设计简单美观[1]。因此在二次开发工作中,程序设计主要运用VBA语言进行图形绘制。
1.参数化绘图程序设计思想及设计过程
在机械设计绘图中,需要大量用到标准件,如果将相同的零件不停的重复绘制,会降低制图效率,因此块的产生很好的解决了这个问题。将不同的标准零件储存为块的形式,需要时直接调用块就可得到相应的标准件图。然而相同的标准件根据国家标准,具有不同的型号,如果将每个型号的零件图都储存为块的形式,会占用大量的系统资源,给绘图带来不便,因此引入参数化设计的标准零件图绘制。
本文利用VBA实现参数化标准零件开槽圆柱头螺钉的绘图设计,设计的主要流程如图1所示:
图1绘图流程图
通过查询机械设计手册,根据国标GB/T-65-2000可知,开槽圆柱头螺纹规格以及参数如表1所示[2]:
表1
1.1用户界面设计
在Autocad 中使用内嵌的VBA在Autocad应用程序环境中,通过下列的方法实现Autocad到VBA之间的切换:单击“工具”菜单“宏”子菜单中的“VBA 编辑器”命令进入编辑状态。
这部分主要包括两个内容,第一,用户窗体的创建;第二,程序中数据库的调用[1]。
首先,用户窗体的创建。参数的设置,需要根据绘制具体的图形分析,根据表1分析可以设计绘制螺纹的窗体如图2所示:
图2
当用户点击打开文件,弹出对话框,提示用户,输入需要的螺纹规格的型号,输入完毕,在窗体右侧的文本框中显示各个参数的对应值,这时通过确定的参数值,用户输入合理的l值,单击确定,此时一种规格的标准件创建完毕。
其次,数据库的调用。打开文件即是一个数据库调用过程,这是实现绘制图形的关键所在。 通过标准数据库创建与参数输入连接,可以把标准参数调用到程序绘图中。通过保存文件也可以添加没有的参数到数据库中,这样可以扩展数据库的记录范围。
VBA 作为一种内嵌式的开发工具,具备了完善的数据访问和管理功能,因此可以通过DAO(数据访问对象)、数据控件对Access数据库或其它的FoxPro、Betrieve等外部数据库进行访问和管理,还可以使用SQL 语句对数据库进行检索[2]。在螺钉的绘制中建立数据库“螺钉.mdb”表的方法如下:
Public luoding As String
Dim adoConAs Connection
Dim adoRs As Recordset
Dim entry As AcadLineType
Dim found As Boolean
‘打开数据库查询所需数据
……
Dim i As Integer
i = InputBox("请输入公称直径d的代号:M3-0;M4-1;M5-2;M6-3;M8-4;M10-5", "输入代号")
If i = -1 Then Exit Sub
If i <= adoRs.RecordCount - 1 Then
adoRs.MoveFirst
adoRs.Move i
End If
ExchangeData False
End Sub
……
‘保存文件,记录数据库中没有的数据
On Error GoTo errHandle
With adoRs
.AddNew
.Fields("d") = txtd.Text
.Fields("n") = txtn.Text
.Fields("t") = txtt.Text
.Fields("dk") = txtdk.Text
.Fields("k") = txtk.Text
.Fields("b") = txtb.Text
.Update
End With
Exit Sub
……
通过创建数据库,可以调用出相应型号的标准件图,将不同的标准件组合在一起就可以得到需要的组合零件图。
1.2用VBA编写程序绘图
用VBA语言绘制零件图时,需要确定画图的基准位,即定位基点,并以此作为参考点绘制整个零件图。通常基点的输入通过以下命令实现,即
Dim ptbase As Variant
ptbase = ThisDrawing.Utility.GetPoint(, "输入起点:")
绘制图形需要用到函数调用,可以在模块中建立绘制图形的函数。在绘制标准件图时,需要根据参考基点来定义标准件不同部位点的坐标。当标准件呈现对称结构时,可以只绘制出对称轴的一边,另一边通过命令mirror进行镜像实现,这样可以很快地画出对称部分的图形。在二维中,定义镜像需要的两个坐标端点如下所示:Dim mirrorObj1(0 To 2) As Double,Dim mirrorObj2(0 To 2) As Double。
根据开槽圆柱头螺钉的特点,画图时需要分成两种情况:无螺纹部分杆径约等于中径, 无螺纹部分杆径等于螺纹大径,因此在模块中需要定义两个绘图函数,讨论两种情况,即l>b和l Public Sub DrawLD1(d1 As Double, n1 As Double, t1 As Double, dk1 As Double, k1 As Double, b1 As Double, l1 As Double)
……
Public Sub DrawLD2(d2 As Double, n2 As Double, t2 As Double, dk2 As Double, k2 As Double, b2 As Double, l2 As Double)
……
在螺钉的主函数中,通过Call DrawLD1, Call DrawLD2语句调用在模块中定义的螺钉函数绘图。
1.3运行程序及输出结果
运行程序,在弹出的对话框中输入需要螺钉规格的代号,以及在文本框中输入合理的参数值l,点击确定按扭,回到Autocad界面,用鼠标点击绘图基点,此时一个标准件就绘制成功。根据实际情况,可能出现两种绘图效果:
当l>b时,运行结果如图3所示
图3
当l 图4
根据此思想可以绘制其他的标准件,用到的关键技术是标准件数据库的创建与参数输入的连接。
2.结论
利用AutocadVBA 技术开发出的标准件的参数化绘制程序, 以实现参数化标准零件的绘图。在绘制大型零件图、装配图时利用参数化设计思想可以简化制图的复杂性, 这样极大地缩短了设计周期,提高了设计效率,改善了设计质量,减少人工查表和计算的工作量,也减少人为的错误,用户可以按照自己的设计需求调用零件图。因此在Autocad中利用VBA以及结合数据库创建进行参数化标准件的绘图开发,仍然在机械领域中占有非常重要的地位。通过这样的方法同样可以开发其他产品的设计与绘图系统,以满足设计着的不同需求。■
【参考文献】
[1]任玉伟.基于VBA 的AutoCAD 二次开发[J].科技情报开发与经济,2008,18(33):140-141.
[2]吴海锋.AutoCAD VBA 在工程制图中的应用[J].交通科技与经济,2009,2:36-38.
【关键词】VBA;参数化设计;二次开发;标准零件
0.前言
Autocad 在计算机辅助绘图和辅助设计领域中占有非常重要的地位,它具有开放式的体系结构,允许用户和开发者对其进行扩充和修改,以最大限度的满足用户的各种需求,而Autocad所支持的高级语言则成为最强有力的扩充手段。在Autocad二次开发的进程中主要用到Visual Lisp 语言和VBA 语言,而使用Visual Lisp语言绘图,代码量比较大,查找错误不方便,VBA 语言代码量相对较少, 查找错误很方便,语法简单、功能强大、易于掌握的特点,突出特点是它的可视化开发环境,具有强大的窗体创建功能,用户能够方便的进行可视化操作,人机界面设计简单美观[1]。因此在二次开发工作中,程序设计主要运用VBA语言进行图形绘制。
1.参数化绘图程序设计思想及设计过程
在机械设计绘图中,需要大量用到标准件,如果将相同的零件不停的重复绘制,会降低制图效率,因此块的产生很好的解决了这个问题。将不同的标准零件储存为块的形式,需要时直接调用块就可得到相应的标准件图。然而相同的标准件根据国家标准,具有不同的型号,如果将每个型号的零件图都储存为块的形式,会占用大量的系统资源,给绘图带来不便,因此引入参数化设计的标准零件图绘制。
本文利用VBA实现参数化标准零件开槽圆柱头螺钉的绘图设计,设计的主要流程如图1所示:
图1绘图流程图
通过查询机械设计手册,根据国标GB/T-65-2000可知,开槽圆柱头螺纹规格以及参数如表1所示[2]:
表1
1.1用户界面设计
在Autocad 中使用内嵌的VBA在Autocad应用程序环境中,通过下列的方法实现Autocad到VBA之间的切换:单击“工具”菜单“宏”子菜单中的“VBA 编辑器”命令进入编辑状态。
这部分主要包括两个内容,第一,用户窗体的创建;第二,程序中数据库的调用[1]。
首先,用户窗体的创建。参数的设置,需要根据绘制具体的图形分析,根据表1分析可以设计绘制螺纹的窗体如图2所示:
图2
当用户点击打开文件,弹出对话框,提示用户,输入需要的螺纹规格的型号,输入完毕,在窗体右侧的文本框中显示各个参数的对应值,这时通过确定的参数值,用户输入合理的l值,单击确定,此时一种规格的标准件创建完毕。
其次,数据库的调用。打开文件即是一个数据库调用过程,这是实现绘制图形的关键所在。 通过标准数据库创建与参数输入连接,可以把标准参数调用到程序绘图中。通过保存文件也可以添加没有的参数到数据库中,这样可以扩展数据库的记录范围。
VBA 作为一种内嵌式的开发工具,具备了完善的数据访问和管理功能,因此可以通过DAO(数据访问对象)、数据控件对Access数据库或其它的FoxPro、Betrieve等外部数据库进行访问和管理,还可以使用SQL 语句对数据库进行检索[2]。在螺钉的绘制中建立数据库“螺钉.mdb”表的方法如下:
Public luoding As String
Dim adoConAs Connection
Dim adoRs As Recordset
Dim entry As AcadLineType
Dim found As Boolean
‘打开数据库查询所需数据
……
Dim i As Integer
i = InputBox("请输入公称直径d的代号:M3-0;M4-1;M5-2;M6-3;M8-4;M10-5", "输入代号")
If i = -1 Then Exit Sub
If i <= adoRs.RecordCount - 1 Then
adoRs.MoveFirst
adoRs.Move i
End If
ExchangeData False
End Sub
……
‘保存文件,记录数据库中没有的数据
On Error GoTo errHandle
With adoRs
.AddNew
.Fields("d") = txtd.Text
.Fields("n") = txtn.Text
.Fields("t") = txtt.Text
.Fields("dk") = txtdk.Text
.Fields("k") = txtk.Text
.Fields("b") = txtb.Text
.Update
End With
Exit Sub
……
通过创建数据库,可以调用出相应型号的标准件图,将不同的标准件组合在一起就可以得到需要的组合零件图。
1.2用VBA编写程序绘图
用VBA语言绘制零件图时,需要确定画图的基准位,即定位基点,并以此作为参考点绘制整个零件图。通常基点的输入通过以下命令实现,即
Dim ptbase As Variant
ptbase = ThisDrawing.Utility.GetPoint(, "输入起点:")
绘制图形需要用到函数调用,可以在模块中建立绘制图形的函数。在绘制标准件图时,需要根据参考基点来定义标准件不同部位点的坐标。当标准件呈现对称结构时,可以只绘制出对称轴的一边,另一边通过命令mirror进行镜像实现,这样可以很快地画出对称部分的图形。在二维中,定义镜像需要的两个坐标端点如下所示:Dim mirrorObj1(0 To 2) As Double,Dim mirrorObj2(0 To 2) As Double。
根据开槽圆柱头螺钉的特点,画图时需要分成两种情况:无螺纹部分杆径约等于中径, 无螺纹部分杆径等于螺纹大径,因此在模块中需要定义两个绘图函数,讨论两种情况,即l>b和l Public Sub DrawLD1(d1 As Double, n1 As Double, t1 As Double, dk1 As Double, k1 As Double, b1 As Double, l1 As Double)
……
Public Sub DrawLD2(d2 As Double, n2 As Double, t2 As Double, dk2 As Double, k2 As Double, b2 As Double, l2 As Double)
……
在螺钉的主函数中,通过Call DrawLD1, Call DrawLD2语句调用在模块中定义的螺钉函数绘图。
1.3运行程序及输出结果
运行程序,在弹出的对话框中输入需要螺钉规格的代号,以及在文本框中输入合理的参数值l,点击确定按扭,回到Autocad界面,用鼠标点击绘图基点,此时一个标准件就绘制成功。根据实际情况,可能出现两种绘图效果:
当l>b时,运行结果如图3所示
图3
当l 图4
根据此思想可以绘制其他的标准件,用到的关键技术是标准件数据库的创建与参数输入的连接。
2.结论
利用AutocadVBA 技术开发出的标准件的参数化绘制程序, 以实现参数化标准零件的绘图。在绘制大型零件图、装配图时利用参数化设计思想可以简化制图的复杂性, 这样极大地缩短了设计周期,提高了设计效率,改善了设计质量,减少人工查表和计算的工作量,也减少人为的错误,用户可以按照自己的设计需求调用零件图。因此在Autocad中利用VBA以及结合数据库创建进行参数化标准件的绘图开发,仍然在机械领域中占有非常重要的地位。通过这样的方法同样可以开发其他产品的设计与绘图系统,以满足设计着的不同需求。■
【参考文献】
[1]任玉伟.基于VBA 的AutoCAD 二次开发[J].科技情报开发与经济,2008,18(33):140-141.
[2]吴海锋.AutoCAD VBA 在工程制图中的应用[J].交通科技与经济,2009,2:36-38.