VB 在 AutoCAD 二次开发中的应用

2014-02-28 01:32燕必成高永祥
三门峡职业技术学院学报 2014年3期
关键词:轴孔窗体铣刀

燕必成 高永祥

(浙江机电职业技术学院 机械工程学院,杭州 310053)

VB 在 AutoCAD 二次开发中的应用

燕必成高永祥

(浙江机电职业技术学院 机械工程学院,杭州 310053)

介绍了 VisualBasic 语言对 AutoCAD 二次开发的技术基础和重要性,建立了 VB 与 AutoCAD 的联系。 通过齿轮结构参数化三维造型的实例,详细阐述了用 VB6.0 对 AutoCAD 进行二次开发的基本思路、主要步骤和具体方法。

AutoCAD;二次开发;VB;圆柱齿轮

引言

随着计算机技术的快速发展,CAD、CAM 和CAE 等技术在机械制造行业扮演着越来越重要的角色,各种软件层出不穷。 其中 AutoCAD 应用最为广泛的原因是由于它具有开放的体系结构,允许用户和开发者采用高级编程语言对其进行扩充和修改(即二次开发),能最大限度地满足用户的特殊要求。 在机械行业中,对于一些一般性的复杂轮廓曲线,仅仅利用 AutoCAD 本身来绘制是比较困难的,也很难达到 CAE 分析的实际要求。 因此,可通过对AutoCAD 进 行 二次开发来 解 决该问题[1]。

Visual Basic(以下简称 VB)是 Microsoft公司推出的面向对象的可视化编程工具。它作为二次开发工具,具有语法简单、功能强大、调试方便等特点。此外,AutoCAD 自 R14 版本起, 加入了 ActiveX 自动化服务功能, 而 VB又是最为常用的支持ActiveX 技术的开发工具, 以它作为开 发 工具,使AutoCAD 与其他 Windows 程序的数据共享变得非常 容易[2]。

1 连接方法

用 VB 语言进行 AutoCAD 二次开发, 首先要将VB 与 AutoCAD 连接起来,然后再进行程序的编写。

1.1VB 中 AutoCAD 的引用

新建好一个工程,从【工程】下拉菜单里单击【 引 用 】, 在 弹 出 的 窗 口 中 , 将 AutoCAD Type Library 勾选,如图 1 所示。 这样就把 AutoCAD 的对象引用到VB里。

图 1 VB 中 AutoCAD 的引用设置界面

1.2对 象变量的定义[2]

在窗体的 Load 事 件里输入以下代码, 其中Dim AcadApp As AcadApplication 是 用 来 定 义AutoCAD 对象, 其 他 代 码 是用来连接 VB 与 Auto CAD 的。 因此,当运行 VB 时,程序会自动连接到AutoCAD 上,从 而 实 现 在 VB 里 编 程,对 AutoCAD进行控制。

Dim AcadApp As AcadApplication

Private Sub Form_Load()

On Error Resume Next

Set AcadApp=GetObject("AutoCAD.Application")

If Err Then

Err.Clear

SetAcadApp=CreateObject("AutoCAD. Application")

If Err Then

MsgBox("不 能 运 行 AutoCAD,请 检 查 是 否 安装了 AutoCAD")

Exit Sub

End If

End If

AcadApp.Visible=True

AcadApp.WindowState=acMax

End Sub

这里使用了比较复杂的条件语句,目的是确保只启动一次 AutoCAD。

2 应用实例

本例以圆柱齿轮三维模型的建立及加工仿真过程为例, 说明 VB 在 AutoCAD 二次开发中的应用。 本例中所涉及的程序 和 图 形 都 在 VB6.0 和AutoCAD2006 中得以验证。

2.1程 序主界面的 创 建[3-4]

在 VB 对 AutoCAD 的二次开发中,程序的界面至关重要,可以让用户直观地将齿轮的各个参数输入,同时也能给用户提供一些技术帮助。 这里首先创建了一个名为“创建三维齿轮”的窗体,然后在“确定”按钮的 click 事件里创建齿图 2 三维齿轮参数窗体轮程序的控件,见图 2所示。

图2 三维齿轮参数窗体

其中 Function 齿轮和 Function ACos 两个函数在窗体的 Load 事件里。

2.2齿 轮的创建方 法 及过程[2,5]

齿轮的创建,首先创建一个圆柱体(半径就是齿顶圆半径),再创建齿轮的三维轴孔及键槽,然后做布尔减(Bool acSubtraction)运算,得到无齿的 齿轮模型。 再由齿轮的参数计算得出铣刀参数,用旋转的方法创建出铣刀。最后由铣刀和齿轮模型做动画,动画是用布尔减的方法切齿创建,得到完整的三维齿轮。程序的主流程图如图3所示。

