用VB开发AutoCAD进行参数化孔型优化设计

来源 :中国教育技术装备 | 被引量 : 0次 | 上传用户:ysw135
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要 介绍用VB开发AutoCAD进行参数化绘图的途径和方法。优化孔型设计是轧钢工艺设计的主要问题之一,通过轧制角钢孔型的优化设计,介绍这种方法在轧钢孔型优化设计中的具体应用。
  关键词 VB;AutoCAD;参数化绘图
  中图分类号:TP391.72 文献标识码:A 文章编号:1671-489X(2008)20-0108-03
  
  轧钢孔型的优化设计是轧制工艺的主要问题之一。如果利用参数化绘图,可以将图形尺寸与设计条件相关联,即将图形尺寸看作是“设计条件”的函数,当设计条件发生变化时,图形尺寸也随之发生变化,从而完成图形的绘制。这样不仅可以缩短设计周期,而且提高了设计质量。其实,AutoCAD自问世之初,就为人们提供了参数化绘图的功能,它不但提供了与其他程序设计语言的接口,而且其自身拥有的AUTOLISP、ADS、ARS、VBA等开发工具功能强大。
  笔者通过VB高级语言把AUTOCAD中的VBA代码转变为VB代码,以VB作为编译器,AutoCAD作为图形支撑软件,使VB直接调用AutoCAD来实现参数化绘图。
  
  1 设计思路
  
  对于高级语言Visual Basic 6.0来说,其计算能力较强而绘图能力却相对较差;而绘图软件AutoCAD2002恰好相反,计算能力差而绘图能力强。设计者可以用前者计算,用后者绘图。这就要求高级语言和绘图软件之间要有接口,设计者给出参数,经高级语言处理后能够调用AutoCAD绘出所需的图形。
  
  2 Visual Basic 6.0与 AutoCAD2002的连接
  
  2.1 连接方式VBA是AutoCAD2002的内嵌式语言,它的全称是Visual Basic for Application。它是基于Visual Basic 6.0版本,完全面向对象体系结构的一种编程语言,所以它有着与VB几乎相同的开发环境和语法;它的功能强大,可以说是一个万能开发工具。由于VBA是依附于AutoCAD的,所以其与AutoCAD共享内存空间、数据环境。VBA语言结构简单,即可利用AutoCAD主界面操作环境,也可创造自己所需的主界面操作环境[1]。但是它也存在一定的缺点,为了克服这些缺点,使用Visual Basic 6.0开发AutoCAD。
  转化VBA代码为VB代码,首先要引用AutoCAD type library。在VB6.0中,选择工程—“引用”,然后在“引用”对话框选择AutoCAD2000 type library,接下来将VBA代码中所有的Thisdrawing替换成一个用户定义的代表当前活动文档的变量,为AutoCAD应用程序acadApp和当前文档acadDoc定义一个变量,然后设置应用程序变量为当前AutoCAD应用程序。
  如果AutoCAD正在运行,则用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文档对象变量
  Public 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’清除错误
  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.Width = 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、圆circle等;样式设置对象,如线型linetype等;组织结构对象,如层layer、块block等。这些对象按照从属关系,有层次地组织在一起,就形成了AutoCAD2002对象模型。在编制参数化绘图代码前必须建立实体层、中心线层,并设定各层的颜色和线型。
  实体对象的创建与编辑:在创建实体对象之前,要确定实体将放于何处,是模型空间、图纸空间,还是存放在块中。不论在哪个对象中创建实体,都要先引用这个对象。
  3.2 建立图形的几何及数学模型无论怎么复杂的图形,均可看成是由直线、圆弧、圆等基本绘图元素拼接而成的。只要已知特征点(直线两端点、圆的圆心、圆弧的起点和终点等)的坐标和有关参数,就能调用 AutoCAD的基本作图命令,将它们画出来。
  在参数化绘图过程时,首先确定所选坐标系的原点坐标,这里是(ox,oy)。其次是确定一些特征点的坐标。按照图形的几何关系,根据特征点计算绘图点,绘图点由特征点两边夹角和圆角半径来确定。然后利用AutoCAD的直线﹑圆弧绘图命令,把这些绘图点连接起来,即可绘出完整的孔型图。
  
  现以型钢轧制过程的孔型设计中箱形孔为例来说明图形的参数化绘图的具体途径。型材是在带有所谓轧槽所构成的环形凹槽或凸缘的轧辊上轧制出来的。由两个或多个轧辊的轧槽所构成的断面轮廓叫做孔型[4]。孔型设计中首先确定孔型形状和孔型尺寸,其次是将孔型配置在轧辊上。如图1所示:要画出箱形孔必须知道轧件宽度b、轧件高度h、外角半径r1、内角半径r2、孔型上半部倾斜角qxj1、孔型下半部倾斜角qxj2、辊缝s共7个尺寸。孔型宽高可以由VB计算部分得到,也可以手工输入,而其他5个尺寸可以由人手工输入。在参数化绘制孔型图的过程中首先要正确地确定特征点的坐标。一般应根据尺寸的几何关系,建立孔型上所有的特征点的坐标和孔型宽度和高度的关系式,从而实现当轧件尺寸改变时,相应孔型图也随之改变的目的。绘图点由特征点两边夹角和圆角半径来确定。因为箱形孔是按照y轴对称,所以只画出左面一半的图形,右面一半的图形由左面图形关于y轴镜像得到。
  编制箱形孔参数化绘图的程序如下所示(以1、2两点的线段1和2、3两点之间的圆弧2来说明图形的绘制,其中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 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 AcadLayer
  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 = acaddoc.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) / 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) = 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绘图环境下进行参数化绘图。这种方法可以使设计人员从繁琐的计算、绘图工作中解放出来,以从事其他创造性的工作;并将高级语言在计算和数据处理上的优势与AutoCAD在图形处理上的特长有机地结合在一起,能够更好地满足需要,提高优化水平。
  
  参考文献
  [1]孔晓玲.AutoCAD 2000 的二次开发—通用件压板的计算机辅助设计[J].机械设计与制造,2002,10:16
  [2]余承飞,王冬松.AutoCAD 数据库应用与连接技术[M].北京:北京大学出版社,2000,6
  [3]张国宝.AutoCAD Visual Basic开发技术[M].北京:科学出版社,2000,1:25
  [4]B.K.斯米尔诺夫,等.轧辊孔型设计[M].北京:冶金工业出版社,1991,1
