圆柱与圆柱相贯实体造型及展开CAD的研究 毕业论文.doc_第1页
圆柱与圆柱相贯实体造型及展开CAD的研究 毕业论文.doc_第2页
圆柱与圆柱相贯实体造型及展开CAD的研究 毕业论文.doc_第3页
圆柱与圆柱相贯实体造型及展开CAD的研究 毕业论文.doc_第4页
圆柱与圆柱相贯实体造型及展开CAD的研究 毕业论文.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

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

文档简介

圆柱与圆柱相贯实体造型及展开cad的研究摘 要建立了圆柱与圆柱相贯的统一数学模型。据此模型,以autocad为平台,应用其内嵌的vba(visual basic for application)语言为编程工具,设计了绘制圆柱与圆柱相贯实体的通用源程序。建立了求解两圆柱轴线垂直交错时相贯线上点的坐标的通用数学模型,并以此为基础,给出了绘制含有相贯线的圆柱展开图的原理和方法。根据以上数学模型,应用vba编程,设计了绘制含有相贯线的圆柱展开图的通用源程序。在上述源程序的基础上,设计了基于vba的圆柱与圆柱相贯实体造型及绘制展开图的参数化软件。应用该软件,可以通过输入特征参数,方便地绘制带有圆柱支管的圆柱形管道、炉具、罐等设备的实体和展开图形。因此,该参数化造型软件在中小型钣金制件行业中具有一定的实用价值。关键词:autocad vba语言 参数化实体造型 展开图ii目 录摘 要i1 引 言12 autocad的发展概况23 autocad vba简介44 圆柱与圆柱相贯实体造型64.1 vba环境中的实体造型机制64.2 圆柱与圆柱相贯实体的生成65 圆柱与圆柱相贯线展开图的生成9结束语14参考文献151 引 言生产实际中,经常遇到一些主体为圆柱、圆锥形的管道、炉具、罐等设备,其上往往有一些叉管、观察孔、测试孔等分支结构,这些通常为圆柱或圆锥形钣金制件。所谓参数化,是指对零件的各种特征施加各种约束形式。各个特征的几何形状与尺寸大小用变量(具体的数据或代数表达式)的方式来表示。如果与某特征对应的参数发生了变化,那么零件上该特征的几何形状或尺寸大小将随之变化。三维参数化实体造型的实现有两种途径:其一,从底层开发cad软件。这种方法较困难,不适于小型企业;其二,在基础绘图软件平台(如autocad)上作二次开发。autocad作为cad二次开发平台,具有强大的绘图功能和良好的开发性,受到国内外许多企业的青睐。计算机辅助制图是现代企业生产和设计的重要工具,autocad是计算机辅助设计工具的一种,vb 是autocad软件的重要组成部分。它是autocad软件二次开发的重要工具。它可使一些常用的机械零件能很快的调用,简捷方便,很大的提高了工作效率缩短了新产品的开发周期,提高制图的质量。利用vb语言对autocad进行二次开发是现代计算机技术不可缺少的内容,而且直接影响到制图的速度和质量。12 autocad的发展概况随着现代工业文明的发展,越来越多的企业对工业产品的外形和内部结构的要求越来越高,产品更新的速度越来越快,传统的手工制图已经不能满足现代企业的要求。计算机辅助设计技术的引进是近代工业史上的一次革命,它显著的提高了制图的速度和制图的质量,缩短了新产品设计开发的时间。autocad是计算机辅助设计工具的一种,它是美国autodesk公司在1982年12月开发出来的,auto- cad软件是计算机辅助设计与绘图相结合的综合软件,从第一版autocad r1.0起,经历了若干次升级,现已达到autocad2006。在autocad 14版中,autodesk首次包括了microsoft的visual basic for applications(vba)。将autocad和visual basic的功能结合在一起,可以创建非常好的定制应用程序,从而在使用autocad执行当前任务时,可以在很短的时间内创建出正常情况下需要好几个小时才能完成的图形。经过三十多年的发展,cad技术得到了迅速普及,已成为电子信息技术的重要组成部分。cad技术使产品的内容和方式发生了根本性变革,这一技术已成为工业发达国家保持竞争优势,开拓市场的主要技术手段。1989年,美国国家工程科学院将cad技术评为人类25年间(19651989)当代十项最杰出工程技术成就之一。cad技术之所以在短短的三十年发展如此迅速,是因为它几乎推动了一切领域的设计革命,彻底的改变了传统的手工绘图的方式,极大的提高了产品开发的速度,提高了设计精度。这一新技术的应用将使人类的聪明才智和创造能力与计算机高速而精确的计算能力、大容量的储存和数据处理功能结合起来,是两者相得益彰。cad技术的发展与应用水平成为衡量的科学技术现代化和工业现代化的重要标志之一。近几年来,随着计算机技术的飞速发展,cad技术已由发达国家向发展中国家扩展,而且发展的势头非常迅猛。我国政府部门十分重视这一技术,已经和科技界、工业界一起把cad技术的应用推广当作一件大事来抓,如果国家科委实施了cims工程和cad应用工程,组建了全国性的cad培训网络;机械工业部把1997年定位“cad推广年”。将cad推广工作作为重中之重项目,目前正在组织实施“cad应用1550工程”。很多大中型甚至小型企业都在努力引进这一新技术,以提高企业自身的技术素质,增强产品在国内外市场上的竞争能力。另外,cad教学也得到了个高校的普遍重视。要想全面推广普及cad技术,提高我国的整体技术水平。为了拓宽autocad的运用领域,从1993年夏季起,autodesk公司已设计自动化为主题,相继推出了极具应用价值的软件群体,包括3d max autocad、designer auto surf autocad、data extension auto cad、vision animator studio autocad、map mechanical desktop(mdt)。这些将在autocad中得到很好的发挥,autocad也将会也来越强大。33 autocad vba简介autocad软件包是美国autodesk公司推出的cad(计算机辅助设计)软件,从autocad第一版诞生到现在已有三十年的时间。autocad r14是目前最流行的工程图形处理软件。由于它具有完善的绘图功能、良好的用户界面、易学易用等特点,因而被广泛地应用于测绘、规划、设计、土地管理等行业,autocad为用户提供了多种二次开发工具,其中较常用的有autolisp、vba、objectarx三种方式。autolisp是一种解释性的表结构处理语言,具有语言结构简单、开发周期短、不依赖于操作平台的特点,但是作为解释语言,其运行速度和保密性方面有一定的缺陷,并且不适合开发有复杂运算的软件。objectarx for r14是基于microsoft visual c+4.2的开发工具,一个arx应用程序分享autocad的地址空间并且函数可以直接为autocad所调用,因而是运行速度最快的开发工具,但是microsoft visual c+语言较复杂,开发arx应用程序需要较多的软件开发经验,也不适合作为非软件开发专业人员的测绘工作者的开发工具。visual basic(vb)是美国微软公司推出的程序开发工具,它简单易学,适用面广,在windows平台上被广泛使用。为此,可以作为测绘工作者进行程序设计的首选工具。vba是visual basic for applications的缩写,由visual basic派生而来,现在已经成为mictosoft产品的标准语言。与vb一样,vba是面向对象的设计语言,它继承了vb语法简单、功能强大的特点,同时,由于vba可与主程序在同一内存空间内运行,大大提高了运行的速度,并具有某些“智能”功能。每一套autocad 2000 都包含功能强大、易学易用的vba 5.0程序开发环境,这个继承开发环境提供了高质量的用户化编程能力。(1) vba能够使autocad与其它应用程序直接共享数据,如microsoft office 97软件,因为所有的vba应用程序都可以方便的相互沟通,在设计过程中可以很容易的将autocad的数据与基于windows的应用程序联系起来。例如,可以使用autocad 2000生成材料表并直接输出电子数据表为财务部门使用。绘制图纸,然后用vba。(2) 在vba综合开发环境中,可以通过拖动图表的方法,简单而可视化的建立用户界面。用户可以使用autocad工具栏,可以使用标准vba界面工具创建新的工具栏。(3) vba的语言代码完全继承了vb的特征,可以说是世界上最简单的编程语言,但其功能不弱。从数据计算、数据库管理到internet软件开发,都可以见到vb的身影,并可通过各种在线帮助,随时得到名师的真传。(4) 具有开放式的对象模型。autocad 2000软件中的activex对象模型十分重要,它显示了每一个对象的方法和属性,用户可以按照自己的愿望编程或定制autocad 2000软件。(5) 良好的运行速度。vba是一个内嵌式的控制器,共享autocad的内存空间,可以更好的与autocad沟通。其速度与objectarx应用程序非常接近,比其他开发方式(如adsrx,ads和liap)要高许多。 无论编程技术水平如何,使用vba编程都不会感到很多困难。自从带有vba开发接口的autocad r14 发行以来,已经有超过百万的开发者使用了这一软件,开发的主要程序将有更多机会为不断增长的用户群体服务。54 圆柱与圆柱相贯实体造型4.1 vba环境中的实体造型机制在vba程序中,调用documents集合的add(entity)方法,根据给定参数生成相应实体,然后将实体写入atuocad系统的图形数据库。用户可以使用参数方法创建三维实体,若给定长度(length)、宽度(width)、高度(height)或者中心(center)、半径(radius)等参数,即可创建长方体(box)、圆柱体(cylinder)、圆锥体(cone)、圆环(torus)、球体(sphere)等基本实体,分别调用acad3dsolid类的方法addbox、addcone、addcylinder、addtorus和addsphere来生成。也可以在二维面域(region)的基础上用拉伸(extrude)或旋转(revolved)的方法生成三维实体,分别调用addextrudesolid,addrevolved -solid方法生成三维实体。还可以在已有的实体基础上通过布尔运算生成新的三维实体。4.2 圆柱与圆柱相贯实体的生成打开atuocad的vba程序“宏”或者按“alt+f8”创建个新的“宏”程序,在用户窗体中绘出相应的控点,再在各个控点下设定相应的程序,用add- cylinder的方法生成两个圆柱实体,再用rotate3d的方法旋转其中一个圆柱实体,最后用布尔运算让两个实体相贯。流程图如4.1所示。开始分析数据在窗体上绘出控点设定相应命令addcylinder命令生成两圆柱rotate3d旋转圆柱体boolean布尔运算完 成图4.1 圆柱与圆柱相贯实体造型流程图部分程序如下:private sub commandbutton1_click()thisdrawing.application.documents.adddim pi as doubledim cylin1_r, cylin1_h as doubledim cylin2_r, cylin2_h as doubledim cylin1_obj as acad3dsoliddim cylin2_obj as acad3dsoliddim cylin1_cen(0 to 2) as doubledim cylin2_cen(0 to 2) as doubledim dist, cen_hi, theta as doublepi = 4 * atn(1)cylin1_r = val(textbox1.text)cylin1_h = val(textbox2.text)cylin2_r = val(textbox3.text)cylin2_h = val(textbox4.text)dist = val(textbox5.text)cen_hi = val(textbox6.text)theta = val(textbox7.text) * pi / 180绘圆柱1cylin1_cen(0) = 0cylin1_cen(1) = 0cylin1_cen(2) = cylin1_h / 2set cylin1_obj = thisdrawing.modelspace.addcylinder(cylin1_cen, cylin1_r, cylin1_h)绘圆柱2cylin2_cen(0) = distcylin2_cen(1) = 0cylin2_cen(2) = cen_hiset cylin2_obj = thisdrawing.modelspace.addcylinder(cylin2_cen, cylin2_r, cylin2_h)dim ax_p1(0 to 2) as doubledim ax_p2(0 to 2) as doubleax_p1(0) = 1: ax_p1(1) = 0: ax_p1(2) = cen_hiax_p2(0) = 0: ax_p2(1) = 0: ax_p2(2) = cen_hi旋转圆柱2cylin2_obj.rotate3d ax_p1, ax_p2, pi / 2 - theta圆柱1与圆柱2的布尔运算cylin1_obj.boolean acunion, cylin2_objend sub用户界面如图4.1所示,生成的相贯实体如图4.2所示。图4.2 绘制相贯实体及其展开图的用户界面 (a) 垂直交错 (b) 一般交错图4.3 在autocad环境下生成的相贯实体95 圆柱与圆柱相贯线展开图的生成在实际生产中,圆柱体与圆柱体相贯展开图可运用在管道间的连接焊点的确定,从而大量节约了时间与材料,实际运用非常广泛。在展开图中绘出众多相贯点从而确定展开图相贯线的轮廓。在图5.1中的p点是相贯线上的某一点,p的三维坐标是(x、y、z),通过已知条件求出p点坐标,过程如下:图5.1 两圆柱相贯实体三视图竖直圆柱 水平圆柱 改为参数方程形式 将中的代入中 如果 则 如果 则无解,表示此时不存在相贯线,两柱面不相交 图5.2 展开圆柱相贯线的计算模型已知 如图5.2,相贯线展开图上某点p的坐标:程序如下:private sub commandbutton2_click()dim pi as doubledim cylin1_r, cylin1_h as doubledim cylin2_r, cylin2_h as doubledim line_obj as acadlinedim point_obj as acadpointdim dist, cen_hi, theta as doubledim pnt1(0 to 2) as doubledim pnt2(0 to 2) as doubledim pnt(0 to 2) as doublepi = 4 * atn(1)cylin1_r = val(textbox1.text)cylin1_h = val(textbox2.text)cylin2_r = val(textbox3.text)cylin2_h = val(textbox4.text)dist = val(textbox5.text)cen_hi = val(textbox6.text)theta = val(textbox7.text) * pi / 180pnt1(2) = 0: pnt2(2) = 0: pnt(2) = 0圆柱2展开图thisdrawing.application.documents.addpnt1(0) = -cylin2_h / 2: pnt1(1) = 0pnt2(0) = cylin2_h / 2: pnt2(1) = 0set line_obj = thisdrawing.modelspace.addline(pnt1, pnt2)pnt1(0) = cylin2_h / 2: pnt1(1) = 2 * pi * cylin2_rset line_obj = thisdrawing.modelspace.addline(pnt1, pnt2)pnt2(0) = -cylin2_h / 2: pnt2(1) = 2 * pi * cylin2_rset line_obj = thisdrawing.modelspace.addline(pnt1, pnt2)pnt1(0) = -cylin2_h / 2: pnt1(1) = 0set line_obj = thisdrawing.modelspace.addline(pnt1, pnt2)for beta = 0 to 2 * pi step 0.01 x = dist + cylin2_r * cos(beta) z = cen_hi + cylin2_r * sin(beta) delta2 = cylin1_r 2 - x 2 if delta2 = 0 then y = sqr(delta2) pnt(0) = y: pnt(1) = cylin2_r * beta set point_obj = thisdrawing.modelspace.addpoint(pnt) pnt(0) = -y set point_obj = thisdrawing.modelspace.addpoint(pnt) end ifnext beta圆柱1展开图pnt1(0) = 400: pnt1(1) = 0pnt2(0) = 400 + 2 * pi * cylin1_r: pnt2(1) = 0set line_obj = thisdrawing.modelspace.addline(pnt1, pnt2)pnt1(0) = 400 + 2 * pi * cylin1_r: pnt1(1) = cylin1_hset line_obj = thisdrawing.modelspace.addline(pnt1, pnt2)pnt2(0) = 400: pnt2(1) = cylin1_hset line_obj = thisdrawing.modelspace.addline(pnt1, pnt2)pnt1(0) = 400: pnt1(1) = 0set line_obj = thisdrawing.modelspace.addline(pnt1, pnt2)for phi = 0 to 2 * pi step 0.01 x = cylin1_r * cos(phi) y = cylin1_r * sin(phi) delta1 = cylin2_r 2 - (x - dist) 2 if delta1 = 0 then z = cen_hi + sqr(delta1) pnt(0) = 400 + cylin1_r * phi: pnt(1) = z set point_obj = thisdrawing.modelspace.addpoint(pnt) z = cen_hi - sqr(delta1) pnt(1) = z set point_obj = thisdrawing.modelspace.addpoint(pnt) end ifnext phiend sub利用以上程序,在autocad平台中生成的两垂直交错圆柱相贯线的展开图如图5.3所示。(a) 水平圆柱展开图 (b) 竖直圆柱展开图图5.3 在autocad环境下生成的相贯线展开图14结束语经过两个月的工作,基于autocad 2004的圆柱与圆柱实体相贯及展开图设计已经完成。本次设计主要涉及了autocad 2004的相关知识及autocad vba编程的诸多要领。设计中涉及的许多问题,更是对以前所学的知识的回顾及在过去的三年中学到知识的系统总结,这次设计对我们将来的工作有一定的帮助。在设计中,我们积极查阅资料,细心钻研各个技术细节,小组成员互相合作,协调一致地完成了小软件的开发与调试,也让我们明白了在设计中考虑问题应该全面,以及需要互相合作的精神。在设计中既锻炼了我的动手能力,又学会查阅资料,提炼需要的信息。本次设计是aut

温馨提示

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

评论

0/150

提交评论