图3 程序主流程

2.2.1齿轮模型的创建方法及过程

齿轮模型的创建共分四个步骤:

(1)先用 Addcircle 方法创 建 一个半 径 为齿顶圆半径的圆。

(2)用 Addlight Weight PolyLine 方法创建轴孔及键,参数由窗体上对应的文本框输入。

(3)用 AddRegion 方法创建轴孔及键的面域,然后分别拉伸,其高度为齿宽,拉伸锥角为 0。

(4)将 轴孔和 键 做布尔 加 (Bool acUion),再与第(1)步做的齿轮圆柱体做布尔减运算,得到齿轮模型。 由于篇幅原因,详细程序不再列出。

'创建分度圆,齿顶圆,齿根圆,轴孔

Dim circler1 As AcadCircle

Dim circlera1 As AcadCircle

Dim circlerf As AcadCircle

Dim circlerd As AcadCircle

Dim centerpoints(0 To 2)As Double

'将轴孔和键 3d 做并集

轴孔.Boolean acUnion,键 3d

'将轴孔和齿轮圆柱体做差集

圆柱体.Boolean acSubtraction, 轴孔

2.2.2铣刀模型创建方法及过程

齿轮铣刀是由一个回转面旋转形成的铣刀盘模型,利用布尔减运算切出刀齿。 用齿轮铣刀铣齿时,铣刀的各参数应与齿轮的各参数有相配合,这样才能保证加工出来的齿轮是符合要求的。因此,在设计铣刀时要根据齿轮的各参数来确定铣刀。具体创建方法如下:

(1)铣刀回转面创建

铣刀回转面的数学模型如图4, 先创建右半部分,再镜像得到左半部分。 各个点之间的曲线创建思路如下:

图4 铣刀回转面的模型

①创建右半部分曲线: 第 0、1、2 点用 Addlight Weight PolyLine 方法创建轻便多义线, 曲线上第0 点为齿根圆上点,第 2 点为齿轮圆上点,第 1 点为介于 0 点与 2 点之间的点,0、1、2 点构成齿轮根部的过渡曲线,使弯曲度由指定第一点凸度为 0.14 实现;第 2、3、4 点 ,用 Addspline 方 法创建样条曲 线,其中第 3点为齿轮分度圆上点,第 4点为齿顶圆上的点;第 4、5、6 用 Weight PolyLine 方法创建轻便多义线,第 5、6 由铣刀本身确定,无具体要求。

②用 mirror 方法镜像右半部分曲线,得到左半部分曲线,镜像轴为Y轴。

(2)铣刀盘三维实体的创建

①将第(1)步作好的曲线创建为面域;

②用 Addrevoledsolid 方 法 将 第①步 作 好的 面域进行面域旋转, 角度为 6.29 弧度, 旋转轴为 XY平面内平行于直线 5-6 的一条直线。

(3)铣刀成形

先 用 Addbox 方 法 创 建 一 个 长 方 体 , 再 用ArrayOolar方法将其圆形阵列,数量为铣刀齿数,然后把阵列得到的立方体与铣刀盘做布尔减得到有齿的铣刀。

2.2.3动 画切齿的方 法 及过程[2,4-6]

由齿轮模型形成齿轮,是由铣刀的旋转、铣刀与齿轮模型的移动,作布尔减模拟动画得到的。 实际上,由于齿轮模型与铣刀相对运动时,不可能做成完全连续的,故在做布尔减运算时还要一个专门与它作布尔减的铣刀模型(由铣刀面域拉伸而成),为使动画逼真,将铣刀模型隐藏。

(1)用 AddExtrudedsolid 方法将创建旋转铣刀的面域拉伸,高度为齿宽,锥角为 0 度。

(2)用 Delete 方法将除齿轮,铣刀,铣刀拉伸的实体外的实体删除。

(3)用 Do…Loop 做一个循环,在循环体内用move 方法让铣刀沿 z轴上下移动, 距离为齿宽,同时用 Rotate3d 方法饶自身轴旋转一定角度,同样用Rotate 方法将齿轮旋转,角度为 360/齿数 *3.14/180弧度,铣刀自身复制,齿轮模型与面域拉伸做布尔减运算。具体程序如下:

'定义铣刀拉伸,做动画差集用

Dim 铣刀拉伸 As Acad3DSolid

Set铣刀拉伸=AcadApp.ActiveDocument.ModelSpace._

AddExtrudedSolid(铣刀面域(0),height,taperAngle)

axisPt(0) = 铣刀拉伸.Centroid(0)

axisPt(1) = 铣刀拉伸.Centroid(1)

axisPt(2) =height/2

铣刀拉伸.Move 铣刀拉伸.Centroid,axisPt