其他文献
教学目标:  1.懂得劝说时,注意说话的语气和说话的技巧,不要用指责的口吻。  2.能根据具体情境,选择恰当的方式,多从别人的角度着想,尝试用对方更容易接受的方式劝告别人。  课时安排:1课时。  教学过程:  板块一 视频导入,感知“勸告”  1.播放视频:视频故事梗概:有位小朋友一回家,不洗手就直接拿东西吃。妈妈劝说他。  2.在妈妈的劝说下,女儿明白了“吃东西前先要洗手”的道理。这位妈妈刚刚
摘 要 从理论上分析项目驱动教学法的概念,深入研究在Java语言程序设计课程中采用项目驱动教学法的优势和实施过程。  关键词 高职;项目驱动;教学方法;Java语言程序设计  中图分类号 G423.07 文献标识码 B 文章编号 1671-489X(2008)08-0024-03    随着高等职业教育的迅猛发展,基于高职学生的教育教学方法的探索也在不断进行,如何引导高职学生学习?如何提高高职学生
《白鹅》的作者丰子恺是漫画大师,他在散文创作中,善于以漫画家的视角观察生活,以漫画家的笔调反映生活,所以他的散文自然注入了漫画元素。于是,我引导学生聚焦漫画式语言的特色,以“读到哪里,让你觉得特别夸张、幽默、有趣,就像在看漫画,忍不住想笑出声来”这一大任务,引领学生主动探究课文内容,通过品味语言感受文中刻画的形象,感悟作者所要表达的情感。  片段一:比较步态品语言  师:下面,就请同学们默读课文,
摘要 学生选课管理是学校教务管理工作的重要组成部分,学生选课管理的信息化是现代学校人力资源开发和管理的主要手段。本文在介绍ASP.NET技术的基础上,设计和实现了基于ASP.NET三层体系结构的网上选课系统。  关键字 ASP.NET;选课系统;三层体系结构;选课管理  中图分类号: TP302 文献标识码:A文章编号:1671-489X(2006)12-0060-03  随着校园数字化建设的发展
方清平是我喜爱的相声演员,他的代表作《幸福童年》对小学习作教学的批评入木三分,值得每个语文老师反思。但相声中有一句话不对:“(老师)还让我们天天写日记。那么点小孩儿,每天有什么事儿可记的呀!(只好)胡说八道呀!”——方清平这样说情有可原,他毕竟不是专业教师,他毕竟是在上世纪70年代开始接受的小学教育。但几十年过去了,现在仍然有这样的想法就不应该了——这说明当下的习作教学在某些领域还没有得到根本的突
一、汉字中的“某省”现象  “某省”在《说文解字》里主要分为“省声”“省形”两种。  “省声”指形声字中省简了声旁的某一部分。如,“炊”从火,吹省声,即声旁“吹”省简了“口”成“欠”;“缺”从缶,决省声,即声旁“决”省简了“冫”(bīnɡ,冰)成“夬”。  “省形”指会意字、形声字中省简了形旁的某一部分。会意字如“集”,曾作“雧”,从雥(zá,三隹表示群鸟)从木,会意群鸟聚集树上;后作“集”,省简
教学目标:  1.认识中心发散的写作方法,了解几种常见的中心发散类型。  2.形成中心发散的写作思维方式,学会运用该方法把事物写细致具体。  教学过程:  一、观察校园,不同角度发现美  1.同学们,校园是我们学习知识的殿堂,是我们快乐成长的乐园。在我们心中,校园总是那么美。那你觉得校园哪里最美呢?  2.大门、花池、喷泉等地点的变化,让我们全方位地领略了校园之美。我们还可以从什么角度去感受校园之
阅读通常指的是阅读的活动。小学语文阅读教学特指语文课上的阅读教学。王荣生教授指出, “阅读教学通常指的是语文教科书中的课文教学”。当前的阅读教学形式主要呈现为课堂上教师对一篇课文进行教学,引导学生对阅读的文章进行分析、理解、赏析、领悟,最终以培养学生的阅读素养为目的的过程。  国际对阅读素养内涵的界定主要包括:口语的流利性、理解性;阅读的流利度、理解程度;词汇的接受能力、表达能力;写作的表达与理解
统编本教材具有“经典性、文质兼美、适宜教学和时代性”的特点。以统编本一年级上册教材为例,全册书出现了很多的儿童诗歌,其中包括儿歌、童谣、古代儿童诗、现代儿童诗。这些儿童诗歌教师应该怎样去教?学生要怎样去学?笔者做了如下探索。  一、 认识词与句,读出声韵美和情感美  本册教材先识字后学拼音,认识词和句子,有停顿、有节奏地读诗歌,在反复诵读的过程中理解诗歌并感悟诗歌的情感美,这成为本册教材诗歌教学的
第一课时  一、复习,激趣导入  1.出示单韵母卡片,做“找朋友”游戏。  同学们,老师给大家带来了拼音王国的单韵母宝宝,谁能领着大家读一读?(指名小老师领读。齐读。)  真棒!现在我们来给单韵母宝宝找朋友,组成我们学过的3个复韵母。(指名上台给单韵母找朋友)  2.导入课题。  同学们,单韵母宝宝非常热情,除了“ɑi ei ui”,它们还找了几个朋友,我们一起去认识一下。(板书课题:ɑo ou