二维CAD CAD > CAD技巧
+

AutoCAD VBA二次开发(3)

2011/12/6    作者:未知    来源:网络文摘    阅读:6222

 (2) 打开VBA IDE,在“插入”菜单中选择“用户窗体”插入新窗体。

(3) 打开“工具箱”(如图13所示),点击“框架”按钮,在窗体中建立两个框架,分别用于起点和终点坐标的输入;再点击“标签”和“文字框”按钮,在两个框架中分别建立用于输入起点和终点坐标的标签和对话框;再点击“命令按钮”按钮,在用户窗体中建立“确定”和“结束”按钮。

AutoCAD_VBA二次开发

13  “用户窗体”编辑窗口

 (4) 打开“属性窗口”(如图14所示),在“用户窗体”中依次点击控件,在其“属性窗口”中设置相应属性。按表1所示设置窗体及控件的相应属性。

AutoCAD_VBA二次开发

14  “属性”设置窗口

 

绘制直线的窗体及控件属性设置

窗体及控件名称

属性

设置值

作用

窗体

Name

frmLine

 

Caption

参数化绘直线练习

 

框架

Name

fraSPfraEP

 

Caption

起点坐标,终点坐标

 

标签

Name

lblXSlblYSlblZS

lblXElblYElblZE

 

Caption

x_starty_startz_start

x_endy_endz_end

提示输入直线起点、终点坐标值

文本框

Name

txtXStxtYStxtZS

txtXEtxtYEtxtZE

 

Text

10100404040

输入直线起点、终点坐标值

命令按钮

Name

cmdOK_ClickcmdEnd_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

AutoCAD_VBA二次开发

15  实例的代码窗口

 注:VBA中的出错处理方法

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为标记)。此语句捕获错误但不会显示错误信息或者终止程序,而是跳到代码中的特定位置。然后代码可以使用适当的方式来响应错误。例如,可以扩充上一个样例,以显示包含锁定图层上每个图元句柄的消息。

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

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

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

AutoCAD_VBA二次开发

16  绘制圆弧的窗体

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

窗体及控件名称

属性

设置值

作用

窗体

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

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

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

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

AutoCAD_VBA二次开发                                                    (1)

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

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

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

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

AutoCAD_VBA二次开发

17  直角坐标系下的渐开线

  • 相关文章
  • 热门文章
免责申明:天天CAD教程网旨在相互学习交流,是一个完全免费的网站,部分原创作品,欢迎转载,部分内容来自互联网,如果侵犯了您的权利请尽快通知我们!邮箱:qm198794@gmail.com天天CAD教程网湘ICP备17006802号
【回到顶部】