




免费预览已结束,剩余51页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录摘 要1 AutoCAD的二次开发简介11.1 CAD开发工具简介11.2 什么是VBA21.3 VBA的优势31.4 课题研究的目标及意义32 图形及参数分析42.1 图形分析42.2 参数分析53 编程过程63.1 设计窗体63.2 画螺母零件图83.3 画丝杠零件图173.4 画滚珠丝杠装配图233.4 窗体引用模块程序244 结果分析255 总 结25致谢语26参考文献27Abstract28附 录29基于VBA滚珠丝杠螺母副CAD二次开发摘 要 伴随中国机械设计制造的发展,各类研究层出不穷,AutoCAD 的二次开发技术越加成熟,也开始得到广泛的应用。本篇论文以AutoCAD 二次开发程序设计语言VBA为工具,以滚珠丝杠副零件图与装配图为对象,全面讨论VBA编程语言进行滚珠丝杠副AutoCAD二次开发的过程,详细描述了VBA编程思路与编程方法。这种VBA语言开发的CAD程序用来完成计算机自动计算分析、作图,能极大地提高绘图图的工作效率,为滚珠丝杠副的设计提供了重要的帮助。关键字 CAD VBA 滚珠丝杠 双螺母 比例缩放 杨敏:基于VBA滚珠丝杠螺母副CAD二次开发1 AutoCAD的二次开发简介1.1 CAD开发工具简介工程CAD软件在工程设计中已经成为不可缺少的强有力工具。许多设计单位及科研院所都推出了各自的CAD软件,涉及各专业。一个好的CAD软件必须有一个好的图形支撑系统,Autdesk 公司开发的AutoCAD系列软件一直都是CAD市场中的主流产品,并提供有二次开发平台。随着AutoCA应用的日益普及,在其上进行二次开发的工具也不断更新,从早期的AutoLISP,ADS,DCI 到现在流行的VisualLisp、Object ARX、VBA等,均可十分方便的进行CAD二次开发。我国九十年代初,国产CAD软件曾有一段蓬勃发展的时期,各类中国本土CAD产品,譬如高华CAD,大恒CAD,德赛 CAD,金银花CAD,华正电子图板等。但伴随十年的光阴流逝,最后我们却发现一个可悲伤的现实,就是当年各类CAD产品现今已经不可寻得,只有AutoCAD仍可看见,从R14,R2000,一直到现在的AutoCAD 2002,2004,一路高歌猛进,垄断了中国二维CAD市场90的市场份额。原先叱咤风云的国产CAD软件厂商要么成了 AutoCAD的代理,要么跟随AutoCAD做二次开发,为他人做嫁衣,还有的已经转型到PDM,ERP领域。仍然在坚持做CAD的已经寥寥无几。一个CAD系统由硬件与软件这两部分组成,要想充分发挥CAD的作用,就需要同时有性能优良硬件和功能强大的软件。先进的CAD系统的硬件由计算机及其外围设备和网络组成。计算机分为大型机,中、小型机、工作站和微机四大类。目前应用较多的是CAD工作站,国内主要是微机和工作站。在现代大型企业中,单机CAD的工作方式已经逐渐不能满足要求,CAD技术一般都在网络环境下使用。 CAD系统的软件主要包括支撑软件和应用软件。支撑软件除了Windows这样的操作系统外,主要指的是图形支撑软件平台,目前比较流行的图形支撑软件有美国AutoDesk公司的AutoCAD。本光盘中附送的中望CAD软件也是国内比较流行的图形支撑软件平台。另一类是应用软件,它是根据本领域工程特点,利用支撑软件系统开发的解决本工程领域特定问题的应用软件系统。目前在二维CAD软件方面,国内已经开发出众多的应用软件,主要包括基于AutoCAD平台和自主平台(如中望CAD)两类应用软件。应用软件的性能对CAD的效率有极大的影响,所以应特别重视它的开发和应用。如今主流CAD软件分别有Unigraphics(UG)、SOLIDEDGE、AutoCAD、 Pro/Engineer、.国产CAD软件等。不同的软件有不同的优势。在UG中,优越的参数化和变量化技术与传统的实体、线框和表面功能结合在一起,最早应用于美国麦道飞机公司。它是从二维绘图、数控加工编程、曲面造型等功能发展起来的软件。SOLIDEDGE是真正Windows软件。SOLIDEDGE与MicrosoftOffice兼容,与Windows的OLE技术兼容,这使得设计师们在使用CAD系统时,能够进行Windows下字处理、电子报表、数据库操作等。AutoCAD是Autodesk公司的主导产品,有强大的二维功能,如绘图、编辑、剖面线和图案绘制、尺寸标注以及二次开发等功能,同时有部分三维功能。Pro/Engineer单一数据库、参数化、基于特征、全相关的概念改变了机械CAD/CAE/CAM的传统观念,这种全新的概念已成为当今世界机械CAD/CAE/CAM领域的新标准。Pro/Engineer软件能将设计至生产全过程集成到一起,让所有的用户能够同时进行同一产品的设计制造工作,即实现所谓的并行工程。而近年来,我国CAD技术的开发和应用取得了长足的发展,除对许多国外软件进行了汉化和二次开发以外,还诞生了不少具有自主版权的CAD系统,如中望CAD,CAXA电子图版,开目CAD等,由于这些软件价格便宜,软件设计也考虑到我国国情和标准,也受到了广泛的欢迎,在市场上蓬勃发展。不过由于国外CAD/CAM软件出现得较早,抢得市场开发先机,所以它们发展比较成熟,国产CAD软件与之比较还有一定差距。1.2 什么是VBA直到20世纪90年代初期,使用应用程序自动化还是充满挑战的领域。对于每个自动化的应用程序,人们不得不学习一种不同的自动化语言。例如可以用Excel的宏语言使Excel自动化,使用Word Basic使Word自动化等。于是微软决定让它开发的应用程序使用一种通用的自动化语言,这就是VBA了,全名Visual Basice For Application,可以认为VBA是非常流行的程序开发语言VB的子集,但人们禁不住会问:VBA究竟是什么?更确切的讲,它是一种自动化语言,可以使常用的程序自动化,可以创建自定义的解决方案。打开AutoCAD软件,可以菜单中选择“工具”“宏”“Visual Basice编辑器”。VBA编辑器界面如图所示11所示。图11 VBA编辑器界面1.3 VBA的优势Visual Basice For Application是在Visual Basice的基础上发展而来的,用来执行任务的一个编程序环境。使用VBA来开发CAD,用户可以随意的定制CAD的应用程序。VBA有如下几个主要优势:(1) 可视化编程环境。这一点不必过多的叙述,只要用过VB的用户,都喜欢VB那方便的可视化编程环境。(2) 数据集成与共享。事实上,这里是指运用VBA进行AutoCAD的开发,则这些数据可以与其他的VBA应用程序直接共享,因此,VBA提供了高质量的用户编程能力。(3) 扩大AutoCAD集成用户工具的能力。它为用户访问AutoCAD软件的多种技术厂家提供了新的选择和新的开发机会。可以按照用户所需要的工作方式开发应用程序,也可以从战略上考虑开发基于AutoCAD的应用程序。(4) 可以与其他Windows的应用软件方便的进行交互,程序设计比较容易学会。1.4 课题研究的目标及意义本课题选用滚珠丝杠螺母副为研究对象,通过VBA编程,生成独立的菜单,弹出对话框,接受用户输入的数据,自动运算,自动绘图,使繁琐的绘图标注与复杂的分析计算由程序来完成,快捷方便,实现图形参数化及智能化,分析计算与绘图一体化,提高产品设计的自动化。且能加强对AutoCAD二次开发的研究。编程是一个系统的过程,需要开发人员的逻辑设计,使结构优化,滚珠丝杠螺母副其零件图参数可以根据用户自行设定,调用AutoCAD本身具有的工具命令,同时在窗体文字框中输入数据,使计算机完成自动计算数据,生成有带参数化的完整零件图,用户可自行改变各视图中图形尺寸,实现制图的自动化。2 图形及参数分析2.1 图形分析21是本课题研究对象滚珠丝杠螺母副的零件图。图21 滚珠丝杠螺母副零件图22是本课题研究对象滚珠丝杠螺母副的装配图。图22 滚珠丝杠螺母副装配图分析:图21和22所示为滚珠丝杠螺母副的螺母副零件图、丝杠零件图以及两者的装配图,用相应的VBA命令编写程序,完成直线、圆弧、曲线、剖面线填充、线性标注、对齐标注等作图步骤。根据螺纹有粗细实线之分,设置线条颜色的不同来表示。为了更加明确的展示螺母副的内部结构,又因为螺母副的对称性,用剖视图进行表示较为直观合理。丝杠的长度偏长时,可采用省略画法,因此本程序中根据丝杠数据的不同,进行自动处理,根据丝杠长度不同,在一比一画法和省略画法间选择其一。另外为表示丝杠的导程与刚球直径,须在丝杠上实画出部分外形特征来进行表示。画图时用到相应参数去计算出点、直线、圆的尺寸和位置。在自己的草稿图纸上先标注一些基本点,以方便理清思路。2.2 参数分析表21是滚珠丝杠螺母副液压机上横梁零件图中的各参数明细。序号参数名含义初值(mm)类型1d0公称直径40一般参数(可变参数)2B.如图所示18一般参数(可变参数)3L1如图所示193一般参数(可变参数)4D1如图所示63一般参数(可变参数)5D2如图所示20一般参数(可变参数)6L2如图所示40一般参数(可变参数)7D3如图所示108一般参数(可变参数)8D4如图所示85一般参数(可变参数)9D5 如图所示11一般参数(不变参数)10D6如图所示18一般参数(不变参数)11H如图所示11一般参数(不变参数)12D8防尘圈直径52一般参数(不变参数)13X 螺母X方向倒角2模块匹配参数14Y螺母Y方向倒角2一般参数(可变参数)15dq1垫圈位置90一般参数(可变参数)16dq2垫圈深度6一般参数(可变参数)17f2防尘圈厚度10模块匹配参数18d1丝杠外径39.5一般参数(可变参数)19 d2 丝杠底径34.3一般参数(可变参数)20L丝杠长度1200一般参数(可变参数)21L4丝杠螺纹长度800一般参数(可变参数)22L5丝杠螺纹开始位置200一般参数(可变参数)23A丝杠螺纹倾斜角度30一般参数(可变参数)24L0基本导程10一般参数(可变参数)25Dw刚球直径7.144一般参数(可变参数)表21 滚珠丝杠螺母副参数明细3 编程过程通过一个对话框来进行绘图,需要设计一个窗体,将数据引入模块中的程序当中。我们需要先添加一个标准模块,先书写下列代码:Option ExplicitGlobal B As DoubleGlobal D3 As DoubleGlobal D4 As DoubleGlobal D2 As DoubleGlobal L2 As DoubleGlobal D6 As DoubleGlobal D5 As DoubleGlobal h As DoubleGlobal D8 As DoubleGlobal D1 As DoubleGlobal line(0 To 50) As AcadLineGlobal L1 As DoubleGlobal d0 As DoubleGlobal X As DoubleGlobal Y As DoubleGlobal dq1 As DoubleGlobal dq2 As DoubleGlobal f2 As DoubleGlobal dx1 As DoubleGlobal line1 As AcadLineGlobal dx2 As DoubleGlobal L As DoubleGlobal L0 As DoubleGlobal L4 As DoubleGlobal A As DoubleGlobal L5 As DoubleGlobal Dw As Double此定义变量的公式为:Global 变量名 As 变量类型用Global定义变量,则范围用于整个窗体。3.1设计窗体在VBA IDE环境下设计窗体,在窗体上分布25个标签控件,名字分别为“Label1”、 “Label2”、 “Label3”、 “Label4”、 “Label5”、 “Label6”、 “Label7”、 “Label8”、 “Label9”、 “Label10”、 “Label11”、 “Label12”、 “Label13”、 “Label14”、 “Label15”、 “Label16”、 “Label17”、 “Label18”、 “Label19”、 “Label20”、 “Label21”、 “Label22”、 “Label23”、 “Label24”、 “Label25”,标题分别为“B”、 “D3”、 “L2”、 “D2”、 “D6”、 “D5”、 “h”、 “D8”、 “D1”、 “d0”、 “D4”、 “L1”、 “倒角X距离”、 “倒角Y距离”、 “防尘圈深度”、 “垫圈位置”、 “垫圈厚度”、 “d1”、 “d2”、 “丝杠长度”、 “刚球直径”、 “螺纹长度”、 “螺纹开始位置”、 “螺纹倾斜角度”、 “丝杠导程”;分置25个文字框控件,名称分别为“B”、 “D3”、 “L2”、 “D2”、 “D6”、 “D5”、 “h”、 “D8”、 “D1”、 “d0”、 “D4”、 “L1”、 “X”、 “Y”、 “f2”、 “dq1”、 “dq2”、 “dx1”、 “dx2”、 “L”、 “Dw”、 “L4”、 “L5”、 “A”、 “L0”;最后布置四个命令按钮,名称分别为“CommandButton1”、 “CommandButton2”、 “CommandButton3”、 “CommandButton4”,标题分别为“螺母副零件图”、“丝杠零件图”、“滚珠丝杠装配图”、“完成”。为了了程序运行时,有一个初使化值,要设置窗体初始化代码,各个按钮控件则要引用后面模块中所设计的程序。(1) 初始化代码:Private Sub UserForm_Initialize()B.Value = 18L1.Value = 193d0.Value = 40D1.Value = 63D2.Value = 58L2.Value = 20D3.Value = 108D4.Value = 85D5.Value = 11D6.Value = 18h.Value = 11D8.Value = 52X.Value = 2Y.Value = 2dq1.Value = 90dq2.Value = 6f2.Value = 10dx1.Value = 39.5dx2.Value = 34.3L.Value = 1200L4.Value = 800L5.Value = 200A.Value = 30L0.Value = 10Dw.Value = 7.144End Sub设置初使化代码,在窗体上按右键选择目录中的“查看代码”,然后按右上角的拉条选择Initialize,则可以设置初始化代码。(2) 命令“完成”按钮代码:Private Sub CommandButton4_Click()Unload MeEnd Sub设置“完成”按扭的代码,将鼠标放在“完成”按扭控件上,按右间选择目录中的“查看代码”,则可设置“完成”按扭的初始化代码。加载并运行程序。即可得到如图3-1所示的对话框。图31 参数输入对话框3.2 画螺母零件图根据观察,螺母是一个对称的图形,将其剖开,画剖视能更加直观的观察其结构。在这个设计过程中,我们需要定点,画直线、圆,剖面用剖面线表示,最后对画好的零件进行标注。下面就对这些进行介绍。(1) 定义变量Dim 变量名 as 数据类型(2) 定点Dim 变量名(0 to 2)as double变量名(0)= X变量名(1)= Y变量名(2)= ZDouble为双精度数据类型,X为数据点在X轴上的投影位置,Y为数据点在Y轴上的投影位置,Z为数据点在Z轴上的投影位置。(3) 画直线Dim 直线名 as acadline当需要同时定义多个直线时,可以用dim 直线名(0 to 数字) as acadline,直线名(数字)代表一条直线。直线定义之后,就可以画这条直线Set 直线名 = thisdrawing.modelspace.addline(数据点1,数据点2)(4) 画圆Dim 圆名字 as acadcirle也可以用定义多条直线的方法来定义圆对象Set 圆名字 = thisdrawing.modelspace.addcircle(中心点,边长)注意的是边长不能直接打数字,且边长类型是双精度型。开始画螺母副零件图,先在模块中建立螺母副绘图程序,在VBA中建立程序的公式为:Sub 程序名程序过程End sub所创建的螺母副零件图程序如下所示:Sub 螺母副(B, L1, d0, D1, D2, L2, D3, D4, D5, D6, h, D8, X, Y, dq1, dq2, f2, dx1)End sub括号中表示程序运行时候,从外部引入的变量。 开始设计螺母副的程序,先画中轴线。画直线与点的方法前面已经叙述,此处不加赘叙。定义好两个点后,按照绘制普通直线的方法,先画一条直线。dian1(0) = 50dian1(1) = 200dian1(2) = 0dian24(0) = 45dian24(1) = dian1(1) + 1 / 2 * D3dian24(2) = 0dian23(0) = 400dian23(1) = dian1(1) + 1 / 2 * D3dian23(2) = 0Set line1 = ThisDrawing.ModelSpace.AddLine(dian24, dian23)ThisDrawing.Application.ZoomAllOn Error Resume Next绘制好直线以后,这里设置中轴线颜色为红色,为细点画线,这样才符合绘图的要求,且看上去比较美观醒目,在这里就需要定义线的特性。通过定义线的特性,就能够改变线的颜色和线型。先定义线型,我们要使用一种线型,就先要将这种线型加载,才能够进行使用。加载线型的方法如下所示:Dim linetypename As Stringlinetypename = CENTERThisDrawing.Linetypes.Load linetypename, acad.linCENTER为加载线型的名称,也就是加载这类线型,会画出细点画线。加载好线型之后,就可以开始设置线型了,公式为:线名字.Linetype = “加载线型名字”定义线颜色的公式为:线名字.color = 所要定义的颜色而由于缩放比例的不同,有时候会因为比例不当,点画线看起来跟实线一样,就需要定义比例,所用公式为:线名字.LinetypeScale = 比例要定义红色的点画线,且能够在图中清晰的分辨,于是所写程序如下所示:line1.color = acRedline1.Linetype = CENTER(改为CENTER)line1.LinetypeScale = 5line1.Update这样中轴线就画好了。我们画滚珠丝杠螺母副时候,对这个螺母副,可以设计倒角,倒角的大小可以自己设定,在这里可以自己设定两个变量X、Y,X是倒角X方向上的距离,Y是倒角Y方向的距离。在本程序中,X、Y为两个变量,在模块最开始就已经定义好,适用于整个模块。而X、Y的值,在此处不用定义,可以在窗体中引入。绘制倒角时候,使用的程序如下所示:dian2(0) = dian1(0) + Xdian2(1) = dian1(1)dian2(2) = 0dian3(0) = dian1(0)dian3(1) = dian1(1) + Ydian3(2) = 0Set line(0) = ThisDrawing.ModelSpace.AddLine(dian2, dian3)ThisDrawing.Application.ZoomAll同画倒角的方法相同,利用点的定位,可以画好外部轮廓。点4在点1的X轴正方向上,距离为二分之一D3,利用绘直线的公式,则可绘制出这条直线,程序操作如下所示:dian4(0) = 50dian4(1) = dian1(1) + 1 / 2 * D3dian4(2) = 0Set line(1) = ThisDrawing.ModelSpace.AddLine(dian3, dian4)ThisDrawing.Application.ZoomAll根据同样的方法,则可以绘出螺母的轮廓,具体各部分的变量可参考图2-2与表2-1。螺母轮廓如图3-2所示:图32 螺母的轮廓图由于内螺纹大径要用细实线表示,我们这里将线条颜色改为蓝色,以示区别,改颜色的方法跟上面改线颜色为红色一样,只须将颜色由acRed改为acBlue。方法如下所示:Lin3.color=acBlueLin4.color=acBlueLin5.color=acBlueLin6.color=acBlue画好内螺纹大径之后,如图3-3所示:图33 有螺纹大径的螺母轮廓图而由于螺母为剖视图,剖开部分用剖面线,于是我们就要学习填充剖面线,使绘图符合规范与要求,也能使看的人能够清楚明白。画剖面线的时候,就要先定义边界,这个边界可以是圆,也可以是多线段,确定好了之后,就可以利用公式创造剖面线了。Dim 剖面线名字 as acadhatch然后要对剖面线的特性进行设置,才能生成不同的剖面线图案Dim 剖面线边界名字(0 to 数字) as acadentitySet剖面线边界名字(0) = ThisDrawing.ModelSpace.AddLine(数据点1, 数据点2)Set剖面线边界名字(数字) = ThisDrawing.ModelSpace.AddLine(数据点X, 数据点1)剖面线名字.AppendOuterLoop (剖面线边界名字)然后一个剖面线就完成了下面进行实例讲解,如图34所示,要将标记了数字1的区域变成剖面线。图33 螺母图数字1区域先定义剖面线名字:Dim yy4 as acadhatch再对剖面线的特性进行设置,我们这里用倾斜的细实线填充。Dim name As Stringname = ANSI31Dim bs As Booleant = 0Set yy4 = ThisDrawing.ModelSpace.AddHatch(t, name, bs)这样就可以保证设置好了之后,显示的剖面线是均匀倾斜的细实线填充。然后开始定义边界,也就是围成1区域的所有实线组成的边界,定义边界如下所示:Dim side3(0 To 9) As AcadEntitySet side3(0) = ThisDrawing.ModelSpace.AddLine(dian16, dian17)Set side3(1) = ThisDrawing.ModelSpace.AddLine(dian17, dian10)Set side3(2) = ThisDrawing.ModelSpace.AddLine(dian10, dian11)Set side3(3) = ThisDrawing.ModelSpace.AddLine(dian11, dian27)Set side3(4) = ThisDrawing.ModelSpace.AddLine(dian27, dian28)Set side3(5) = ThisDrawing.ModelSpace.AddLine(dian28, dian29)Set side3(6) = ThisDrawing.ModelSpace.AddLine(dian29, dian30)Set side3(7) = ThisDrawing.ModelSpace.AddLine(dian30, dian26)Set side3(8) = ThisDrawing.ModelSpace.AddLine(dian26, dian25)Set side3(9) = ThisDrawing.ModelSpace.AddLine(dian25, dian16)最后剖面线引用边界,就可以确定范围,如下所示: yy4.AppendOuterLoop (side3)yy4.Evaluate画好的剖面线如图35所示:图35 区域1填充剖面线后螺母图按照同样的办法,对其他几个部分进行剖面线填充,完成的结果如图36所示:图36 填充剖面线后螺母图接下来,我们应该对这个螺母进行标注,以便看的人能一目了然的明白这个零件的尺寸,方便简单。但有时零件由于过大或者过长,进行了简略画法,那么标注时候,就不能以图上表示的尺寸为准,而要以设计的原物尺寸为准。Dim 标注名字 as acaddimaligned选择不同的标注,定义的类型也就不一样,本例中是对齐标注。Set 标注名字= thisdraing.modelspace.adddimaligned(尺寸线起点,尺寸线终点,文字位置)设计程序如下所示:Dim sb(3 To 20) As AcadDimRotateda5(0) = dian1(0) + 1 / 2 * Ba5(1) = dian1(1) - 10a5(2) = 0Set sb(4) = ThisDrawing.ModelSpace.AddDimRotated(dian3, dian5, a5, 0)修改标注文字,使我们要表达的尺寸跟图形上实际尺寸不同,则使用程序如下所示:sb(4).TextOverride = Bsb(4).UpdateZoomAll画好的结果如图37所示。图37 螺母尺寸标注图一然后按照同样的方法,对螺母其他部位进行标注,则画好之后,如图38所示。图37 螺母尺寸标注图二这样,滚珠丝杠螺母副的主视图就画好了。由于滚珠丝杠螺母副端面的复杂,需要再画一个左视图,来表示端面圆分布的位置,以便更直观的表达。Dim 圆名字 as acadcirle也可以用定义多条直线的方法来定义圆对象Set 圆名字 = thisdrawing.modelspace.addcircle(中心点,边长)注意的是边长不能直接用数字,且边长类型是双精度型。程序如下所示:Dim hy(0 To 2) As DoubleDim bj1 As Doublehy(0) = dian12(0) + 130hy(1) = dian12(1)hy(2) = 0Dim yuan(0 To 20) As AcadCirclebj1 = 1 / 2 * D3Set yuan(0) = ThisDrawing.ModelSpace.AddCircle(hy, bj1)这样就画好一个圆了,画其他圆的方法,都如这个圆一样,确定好中心点和边长,再利用公式,就可以画圆了。这部分过程在此省略。因为是左视图,从左不能看见的圆用点画线表示。圆改变线型和直线同样。yuan(1).Linetype = CENTERyuan(1).LinetypeScale = 5yuan(2).Linetype = CENTERyuan(2).LinetypeScale = 5yuan(4).Linetype = CENTERyuan(4).LinetypeScale = 5内螺纹的画法,大径是只画四分之三,且以点画线表示,则需要我们用圆弧进行绘画。圆弧的画法也和圆一样,需要定义圆心和半径,除此之外,还需要定义圆弧开始和结束的弧度位置。绘制圆弧如下所示:Dim ar As AcadArcDim start As DoubleDim en As Doublestart = 10en = 230bj6 = 1 / 2 * dx1 + 2Dim start1 As DoubleDim en1 As Doublestart1 = start * 3.141592 / 180#en1 = en * 3.141592 / 180#Set ar = ThisDrawing.ModelSpace.AddArc(hy, bj6, start1, en1)画螺母的左视图,这里有几个几何分布的小圆,我们可以画好一个后,其他用阵列。螺母部分左视图如图38所示。图38 螺母左视图一要进行阵列的是大圆内部上方两个小圆。阵列要定义所要阵列的个数,阵列的角度,阵列的圆。需要注意的是,在VBA中阵列圆,个数比实际个数要加一,否则会比你所想要的个数少一个圆。如果阵列是均匀分布在一个圆中,则阵列的角度为360度,这里用数字进行表示,180度折算数字为3.14,则360度为2*3.14。阵列公式为:阵列=被阵列的圆.ArrayPolar(阵列数目, 阵列角度, 阵列圆心)阵列两个圆如下程序所示:Dim shumu As StringDim jiaodu As Doubleshumu = 7jiaodu = 2 * 3.14Dim retobj As VariantDim retobj1 As Variantretobj = yuan(8).ArrayPolar(shumu, jiaodu, hy)retobj1 = yuan(9).ArrayPolar(shumu, jiaodu, hy)最后阵列结果如图39所示。图39 螺母左视图二将主视图与左视图画好,则螺母零件图就完成了。3.3 画丝杠零件图由于丝杠的长度过长的时候,会采用省略画法,因此本设计中,设计了两个不同的程序,丝杠长度在400mm以上时候采用省略画法,小于400mm时候采用1:1的比例。为了直观的表达丝杠外形,本程序画出了部分丝杠的外形特征,表现出螺纹的倾斜角度,导程的长短与钢珠的直径。这里则要用到三角函数。函数公式:Sin(角度)丝杠零件图主程序:Sub 丝杠(L, L0, L4, L5, dx1, dx2, Dw, A)If L 400 ThenCall a1(L, L0, L4, L5, dx1, dx2, Dw, A)ElseCall b1(L, L0, L4, L5, dx1, dx2, Dw, A)End IfEnd Sub我们由主函数可以看出,当丝杠的长度大于400mm时候,引用al这个子程序,当丝杠程度小于或者等于400mm时候,引用bl子程序绘画丝杠,这样我们就能够根据丝杠长度的不同,而选择丝杠不同的方法。下面我们介绍子程序al与bl。开始创建子程序al子程序:Sub a1(L, L0, L4, L5, dx1, dx2, Dw, A) End subbl子程序:Sub a1(L, L0, L4, L5, dx1, dx2, Dw, A) End sub画出了部分丝杠的外形特征,因为要表现出螺纹的倾斜角度,导程的长短与钢珠的直径。这里则要用到三角函数。我们设置一个变量A,从外部引入,代表螺纹的倾斜角度。三角函数在VBA中使用公式如下:Sin(A)Cos(A)Tan(A)Sin(A)代表角度为A时候,正弦函数的值。Cos(A)代表角度为A时候,余弦函数的值。Tan(A) 代表角度为A时候,正切函数的值。有了三角函数公式之后,就可以画部分的的丝杠外形特征了。绘图时候,所画部分要能让人清楚分辨导程与刚珠直径,丝杠螺纹按刚球中心画黄色虚实线,线型和颜色设置的方法前面已经讲述,所用程序如下所示:aa5 = dx1 / Tan(A)dian21(0) = dian20(0) - aa5dian21(1) = dian20(1)dian21(2) = 0Set line(10) = ThisDrawing.ModelSpace.AddLine(dian20, dian21)ThisDrawing.Application.ZoomAllSet line(11) = ThisDrawing.ModelSpace.AddLine(dian19, dian21)ThisDrawing.Application.ZoomAllDim aa6 As Doubleaa6 = (dx1 - dx2) / 2 / Tan(A)dian22(0) = dian19(0) - aa6dian22(1) = dian14(1)dian22(2) = 0dian23(0) = dian21(0) + aa6dian23(1) = dian15(1)dian23(2) = 0Dim line11 As AcadLineDim line12 As AcadLineSet line11 = ThisDrawing.ModelSpace.AddLine(dian14, dian22)ThisDrawing.Application.ZoomAllSet line12 = ThisDrawing.ModelSpace.AddLine(dian15, dian23)ThisDrawing.Application.ZoomAllline11.color = acYellowline12.color = acYellowdian24(0) = dian19(0) + Dwdian24(1) = dian19(1)dian24(2) = 0dian25(0) = dian21(0) + Dwdian25(1) = dian21(1)dian25(2) = 0dian26(0) = dian19(0) + Dw * 1 / 2dian26(1) = dian19(1)dian26(2) = 0dian27(0) = dian21(0) + Dw * 1 / 2dian27(1) = dian21(1)dian27(2) = 0Set line(13) = ThisDrawing.ModelSpace.AddLine(dian24, dian25)ThisDrawing.Application.ZoomAllDim hy(0 To 20) As AcadArcDim star0 As DoubleDim en0 As DoubleDim star1 As DoubleDim en1 As DoubleDim star2 As DoubleDim en2 As DoubleDim star0r As DoubleDim en0r As DoubleDim star1r As DoubleDim en1r As DoubleDim star2r As DoubleDim en2r As DoubleDim g As Doubleg = 1 / 2 * Dwstar0 = 180en0 = 0star0r = star0 * 3.141592 / 180#en0r = en0 * 3.141592 / 180#Set hy(0) = ThisDrawing.ModelSpace.AddArc(dian26, g, star0r, en0r)ZoomAllSet hy(1) = ThisDrawing.ModelSpace.AddArc(dian27, g, en0r, star0r)ZoomAlldian29(0) = dian19(0) + L0dian29(1) = dian19(1)dian29(2) = 0dian28(0) = dian21(0) + L0dian28(1) = dian21(1)dian28(2) = 0Set line(14) = ThisDrawing.ModelSpace.AddLine(dian29, dian28)ThisDrawing.Application.ZoomAllSet line(15) = ThisDrawing.ModelSpace.AddLine(dian24, dian29)ThisDrawing.Application.ZoomAllSet line(16) = ThisDrawing.ModelSpace.AddLine(dian25, dian28)ThisDrawing.Application.ZoomAllDim line17 As AcadLineSet line17 = ThisDrawing.ModelSpace.AddLine(dian26, dian27)ThisDrawing.Application.ZoomAllline17.color = acYellowline17.Linetype = CENTERline17.LinetypeScale = 5dian30(0) = dian29(0) + Dwdian30(1) = dian29(1)dian30(2) = 0dian31(0) = dian28(0) + Dwdian31(1) = dian28(1)dian31(2) = 0dian32(0) = dian29(0) + Dw * 1 / 2dian32(1) = dian29(1)dian32(2) = 0dian33(0) = dian28(0) + Dw * 1 / 2dian33(1) = dian28(1)dian33(2) = 0Set hy(2) = ThisDrawing.ModelSpace.AddArc(dian32, g, star0r, en0r)ZoomAllSet hy(3) = ThisDrawing.ModelSpace.AddArc(dian33, g, en0r, star0r)ZoomAllSet line(18) = ThisDrawing.ModelSpace.AddLine(dian30, dian31)ThisDrawing.Application.ZoomAllDim line21 As AcadLineSet line21 = ThisDrawing.ModelSpace.AddLine(dian32, dian33)ThisDrawing.Application.ZoomAllline21.color = acYellowline21.Linetype = CENTERline21.LinetypeScale = 5这部分画好之中,程序运行结果如图310所示:图310 丝杠螺旋滚道图外螺纹通常用简画法,比较节约时间,详细绘制耗费时间,但简画又不能够对丝杠的结构进行详细的表达,画出部分螺纹结构,不仅能对丝杠的结构进行明确的表达,也同样能节约时间。在al子程序中,横向长度为这一段长度与全长的比值乘以400L4的长度,在al程序中则表示为:L4L*400L5的长度,在al程序中则表示为:L5L*400L的长度,在al程序中则表示为:400横向的尺寸则保持不变,这样就可以保证,无论丝杠有多长,画出的图形长度都为400mm。而在这里,为了表示丝杠相同的部分被省略画掉,要将丝杠从中间断开,用两条点画线隔断。所用的程序如下所示:Set line35 = ThisDrawing.ModelSpace.AddLine(dian56, dian57)ThisDrawing.Application.ZoomAllSet line36 = ThisDrawing.ModelSpace.AddLine(dian58, dian59)ThisDrawing.Application.ZoomAllline35.color = acYellowline35.Linetype = CENTERline35.LinetypeScale = 5line36.color = acYellowline36.Linetype = CENTERline36.LinetypeScale = 5画
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产业研究报告-2025年中国环网柜行业发展现状、市场规模、投资前景分析
- 中国芦荟种植行业发展前景预测及投资方向研究报告
- 2025年中国高密度薄板行业市场发展前景及发展趋势与投资战略研究报告
- 中国CPI膜行业市场调查报告
- 成卷梳棉机行业深度研究分析报告(2024-2030版)
- 年产2万吨覆膜砂新建项目可行性研究报告
- 中国电力电子元件市场深度分析及行业前景展望报告
- 2025年中国充电电池行业发展趋势预测及投资战略咨询报告
- 2025年中国变频微波炉行业市场发展监测及投资潜力预测报告
- 2025-2030年中国组合式冷藏库行业深度研究分析报告
- 企业员工保密协议书范本
- 居住区规划智慧树知到期末考试答案章节答案2024年湖南师范大学
- 公路防汛抢险应急演练脚本
- 2024年陕西西安市第一社会福利院西安市救助管理站招聘34人历年高频考题难、易错点模拟试题(共500题)附带答案详解
- 生态环境保护与可持续发展智慧树知到期末考试答案章节答案2024年浙江农林大学
- MH-T 5003-2016 民用运输机场航站楼离港系统工程设计规范
- 专题24 生物的进化-备战2024年中考《生物》复习全考点
- 中医治疗失眠课件
- 《家庭氧疗》课件
- 医疗器械运输管理制度范本
- GB/T 43492-2023预制保温球墨铸铁管、管件和附件
评论
0/150
提交评论