铣刀拉伸.Visible=False'隐藏了铣刀拉伸

axisPt(0) = 铣刀 3d.Centroid(0) +10

axisPt(1) = 铣刀 3d.Centroid(1)

axisPt(2) = 铣刀 3d.Centroid(2)

point1(0) = 铣刀 3d.Centroid(0)

point1(1) = 铣刀 3d.Centroid(1)

point1(2) = 铣刀 3d.Centroid(2) +height

铣刀 3d.Move 铣刀 3d.Centroid,point1

'删除铣刀,铣刀拉伸和齿轮以外的实体

Dim entry As AcadEntity

ForEachentryInAcadApp.ActiveDocument. ModelSpace

If entry.ObjectID 〈> 铣 刀 3d.ObjectID And entry. ObjectID 〈> _

圆柱体.ObjectID And entry.ObjectID 〈> 铣刀拉伸._

ObjectID Then entry.Delete End If Next

'定义动画

Dim 铣刀复制 As Acad3DSolid

Dim k

i1=0

Dim 铣刀 3dz 坐标 AsDouble

铣刀 3dz 坐标 = 铣刀 3d.Centroid(2)

Dim point22(0 To2) AsDouble

point22(0) = 铣刀 3d.Centroid(0)

point22(1) = 铣 刀 3d.Centroid(1) -8* (rf1-rb1)

point22(2) = 铣刀 3d.Centroid(2)

'由循环做铣刀移动

Do Until i1 > 360

For k= 铣 刀 3dz 坐 标 To 铣 刀 3dz 坐 标 -heightStep-_height/3

point1(2) =k

铣刀 3d.Move 铣刀 3d.Centroid,point1铣刀 3d.Update

axisPt(2) = 铣刀 3d.Centroid(2)

'铣刀旋转

铣刀 3d.Rotate3D 铣刀 3d.Centroid,axisPt,_ 360/30*3.14159/180

铣刀 3d.Update

Next k

铣刀 3d.Move 铣刀 3d.Centroid,point22

Set铣刀复制 = 铣刀拉伸.Copy

圆柱体.Boolean acSubtraction,铣刀复制圆柱体.Update

point1(2) =point1(2) +height

铣刀 3d.Move 铣刀 3d.Centroid,point1

铣刀 3d.Update

Dim CenterPoint(0 To 2) As Double

CenterPoint (0) =0:CenterPoint (1) =0: CenterPoint(2) =0

圆柱体.Rotate CenterPoint,-360/z1*3.14159/ 180

'齿轮毛坯旋转

圆柱体.Update

i1=360/z1+i1

Loop

铣 刀 3d.Move铣 刀 3d.Centroid,point22 程序执行过程中产生的动画图如图 5所示,执行的最后结果如图6所示。

图5 加工动画

图6 仿真加工的结果

3 结束语

本文利用 VB 对 AutoCAD 进行二次开发,通过一实例说明了进行二次开发的理论和方法,解决了具有一般性复杂轮廓曲线的几何造型问题。VB是Windows 下一个优秀的开发工具, 采用 ActiveX 技术,在 Windows 多任务环境下,将多个应用程序集成在一起来实现一个综合的工程应用,这是个很好的选择。

[1]岳 震.基 于 VB 的 AutoCAD 二 次 开 发[J].机 械 设 计 与 制 造 ,2002(1):25-26.

[2]张 晋 西.Visual Basic 与 Auto CAD 二 次 开 发 [M].北 京 :清 华大学出版社,2002.

[3]刘 瑞 新 ,汪 远 征.Visual Basic 程 序 设 计 教 程[M].北 京:机 械工业出版社,2000.

[4]申 永胜.机械 原理教 程[M].北京 :清华大 学出 版社,1999.

[5]张 国 宝 .AutoCAD Visual Basic 开 发 技 术[M].北 京 : 科 学 出版社,2000.

[6]郭 招娣.VB.NET 和 VB6.0 的 二次开 发[J].CAD/CAM 与制造业信息化,2005(1):29.

(责任编辑梁红艳)

H 26.2

:A

:1671-9123(2014)03-0117-04

2014-05-26

燕必成(1975-),男,甘肃天水人,浙江机电职业技术学院机械工程学院教师。

猜你喜欢
轴孔窗体铣刀
炼钢转炉托圈销轴孔在线修复探讨
铣刀盘的5轴数控加工
可转位面铣刀铣削力解析建模与实验研究
试谈Access 2007数据库在林业档案管理中的应用
螺纹铣刀
轴孔协调接触建模与试验研究
有关大跨距同轴孔系加工方法的研究
一种实用的柴油机机体轴孔加工技术
便捷装卸的铣刀杆垫圈和平键组合设计一例
巧设WPS窗体控件让表格填写更规范