用VB开发AutoCAD进行参数化孔型优化设计_第1页
用VB开发AutoCAD进行参数化孔型优化设计_第2页
用VB开发AutoCAD进行参数化孔型优化设计_第3页
用VB开发AutoCAD进行参数化孔型优化设计_第4页
用VB开发AutoCAD进行参数化孔型优化设计_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用开发进行参数化孔型优化设计作者:张弛光张雪莲中国教育技术装备 年20期 字数:3695 字体: 【大 中 小】 摘要 介绍用VB开发AutoCAD进行参数化绘图的途径和方法。优化孔型设计是轧钢工艺设计的主要问题之一,通过轧制角钢孔型的优化设计,介绍这种方法在轧钢孔型优化设计中的具体应用。 关键词 VB;AutoCAD;参数化绘图 中图分类号:TP391.72 文献标识码:A 文章编号:1671-489X(2008)20-0108-03 轧钢孔型的优化设计是轧制工艺的主要问题之一。如果利用参数化绘图,可以将图形尺寸与设计条件相关联,即将图形尺寸看作是“设计条件”的函数,当设计条件发生变化时,图

2、形尺寸也随之发生变化,从而完成图形的绘制。这样不仅可以缩短设计周期,而且提高了设计质量。其实,AutoCAD自问世之初,就为人们提供了参数化绘图的功能,它不但提供了与其他程序设计语言的接口,而且其自身拥有的AUTOLISP、ADS、ARS、VBA等开发工具功能强大。 笔者通过VB高级语言把AUTOCAD中的VBA代码转变为VB代码,以VB作为编译器,AutoCAD作为图形支撑软件,使VB直接调用AutoCAD来实现参数化绘图。 1 设计思路 对于高级语言Visual Basic 6.0来说,其计算能力较强而绘图能力却相对较差;而绘图软件AutoCAD2002恰好相反,计算能力差而绘图能力强。设

3、计者可以用前者计算,用后者绘图。这就要求高级语言和绘图软件之间要有接口,设计者给出参数,经高级语言处理后能够调用AutoCAD绘出所需的图形。 2 Visual Basic 6.0与 AutoCAD2002的连接 2.1 连接方式VBA是AutoCAD2002的内嵌式语言,它的全称是Visual Basic for Application。它是基于Visual Basic 6.0版本,完全面向对象体系结构的一种编程语言,所以它有着与VB几乎相同的开发环境和语法;它的功能强大,可以说是一个万能开发工具。由于VBA是依附于AutoCAD的,所以其与AutoCAD共享内存空间、数据环境。VBA语言结

4、构简单,即可利用AutoCAD主界面操作环境,也可创造自己所需的主界面操作环境1。但是它也存在一定的缺点,为了克服这些缺点,使用Visual Basic 6.0开发AutoCAD。 转化VBA代码为VB代码,首先要引用AutoCAD type library。在VB6.0中,选择工程“引用”,然后在“引用”对话框选择AutoCAD2000 type library,接下来将VBA代码中所有的Thisdrawing替换成一个用户定义的代表当前活动文档的变量,为AutoCAD应用程序acadApp和当前文档acadDoc定义一个变量,然后设置应用程序变量为当前AutoCAD应用程序。 如果Auto

5、CAD正在运行,则用GetObject方法取得AutoCAD应用程序对象。如果AutoCAD没有运行,则返回一个错误。捕捉这个错误并清除它,然后用CreateObject方法尝试建立一个AutoCAD应用程序对象。如果成功,则AutoCAD启动;如果失败,则显示一个消息框说明错误原因2。 2.2 连接程序代码3 Public acadapp As Object ' AutoCAD应用程序对象变量 Public preference As Object ' AutoCAD优先设置对象变量 Public acaddoc As Object ' AutoCAD文档对象变量 P

6、ublic paspace As Object ' AutoCAD图纸空间对象变量 Public mospace As Object ' AutoCAD模型空间对象变量 '绘图初始化 Sub init() '与CAD建立连接 On Error Resume Next '如果CAD正在运行,则GetObject函数返回对应用程序对象的引用 '变量AcadApp已经定义成全局变量 Set acadapp = GetObject(, " AutoCAD.Application") If Err Then Err.Clear'

7、清除错误 Set acadapp = CreateObject("AutoCAD.Application")'启动AutoCAD '如果GetObject函数不能创建AutoCAD应用程序对象 '则提示不能运行AutoCAD! If Err Then MsgBox "不能运行AutoCAD!" Exit Sub '退出本过程 End If End If '如果成功的引用了AutoCAD应用程序对象 '则使其界面可见(缺省状态下是不可见的) acadapp.Visible = True acadapp.Wid

8、th = Screen.Width acadapp.Height = Screen.Height Set preference = acadapp.preference Set acaddoc = acadapp.ActiveDocument Set mospace = acaddoc.ModelSpace Set paspace = acaddoc.PaperSpace End Sub '结束过程 3 参数化绘图的实现 3.1 AutoCAD2002对象模型AutoCAD2002应用程序公开的对象很多,每个对象都代表了AutoCAD应用程序的一部分。图形实体对象,如直线line、圆c

