玩软件 > CAD技巧
+

AutoCAD VBA二次开发(4)

2012-01-15    作者:未知    来源:网络文摘

VBVBA中,使用On Error语句来捕获运行时错误。此语句为系统设置精确的捕获。当错误发生时,此语句会自动转到专门编写的错误处理程序,系统的默认错误处理则被略过。

On Error 语句有三种形式:

(1) On Error Resume Next

(2) On Error GoTo Label

(3) On Error GoTo 0

当希望忽略错误时,可以使用On Error Resume Next语句。此语句捕获错误但是不会显示错误信息或者终止程序,而是移到下一行代码继续执行。例如,如果希望创建子例程来遍历模型空间并修改每个图元的颜色,则在试图对锁定图层上的图元着色时AutoCAD将会抛出错误。这时不需要终止过程,而只需要跳过锁定图层上的图元并继续处理其余的图元。On Error Resume Next语句就可以完成这个过程。

当希望编写明确的处理程序时,可以使用On Error GoTo Flag语句(Flag为标记)。此语句捕获错误但不会显示错误信息或者终止程序,而是跳到代码中的特定位置。然后代码可以使用适当的方式来响应错误。例如,可以扩充上一个样例,以显示包含锁定图层上每个图元句柄的消息。

训练2  应用VBA编写输入圆心、半径、起l角和终止角绘制圆弧的参数化程序。

应用VBA程序绘制样条曲线的方法为:AddArc(Center, Radius, StartAngle, EndAngle),其中,Center为圆心坐标3元素列表,Radius为圆弧半径,StartAngle, EndAngle为圆弧起始、终止角(弧度)。

按训练1的方法和步骤设计参数化绘制圆弧的VBA程序,其步骤依次为:打开VBA IDE、插入用户窗体并设置属性、插入控件并设置属性、编写代码、调试运行程序、保存工程。参数化绘制圆弧的窗体如图16所示,并按表2所示设置窗体及控件的相应属性。

AutoCAD_VBA二次开发

16  绘制圆弧的窗体

2  绘制圆弧的窗体及控件属性设置

窗体及控件名称

属性

设置值

作用

窗体

Name

frmArc

Caption

参数化绘圆弧练习

标签

Name

lblXCenlblYCenlblZCen

lblArcRlblStaAnglblEndAng

lblSAUnitlblEAUnit

Caption

x_CenPointy_CenPointz_CenPoint

ArcRStaAngEndAng

°(角度单位),°

提示输入圆心坐标、半径、角度值及角度单位

文本框

Name

txtXCentxtYCentxtZCen

txtRadiustxtStaAngtxtEndAng

Text

507003020160

输入圆心坐标、圆弧半径及圆弧起始、终止角度值

命令按钮

Name

cmdOK_ClickcmdEnd_Click

Caption

确定,结束

点击按钮

参数化绘制圆弧的主要代码如下:

Private Sub cmdOK_Click( )

  Dim pi As Double

  pi = 4 * Atn(1)  ’ 定义常数π

  ThisDrawing.Application.Documents.Add   ’ 打开新图形

  Dim ArcCenter(0 To 2) As Double   ’ 定义圆弧中心

  Dim ArcRadius As Double         ’ 定义圆弧半径

  Dim StartAngle As Double         ’ 定义圆弧起始角

  Dim EndAngle As Double          ’ 定义圆弧终止角

  ArcCenter(0) = txtXCen.Text       ’ 提取圆弧中心X坐标

  ArcCenter(1) = txtYCen.Text       ’ 提取圆弧中心Y坐标

  ArcCenter(2) = txtZCen.Text       ’ 提取圆弧中心Z坐标

  ArcRadius = txtRadius.Text        ’ 提取"弧半径

  StartAngle = txtStaAng.Text * pi / 180   ’ 提取圆弧起始角并转换为弧度

  EndAngle = txtEndAng.Text * pi / 180   ’ 提取圆弧终止角并转换为弧度

  Dim ArcObj As AcadArc    ’ 定义Arc对象

  ’ 设置Arc对象

  Set ArcObj = ThisDrawing.ModelSpace.AddArc(ArcCenter, ArcRadius, StartAngle, EndAngle)

  ThisDrawing.SaveAs (“D:\Arc_Ex.dwg”)  ’ 保存图形

End Sub

训练3  应用VBA编写输入基圆半径和展角上限绘制渐开线的参数化程序。

渐开线为常用工程曲线,在机m设计基础或机械原理教材中有详细介绍。在VBA中,可采用样条曲线拟合的方法绘制渐开线。

在如图17所示的直角坐标系Oxy中,渐开线上点K的坐标为[7]187

AutoCAD_VBA二次开发                                                    (1)

式中,AutoCAD_VBA二次开发—形成渐开线的基圆半径;

AutoCAD_VBA二次开发—用弧度表示的渐开线上K点对应的展角,且AutoCAD_VBA二次开发

