基于AutoCAD的标准件CAD系统的开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于AutoCAD的标准件CAD系统的开发
高丽华;翁磊;徐华
【摘要】本文采用VBA技术进行了AutoCAD的标准件系统的二次开发.开发过程中使用参数化设计思想,阐述了参数化设计的特点以及表现形式,以及参数化设计的主要技术路线,同时对VBA系统中如何进行绘图的关键技术进行了分析.系统采用VBA编写的参数化绘图程序,将标准件所需的关键参数设置为变量,通过对变量进行赋值,自动计算出绘制标准件所需要的各点的坐标,调用绘图程序进行绘图,实现了螺栓和弹簧等零件的自动化绘制.
【期刊名称】《电子测试》
【年(卷),期】2018(000)019
【总页数】3页(P50-51,108)
【关键词】标准件;AutoCAD;VBA;参数化设计
【作者】高丽华;翁磊;徐华
【作者单位】淮海工学院,江苏连云港,222005;淮海工学院,江苏连云港,222005;淮海工学院,江苏连云港,222005
【正文语种】中文
1 二次开发的实现方式
1.1 二次开发的设计思想
二次开发利用AutoCAD软件中自带的VBA编辑器,根据标准件的有关国家标准
规定进行编程。在使用时,只需用鼠标左键单击“标准件”菜单,在该下拉菜单下选择要绘制的标准件,输入或选择相应的尺寸后即可完成图形的插入过程。
1.2 AutoCAD系统中二次开发语言的选择
AutoCAD的二次开发语言目前用的包括多的有ObjectARX、VisualLISP和VBA。(1)VBA的语言代码完全继承了VB的特征,可以说是世界上最简单的编程语言,在VBA综合开发环境中,可以通过拖动的方法,简单而可视化的建立用户界面。(2)VBA功能强大,可以用于数据计算、数据库管理以及Internet软件。(3)比其他开发方式速度要高许多。因此采用VBA进行标准件的二次开发。
2 参数化设计
目前参数化设计方法主要有以下两种。(1)基于几何约束的数学方式:人工智能的发展,促进了参数化设计方法的发展。对递归约束无法处理。扩展现有的数据结构,使其包含拓扑信息,并通过程序实现从几何约束到几何细节的推理。(2)基于特征的实体造型方法。
3 二次开发过程中的关键技术
在AutoCAD 中,Autodesk公司在AutoCAD中加入了ActiveX自动化服务功能(ActiveX Automation server capabilities),使得用户可以通过可视化编程工具,如Visual Basic(简称VB)、Delphi等对AutoCAD进行二次开发,不但提高了工作效率,也满足了不同专业的需要。
每一个对象都代表了AutoCAD中的一个明确的功能。每一个对象本身包含着自己的属性和方法,通过方法可以实现对象的一些操作,如控制CAD的启动,打开一个文档,一条直线的生成。而属性则是对象自己本身所具有的一些性质,如一个文本对象,它的属性有文本的高度,宽度、文本的颜色,所在层等。应用程序正是通过对AutoCAD暴露的各级对象的方法和属性的引用控制AutoCAD工作的。
例如在AutoCAD系统中将要绘制的标准件以块的形式绘制,通过用户选择插入点、
x比例因子,y比例因子、旋转角度,完成块的插入。
用于创建块对象的Add方法的语句格式如下:
Set BlockObj = ThisDrawing.Blocks.Add(Insertion-Point, name)
块的创建与插入方式如下:
Dim BlockRefObj As AcadBlockReference
Dim BlockObject As AcadBlock
Dim BlockInsPoint(0 To 2) As Double
Dim InsPoint(0 To 2) As Double
Dim circleobj as acadcircle
Dim centerpnt(0 To 2) As Double
Dim radius As Double
I=Int(Rnd * 1000) + 1
a = Str(I)
BlockInsPoint(0) = 0
BlockInsPoint(1) = 0
BlockInsPoint(2) = 0
Set BlockObject = ThisDrawing.Blocks.Add(Block-InsPoint,“块的名称” & a) centerpnt(0)=0: centerpnt(1)=0: centerpnt(2)=0
radius =50
Set circleobj=ThisDrwing.Modelspace.Addcircle(centerpnt, radius)
Dim insertPnt As Variant
Dim Xscale As Double, Yscale As Double, Rotangle As Double
insertPnt = ThisDrawing.Utility.GetPoint(,"输入插入点:")
Xscale=1: Yscale = 1: Rotangle = 0
On Error Resume Next
Xscale = ThisDrawing.Utility.GetReal("输入X轴比例因子:")
Yscale = ThisDrawing.Utility.GetReal("输入Y轴比例因子:")
Rotangle = ThisDrawing.Utility.GetReal("输入旋转角度:")
Set BlockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertPnt, "块的名称" & a, Xscale,Yscale, 1#, Rotangle * 3.14 / 180)
此段代码是将半径为50的圆以块的形式插入到模型空间。
4 标准件的绘制
4.1 圆柱螺旋压缩弹簧(GB/T2089-2009)
4.1.1 窗体中的代码
由于代码内容较多,选取其中典型过程进行分析,窗体如图1。
图1 压缩弹簧窗体
Private Sub CommandButton1_Click()
a4 = Val(UserForm4.ListBox1.Text)
b4 = Val(boBox2.Text)
n4 = Val(boBox3.Text)
c4 = 5 / 12 * b4 * n4 + n4 * a4
Unload Me
End Sub
此单击事件是将对应的参数进行赋值,将值传递到相应的类模块中,类模块的过程被执行,完成图形的绘制。
Private Sub CommandButton2_Click()
End
End Sub