9、ircle等;样式设置对象,如线型linetype等;组织结构对象,如层layer、块block等。这些对象按照从属关系,有层次地组织在一起,就形成了AutoCAD2002对象模型。在编制参数化绘图代码前必须建立实体层、中心线层,并设定各层的颜色和线型。 实体对象的创建与编辑:在创建实体对象之前,要确定实体将放于何处,是模型空间、图纸空间,还是存放在块中。不论在哪个对象中创建实体,都要先引用这个对象。 3.2 建立图形的几何及数学模型无论怎么复杂的图形,均可看成是由直线、圆弧、圆等基本绘图元素拼接而成的。只要已知特征点(直线两端点、圆的圆心、圆弧的起点和终点等)的坐标和有关参数,就能调用 Au

10、toCAD的基本作图命令,将它们画出来。 在参数化绘图过程时,首先确定所选坐标系的原点坐标,这里是(ox,oy)。其次是确定一些特征点的坐标。按照图形的几何关系,根据特征点计算绘图点,绘图点由特征点两边夹角和圆角半径来确定。然后利用AutoCAD的直线圆弧绘图命令,把这些绘图点连接起来,即可绘出完整的孔型图。 现以型钢轧制过程的孔型设计中箱形孔为例来说明图形的参数化绘图的具体途径。型材是在带有所谓轧槽所构成的环形凹槽或凸缘的轧辊上轧制出来的。由两个或多个轧辊的轧槽所构成的断面轮廓叫做孔型4。孔型设计中首先确定孔型形状和孔型尺寸,其次是将孔型配置在轧辊上。如图1所示:要画出箱形孔必须知道轧件宽度

11、b、轧件高度h、外角半径r1、内角半径r2、孔型上半部倾斜角qxj1、孔型下半部倾斜角qxj2、辊缝s共7个尺寸。孔型宽高可以由VB计算部分得到,也可以手工输入,而其他5个尺寸可以由人手工输入。在参数化绘制孔型图的过程中首先要正确地确定特征点的坐标。一般应根据尺寸的几何关系,建立孔型上所有的特征点的坐标和孔型宽度和高度的关系式,从而实现当轧件尺寸改变时,相应孔型图也随之改变的目的。绘图点由特征点两边夹角和圆角半径来确定。因为箱形孔是按照y轴对称,所以只画出左面一半的图形,右面一半的图形由左面图形关于y轴镜像得到。 编制箱形孔参数化绘图的程序如下所示(以1、2两点的线段1和2、3两点之间的圆弧2

12、来说明图形的绘制,其中13点为一个特征点): Public ox, oy As Double ' 图形所放位置的相对原点坐标 Dim pn1(0 To 2) As Double ' 定义1点的坐标为双精度数 Dim pn2(0 To 2) As Double ' 定义2点的坐标为双精度数 Dim pn3(0 To 2) As Double ' 定义3点的坐标为双精度数 Dim pntcen1(0 To 2) As Double '过渡弧圆心坐标 Dim Line1 As Object ' 定义1点和2点之间的直线1为对象变量 Dim Line2

13、As Object ' 定义2点和3点之间的圆弧2为对象变量 Dim line11 As Object ' 定义直线1关于y轴的对称线段11为对象变量 Dim Line21 As Object ' 定义圆弧2 y轴的对称弧21为对象变量 Dim lkx As Object ' 轮廓线 Dim point1(0 To 2) As Double ' 镜像点坐标 Dim point2(0 To 2) As Double' 镜像点坐标 Dim xxobj As AcadLineType '建立实体层 Dim stlayerobj As AcadL

14、ayer Dim curlayerobj As AcadLayer '添加一个实体层 Set stlayerobj = acaddoc.Layers.Add("lunkuoxian") stlayerobj.Color = acWhite 'stlayerobj.Lineweight = acLnWt025 '画孔型轮廓线 Set curlayerobj = acaddoc.ActiveLayer '保存当前活动层 acaddoc.ActiveLayer = stlayerobj '设实体层为当前层 Set xxobj = acadd

15、oc.Linetypes.Add("continuous") acaddoc.ActiveLinetype = xxobj 'xxobj.Lineweight = acLnWt025 acaddoc.Regen True qxj1 = 7 * pi / 180: r1 = 25: r2 = 18: s= 15 ' qxj1为箱形孔的侧壁斜角 pn1(0) = ox - b / 2 - r1 * Tan(pi / 2 - qxj1) / 2) - 20: pn1(1) = oy + s / 2: pn1(2) = 0 pn2(0) = ox - b(i) /

16、2 - r1 * Tan(pi / 2 - qxj1) / 2): pn2(1) = oy + s / 2: pn2(2) = 0 Set Line1 = mospace.AddLine(pn1, pn2) pntcen1(0) = pn2(0): pntcen1(1) = oy + s(i) / 2 + r1: pntcen1(2) = 0 Set Line2 = mospace.AddArc(pntcen1, r1, 3 / 2 * pi, 2 * pi - qxj1) point1(0) = ox: point1(1) = oy - 135: point1(2) = 0 point2(0

17、) = ox: point2(1) = oy + 118.5: point2(2) = 0 Set line11 = Line1.Mirror(point1, point2) Set Line21 = Line2.Mirror(point1, point2) 图中其他点的坐标也按照上述的方法依次找到,这样就依次画出箱形孔孔型图的左半部分,再通过关于y轴镜像得到完整的孔型图。 4 结论 本文介绍Visual Basic 6.0 与AutoCAD 2002的连接,以VB作为编译器,以AutoCAD为图形支撑软件,在AutoCAD绘图环境下进行参数化绘图。这种方法可以使设计人员从繁琐的计算、绘图工作中解放出来,以从事

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论