渐开线的切线方向可用其斜率(导数)表示,即

AutoCAD_VBA二次开发 (AutoCAD_VBA二次开发)                                          (2)

AutoCAD_VBA二次开发

17  直角坐标系下的渐开线

应用VBA程序绘制样U曲线的方法为:AddSpline(PointsArray, StartTangent, EndTangent),其中,PointsArray为样条曲线(渐开线)拟合点的3维坐标组成的列表(即数组,必须为3的倍数),StartTangentEndTangent为样条曲线的起点和终点切向向量(必需为3元素列表,切向必需与曲线的走向一致)[8]。起点的切向竖直向上[7]181-183,可取(0, 1, 0);根据式(2)可知终点的切向为AutoCAD_VBA二次开发

可根据精度要求将所绘渐开线的展角上限AutoCAD_VBA二次开发等分为J个区间(程序中取J=10),应用ForNext循环计算拟合点的坐标。首先按下式计算展角:

AutoCAD_VBA二次开发AutoCAD_VBA二次开发 (j=0, 1, 2, , J)                                    (3)

再用式(1)计算点K的坐标(xKj, yKj)

AutoCAD_VBA二次开发

18  绘制渐开线的窗体

绘制渐开线及基圆的窗体如图18所示,程序如下:

Private Sub cmdOK_Click()

  ThisDrawing.Application.Documents.Add

  pi = 4 * Atn(1)                   ’ 定义常数π

  Dim rb As Double                ’ 定义基圆半径

  Dim theta0 As Double             ’ 定义渐开线展角

  Dim InvPoint(0 To 32) As Double    ’ 定义拟合点坐标

  Dim SPtan(0 To 2) As Double       ’ 定义起点切线方向

  Dim EPtan(0 To 2) As Double       ’ 定义终点切线方向

  Dim InvObj As AcadSpline         ’ 定义Spline对象

  rb = txtRb.Text

  theta0 = txtTheta0.Text * pi / 180     ’ 将角度转换为弧度

  delta_theta = theta0 / 10

  For j = 0 To 10

     theta = j * delta_theta

     InvPoint(j * 3) = rb * (Sin(theta) - theta * Cos(theta))

     InvPoint(j * 3 + 1) = rb * (Cos(theta) + theta * Sin(theta))

     InvPoint(j * 3 + 2) = 0

  Next j

  SPtan(0) = 0: SPtan(1) = 1: SPtan(2) = 0

  EPtan(0) = 1: EPtan(1) = 1 / Tan(theta0): EPtan(2) = 0

  ’ 设置Spline对象

  Set InvObj = ThisDrawing.ModelSpace.AddSpline(InvPoint, SPtan, EPtan)

  ’ 绘制基圆

  Dim CirObj As AcadCircle       ’ 定义Circle对象

  Dim CenPoint(0 To 2) As Double  ’ 定义圆心坐标

  CenPoint(0) = 0: CenPoint(1) = 0: CenPoint(2) = 0

  ’ 设置Circle对象

  Set CirObj = ThisDrawing.ModelSpace.AddCircle(CenPoint, rb)

  ThisDrawing.SaveAs (“D:\Draw_Inv.dwg”)

End Sub

参考文献

[1] 宋宪一. 计算机辅助工程绘图[M]. 北京: 机械工业出版社, 2002.

[2] 姜勇. AutoCAD中文版机械制图基础培训教程[M]. 北京: 人民邮电出版社, 2005.

[3] 谢泽学, 吴京霞, 谢婧. AutoCAD2004简明教程[M]. 北京: 科学出版社, 2006.

[4] 刘力, 王冰. 机械制图[M]. 北f: 高等教育出版社, 2000.

[5] 刘小年, 刘振魁. 机械制图[M]. 北京: 高等教育出版社, 2000.

[6] 李凤华. AutoCAD 2002/2000 VBA开发指南[M]. 北京: 清华大学出版社, 2001.

[7] 孙桓, 傅则绍. 机械原理[M]. 4. 北京: 高等教育出版社, 1993.

[8] 车林仙, 何兵. 基于AutoCAD的摆线型转子泵实体参数化造型[J]. 现代制造工程, 2005(8): 94-96.

[1] VBAVisual Basic for Application的缩写。AutoCAD中的VBA是指必须依赖于已有的AutoCAD应用程序才能运行的Visual Basic程序。

[2] 宏是一个可执行的应用子程序,每个VBA工程至少包含一个宏。

[3] IDEIntegrated development environment的缩写,即集成开发环境。

阅读:3652    评论:0
  • 相关文章
  • 热门文章
  • 相关评论
网站地图

免责申明:我要玩起网旨在提供一个相互学习交流的平台,是一个完全免费的网站,部分原创作品,欢迎转载,部分内容来自互联网,如果侵犯了您的权利请尽快通知我们!邮箱:279459762@qq.com Copyright 2018-2021我要玩起网

湘ICP备17006802号-2
【电脑版】  【回到顶部】