APP下载

基于AutoCAD的标准件CAD系统的开发

2018-11-07高丽华翁磊徐华

电子测试 2018年19期
关键词:标准件窗体二次开发

高丽华,翁磊,徐华

(淮海工学院,江苏连云港,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(UserForm4.ComboBox2.Text)

n4 = Val(UserForm4.ComboBox3.Text)

c4 = 5 / 12 * b4 * n4 + n4 * a4

Unload Me

End Sub

此单击事件是将对应的参数进行赋值,将值传递到相应的类模块中,类模块的过程被执行,完成图形的绘制。

Private Sub CommandButton2_Click()

End

End Sub

此单击事件是退出整个运行环境。

Private Sub UserForm_Initialize()

Image1.Picture = LoadPicture(“D:标准件图 anhuang2089.bmp”)

‘组合框1增加缩放比例的值

UserForm4.ComboBox1.AddItem“1:1”

UserForm4.ComboBox1.AddItem“1:1.5”

UserForm4.ComboBox1.Text =“1:1”

‘组合框2增加n的值

UserForm4.ComboBox3.AddItem“2.5”

UserForm4.ComboBox3.AddItem“3”

UserForm4.ComboBox3.Text =“2.5”

‘列表框增加d的值

UserForm4.ListBox1.AddItem“0.5”

UserForm4.ListBox1.AddItem“0.6”

‘列表框默认的值

UserForm4.ListBox1.Text =“0.5”

‘组合框2增加D的值

UserForm4.ComboBox2.AddItem“3”

UserForm4.ComboBox2.Text =“3”

End Sub

窗体初始化事件,是在窗体第一次被加载的时候,窗体上各个控件所处的状态。同时图片框加载了弹簧图片,让用户可以直观地了解要绘制的标准件的形状。

4.1.2 类模块

类模块中的代码主要是进行图形绘制的过程,窗体只是用户和类模块进行交互的界面,实际上是类模块完成了整个绘制过程。

图2 压缩弹簧示意图

5 菜单的设计

5.1 菜单的制作

(1)单击“工具”菜单—“自定义”—“界面”。

(2)执行以下操作

输入新名称覆盖“Menu1”文字。

在“Menu1”上单击鼠标右键。单击“重命名”。输入新的菜单名。

(3)在树状图中选择新菜单,然后更新“特性”窗格,如下所示:在“说明”框中为该菜单输入说明。

在“别名”框中,系统将基于已经加载的菜单数量自动为新菜单指定别名。例如,如果别名指定为POP12,则表明已加载了11个菜单。查看或编辑别名。

(4)在“命令列表”窗格中,将命令拖到“<文件名> 中的自定义设置”窗格中该菜单下面的位置。修改命令名称,添加宏命令,如:^C^C_-vbarun(宏的名称)。

(5)添加完命令后,单击“确定”。

5.2 菜单加载

启动AutoCAD,在命令行输入menuload,弹出加载/卸载自定义设置窗口,点击卸载按钮,将原有的菜单文件卸载,点击浏览按钮找到文件acad.CUI,单击加载按钮。即完成了菜单的加载,如图3所示。螺栓子菜单如图4所示。

图3 菜单示意图

图4 螺栓子菜单

猜你喜欢

标准件窗体二次开发
标准件库的建立与应用
浅谈基于Revit平台的二次开发
试谈Access 2007数据库在林业档案管理中的应用
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
CATIA V5标准件库的创建与使用
基于知识的组合机床夹具可扩充标准件库的开发
古代建筑的标准件
基于Pro/E二次开发的推土铲参数化模块开发
巧设WPS窗体控件让表格填写更规范