




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2010届学生毕业设计(论文)材料(四)学 生 毕 业 设 计(论 文)课题名称基于AutoCAD的三维弹簧模型自动生成器的开发与研究姓 名学 号院 系信息与计算机科学系专 业信息管理与信息系统指导教师2010年 05 月 28 日目 录摘 要1关键词1Abstract2Key Words21 系统概述11.1 系统开发的意义11.2 系统开发的目的11.3 系统指标22 系统分析22.1系统需求分析22.1.1 功能需求分析22.1.2 用户需求分析22.2系统开发平台和工具32.3 开发平台简介32.3.1 AutoCAD简介32.3.2 VBA简介42.3.3 ActiveX自动操作基础
2、 访问对象层次43 系统设计53.1 系统结构设计53.1.1 系统结构图53.1.2 系统流程图53.2 模块设计63.2.1 模块概述63.2.2 模块功能63.3 具体设计63.3.1 设计准备63.3.2 设计步骤74 VBA编程及测试94.1 编程思路94.2 窗体运行示例图94.3 源代码134.3.1 窗体程序源代码134.3.2 模块程序源代码214.4 调试和测试系统功能224.4.1 调试与测试224.4.2 其它问题及解决方案225 宏设计236 创建菜单23参考文献24致 谢25基于AutoCAD的三维弹簧模型自动生成器的开发与研究摘 要:课题采用VBA技术进行了Aut
3、oCAD的三维弹簧的二次开发。开发过程中使用参数化设计思想,阐述了参数化设计的特点以及表现形式,以及参数化设计的主要技术路线,同时对VBA系统中如何进行绘图的关键技术进行了分析。生成器采用VBA编写的参数化绘图程序,将弹簧所需的关键参数设置为变量,通过对变量进行赋值,自动计算出绘制标准件所需要的各点的坐标,调用绘图程序进行绘图,实现了弹簧的自动化绘制。生成器开发采用人机交互式界面,通过用户选择要绘制弹簧的参数,选择插入点,即可实现弹簧的绘制。生成器界面友好,结构简单,便于用户操作。通过系统的开发,大大提高了设计者的工作效率。关键词:AutoCAD二次开发;Auto VBA;三维弹簧The Th
4、ree-dimensional Spring Model Automatic Generator's Development and Research Based on AutoCAD Abstract: In the topic the VBA technology is used to carry on the AutoCAD Three-dimensional spring's re-development.In the process of performance the parametrization design concept is used to elabora
5、te the parametrization design's characteristic and the manifestation as well as the parametrization design's major technique route, At the same time i carry on the analysis to cartography the key technologies in the VBA system.The builder uses the parametrization complied by the VBA compilat
6、ion plotting program, the key parameter the spring needs to establish as the variable and the automatic computation of each spot coordinate plan spring need to carry on the evaluation to the variable,plotting program invocation carries on the cartography, making the spring automated drawed ,The buil
7、der development uses the man-machine interactive contact surface, the user chooses the spring and insertion point and input pantograph proportion and the degrees rotation to finish the spring drawing. The builder contact surface is friendly, the structure is simple, advantageous for the user operati
8、on.System's development has greatly raised designer's working efficiency.Key Words: AutoCAD second development; Auto Visual Basic for Application; Three-dimensional spring1 系统概述1.1 系统开发的意义 随着计算机技术的飞速发展,AutoCAD软件以其强大的功能在测绘行业中得到了普遍的应用。但AutoCAD是包括建筑、机械、测绘等多种行业在内的通用软件,工作当中略感不便。因此,针对AutoCAD进行二次开发
9、,以适合工程测量工作的需要显得很有必要,它能最大限度地满足用户的特殊要求,更方便、更规范、更专业的实现设计和绘图中的应用。由于弹簧能吸收振动和冲击能量, 且具有自动复位的功能, 所以弹簧广泛应用于液压阀门、车辆减振装置、冲压设备的复位机构和钟表等机械设备和仪表中。随着计算机技术的迅速发展, CAD/ CAM技术发展迅速, 出现了新的设计模式与生产模式。零件的设计已由手工转向计算机自动完成。因此对CAD三维的自动生成器的研究与开发在理论上来说是在CAD二维自动生成器的研究与开发上的一次升华,通过对三维自动生成器的开发与研究我们能够使CAD拥有更加强大的功能。三维模型自动生成器的实现对于减轻技术人
10、员的劳动 ,提高产品的设计质量 ,加快开发的速度具有十分重要的意义。在弹簧设计时,传统的人工设计过程存在着很多缺点: 步骤繁琐,工作量比较大并且容易出错,如不合适需从头开始,这样会浪费很多时间,工作效率低,成本高。由于弹簧的设计计算属常规设计,较适合CAD开发 ,因此利用CAD技术开发弹簧模型自动生成器是必要的 ,也是可行的。这样不但提高了设计质量, 减少设计工作量, 同时为现代高速、多变、中小批量生产的机械设计提供了必要的保障手段。1.2 系统开发的目的本系统的开发是对CAD软件功能的一个补充,利用内嵌于AutoCAD中的VBA对三维弹簧进行二次开发,将绘图过程用程序表示出来,既简化了设计过
11、程,又方便了设计人员。基于AutoCAD三维弹簧模型自动生成器的开发为用户提供了一种新的选择,能够满足客户的特殊要求。AutoCAD VBA 的工程及其VBA交互开发环境的功能是非常强大的,用这种方法进行三维弹簧辅助设计,方法简便快捷,易于掌握。更重要的是,应用此方法可以大大减少图形绘制的工作量,从而大幅度降低设计人员的劳动强度,提高设计速度和工作效率,也在一定意义上节省设计成本,提高经济效益。1.3 系统指标(1)基于AutoCAD软件工具,利用其自带的VBA编辑器,使用VBA开发语言,在AutoCAD软件用户界面提供创建三维弹簧模型的条件及选项,以便用户选择操作。(2)使用VBA语言编程,
12、在AutoCAD二维二次开发的基础上实现对当前AutoCAD图层上的不同参数的三维弹簧的自动生成。(3)用AutoCAD VBA开发一个菜单,使之集成到AutoCAD,增强AutoCAD的功能。2 系统分析 2.1系统需求分析 功能需求分析(1)AutoCAD的功用 一般意义上讲,AutoCAD是一个用于工程设计的软件。 广泛应用于机械、电子、土木、建筑、航空、航天、轻工、纺织等专业 ,是业界应用最广泛,功能最强大的通用型辅助设计绘图软件。 主要用于二维绘图,也具备有三维建模能力 。(2)AutoCAD的辅助设计功能 可以方便的查询绘制好的图形的长度、面积、体积、力学特性等。 提供在三维空间中
13、的各种绘图和编辑功能,具备三维实体和三维曲面的造型功能,便于用户对设计有直观地了解和认识 。 提供多种软件的接口,可方便的将设计数据和图形在多个软件中共享,进一步发挥各个软件的特点和优势 。(3)三维弹簧自动生成器的功用 可根据需要输入合适的参数自动生成三维弹簧。 更加切合现实的工程绘图的需要。 用户需求分析(1)计算机辅助设计的用户有其特定的目的,对CAD技术有不同的要求,应用情况也各异。近十年来,在CAD应用工程的推动下,我国计算机辅助设计技术应用越来越普遍,越来越多的设计单位和企业采用这一技术来提高设计效率、产品质量和改善劳动条件。(2)CAD技术的特点是涉及面广而复杂、技术变化快、竞争
14、激烈,而且投资大、风险高、产出高。现代有名的CAD/CAM软件都是规模巨大、功能众多、系统复杂,所以投资大、开发周期长,难以及时跟上硬件平台和开发环境的迅速发展,以及广大用户需求的变化和不断增长的要求。(3)在CAD弹簧设计过程中,操作复杂繁琐,工作量大,很浪费时间,是设计工作中不可忽视的一个方面。基于AutoCAD的三维弹簧模型生成器的开发就能够满足用户这方面的要求。2.2系统开发平台和工具本系统可使用的开发工具为VBA、LISP、VB、VC、C语言。C语言并不是可视化开发语言,不提供用户界面;VB、VC语言作为可视化开发语言,但是和C语言一样,并未集成在AutoCAD中,开发后使用必须通过
15、一个接口才能实现;虽然LISP语言集成于AutoCAD中,但是它作为一种表语言,使用起来复杂,调试过程中难以发现问题,同时不提供可视化界面,无法进行人机界面交互;相比之下VBA作为一种自动化语言,不仅集成在AutoCAD中,提供可视化用户界面。因而最适合此次开发的工具为AutoCAD VBA语言。2.3 开发平台简介 AutoCAD简介AutoCAD是由美国Autodesk欧特克公司于二十世纪八十年代初为微机上应用CAD技术而开发的绘图程序软件包,经过不断的完善,现已经成为国际上广为流行的绘图工具。 AutoCAD具有良好的用户界面,通过交互菜单或命令行方式便可以进行各种操作。它的多文档设计环
16、境,让非计算机专业人员也能很快地学会使用。在不断实践的过程中更好地掌握它的各种应用和开发技巧,从而不断提高工作效率。AutoCAD具有广泛的适应性,AutoCAD是目前最为流行的工程图形处理软件,它不但具有完善的绘图功能、良好的用户界面,而且允许用户进行二次开发。AutoCAD的优点:(1)具有完善的图形绘制功能;(2)可以采用多种方式进行二次开发,满足不同用户的需求; (3)有强大的图形编辑功能;(4)可以进行多种图形格式的转换,具有较强的数据交换能力; (5)简单易学。AutoCAD的缺点:(1)软件本身的缺陷; (2)用户本身对AutoCAD的了解不够。 VBA简介 Visual Bas
17、ic for Application(VBA)是Microsoft面向最终用户的应用软件编程语言。它最早出现于Microsoft的Excel和Project中,如今VBA已成为VB和所有Office产品的组件。常用的绘图软件AutoCAD也已支持VBA作为二次开发工具。VBA是面向对象的程序设计语言,它继承了VB语言简单、功能强大、易学易用的特点,同时,由于VBA可与主程序在同一个内存空间内运行,大大提高了运行速度。VBA最大特点和最大优点是利用面向对象(OOP)的ActiveX Automation技术,使语言的引擎在技术上与开发环境分离。它的功能在很大程度上依赖于它的客户显露的Automa
18、tion接口。同时,由于VBA是基于ActiveX Automation技术,它可以使用任何Automation技术的应用程序共同工作。 2.3.3 ActiveX自动操作基础 访问对象层次在VBA内部访问对象层次是非常容易的。这是因为VBA是运行在AutoCAD进程的内部,所以不必通过附加的步骤与应用程序进行连接。 VBA通过ThisDrawing对象链接到当前AutoCAD进程的活动图形。通过使用ThisDrawing直接获得访问当前文档对象和所有相关的方法和属性以及所有在该层次中的其它对象。当使用全局工程,ThisDrawing通常指向AutoCAD中的活动文档。当用的是嵌入工程,Thi
19、sDrawing通常指向包含该工程的文档。3 系统设计3.1 系统结构设计 系统结构图三维弹簧模型自动生成器模块功能VBA代码Thisdrawing对象窗体设计VBA 代码模块窗体AutoCAD对象图3.1 系统结构图(1)AutoCAD对象:Thisdrawing对象含有控制当前图形的属性、方法以及操作图形过程的所有属性设置。例如设置当前图层的宽度为50个单位:Thisdrawing.width = 50 , 在一图形中直接调用特定对象的宏应该放置于Thisdrawing对象中,因为这些宏在运行时依赖于这些可用的特定对象。(2)窗体:UserForm 对象是一个窗口或对话框,用以构
20、成应用的用户界面部分。 UserForms 集合对象是一个集合,其部件代表应用程序中每个装入的 UserForm。UserForms 集合对象有一个 Count 属性,一个 Item 属性,及一个 Add 方法。Count 用来指定集合对象中的部件个数;Item(缺省成员)用来指定某个集合对象成员;而 Add 则用来在集合对象中放置一个新的 UserForm 部件。(3) 模块:标准模块用于放置那些与特殊的UserForm或图形文档无关的宏,你可以在各种不
21、同的其他应用程序中使用该标准模块中的代码,也可以在所访问的同一应用程序中的其他模块中调用该代码,从而避免代码的重复。 系统流程图 根据系统设计的具体情况,系统流程图如图3.2所示:弹簧生成器选择弹簧类型输入弹簧参数按钮选择绘图绘制图形退出生成器退出确定按钮选择退出图3.2 系统流程图3.2 模块设计3.2.1 模块概述主要是用于实现用户界面与CAD图形窗口的包,包括1个函数: axPoint2lspPoint函数。3.2.2 模块功能axPoint2lspPoint函数:封装API函数,将VBA的点转换为SendCommand用的点格式。3.3 具体设计3.3.1 设计准备(1)Ptcontr
22、ol()通过建立Ptcontrol()应用IF语句实现无穷多个点的坐标的控制。(2)Sendcommand命令:集成在AutoCAD中的VBA提供当前窗口操作方法,Sendcommand方法就是其中之一,此方法通过调用CAD中的命令,按CAD中命令步骤实现应用程序自动化,通过SendCommand方法来发送命令给AutoCAD并对其直接进行操作。(3)Thisdrawing语句通过Thisdrawing语句实现在模型空间直接绘制各种曲线。如绘制多段线:Dim ObjPline As Acad3DPolylineSet ObjPline = ThisDrawing.ModelSpace.Add3
23、DPoly(PtControl)(4)axPoint2lspPoint函数Public Function axPoint2lspPoint(ByVal pnt As Variant) As StringaxPoint2lspPoint = pnt(0) & "," & pnt(1) & "," & pnt(2)End Function3.3.2 设计步骤(1)在AutoCAD2004中,打开VB 编辑器对话框,创建一个新工程,保存在适当的位置,在工程中添加一个标准模块。(2)设计用户界面。图3.1 主界面设计图3.2 拉伸
24、弹簧界面设计图3.3 扭转弹簧界面设计图3.4 压缩弹簧界面设计(3)实现各个用户界面之间的切换。(4)编写程序。(5)创建下拉菜单。4 VBA编程及测试4.1 编程思路(1)获取主要参数值(2)计算控制点的坐标(3)绘制多段线(4)创建截面(5)拉伸得到三维模型(6)删除原来的对象(7)预置视点(8)初始化窗体4.2 窗体运行示例图图4.1 运行主窗体图4.2 运行拉伸弹簧窗体图4.3 运行结果图4.4 运行压缩弹簧窗体图4.5 运行结果图4.6 运行扭转弹簧窗体图4.7 运行结果4.3 源代码4.3.1 窗体程序源代码(1)主窗体程序代码Private Sub cmdOk_Click()I
25、f Optionlh.Value = True Then 弹簧生成器.Hide 拉伸弹簧.Show ElseIf Optionyh.Value = True Then 弹簧生成器.Hide 压缩弹簧.Show ElseIf Optionnh.Value = True Then 弹簧生成器.Hide 扭转弹簧.ShowEnd IfEnd SubPrivate Sub Commandcancel_Click()EndEnd SubPrivate Sub Optionlh_Click()Optionlh.Value = TrueEnd SubPrivate Sub Optionnh_Click()O
26、ptionnh.Value = TrueEnd SubPrivate Sub Optionyh_Click()Optionyh.Value = TrueEnd SubPrivate Sub UserForm_Initialize()Optionlh.Value = TrueEnd Sub(2)拉伸弹簧窗体程序代码Const pi = 3.1415926Private Sub cmdCancel_Click() EndEnd SubPrivate Sub cmdOk_Click() '如果某一参数值为空,则提示用户输入参数值 If txtD.Text = "" Or
27、txtNum.Text = "" Or _ txtCenX.Text = "" Or txtCenY.Text = "" Or txtCenZ.Text = "" Or Txtmd.Text = "" Then MsgBox "缺少参数,请检查参数的输入。", vbExclamation, "警告" Exit Sub End If '获取主要参数值 Dim Radius As Double, Number As Double Dim Addver
28、As Double, Segment As Double, md As Double Radius = txtD.Text / 2: Number = txtNum.Text Addver = Txtmd.Text: Segment = 200: md = Txtmd.Text '获取点的个数和角度间隔 Dim PtControl() As Double n = (Number + 2) * Segment ReDim PtControl(3 * n + 2) As Double Angle = 2 * pi / Segment '计算控制点的坐标 For i = 0 To 2
29、00 PtControl(3 * i) = txtCenX.Text + Radius * Sin(2 * i * pi / Segment) PtControl(3 * i + 1) = txtCenY.Text + Radius PtControl(3 * i + 2) = txtCenZ.Text + Radius * Cos(2 * i * pi / Segment) - Radius + Txtmd.Text Next i For i = 201 To n - 200 PtControl(3 * i) = txtCenX.Text + Radius * Sin(2 * i * pi
30、/ Segment) PtControl(3 * i + 1) = txtCenY.Text + Radius * Cos(2 * i * pi / Segment) PtControl(3 * i + 2) = txtCenZ.Text + i * Addver / Segment Next i For i = n - 199 To n - 50 PtControl(3 * i) = txtCenX.Text + Radius * Sin(2 * i * pi / Segment) PtControl(3 * i + 1) = PtControl(3 * n - 599) PtControl
31、(3 * i + 2) = PtControl(3 * n - 598) - Radius * Cos(2 * i * pi / Segment) + Radius Next i For i = n - 50 To n PtControl(3 * i) = PtControl(3 * n - 150) PtControl(3 * i + 1) = PtControl(3 * n - 149) PtControl(3 * i + 2) = PtControl(3 * n - 148) Next i For i = 0 To 50 PtControl(3 * i) = PtControl(153)
32、 PtControl(3 * i + 1) = PtControl(154) PtControl(3 * i + 2) = PtControl(155) Next i '绘制多段线 Dim ObjPline As Acad3DPolyline Set ObjPline = ThisDrawing.ModelSpace.Add3DPoly(PtControl) '创建截面 Dim objList(0) As AcadEntity Dim ptCen(0 To 2) As Double ptCen(0) = 0: ptCen(1) = 0: ptCen(2) = 0 Set obj
33、List(0) = ThisDrawing.ModelSpace.AddCircle(ptCen, md / 2) Dim pt1(0 To 2) As Double Dim objCircle As AcadCircle Set objCircle = objList(0) pt1(0) = txtCenX.Text: pt1(1) = txtCenY.Text + Radius: pt1(2) = txtCenZ.Text objCircle.Center = pt1 objCircle.Update '生成截面的边界 Dim objRegion As Variant objReg
34、ion = ThisDrawing.ModelSpace.AddRegion(objList) '拉伸得到三维模型 Dim objSolid As Acad3DSolid Set objSolid = ThisDrawing.ModelSpace.AddExtrudedSolidAlongPath(objRegion(0), ObjPline) '删除原来的对象 objRegion(0).Delete ObjPline.Delete objCircle.Delete '预置视点 Dim NewDirection(2) As Double NewDirection(0)
35、= -1: NewDirection(1) = -1: NewDirection(2) = 1 ThisDrawing.ActiveViewport.Direction = NewDirection ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewportZoomExtentsEndEnd SubPrivate Sub cmdPick_Click() '屏幕上获取插入点的坐标 Dim PtPick As Variant 拉伸弹簧.Hide PtPick = ThisDrawing.Utility.GetPoint(, "请
36、点击获取弹簧模型的插入点:") txtCenX.Text = PtPick(0) txtCenY.Text = PtPick(1) txtCenZ.Text = PtPick(2) 拉伸弹簧.ShowEnd SubPrivate Sub UserForm_Initialize() '弹簧参数的初值 txtD.Text = 30 txtNum.Text = 10 Txtmd.Text = 5 txtCenX.Text = 0: txtCenY.Text = 0: txtCenZ.Text = 0End Sub(3)压缩弹簧窗体程序代码Const pi = 3.1415926Pr
37、ivate Sub cmdCancel_Click() EndEnd SubPrivate Sub cmdOk_Click() '如果某一参数值为空,则提示用户输入参数值 If txtD.Text = "" Or txtAddhor.Text = "" Or TxtNum.Text = "" Or _ txtCenX.Text = "" Or txtCenY.Text = "" Or txtCenZ.Text = "" Or Txtmd.Text = "&q
38、uot; Or txtaddver.Text = "" Then MsgBox "缺少参数,请检查参数的输入。", vbExclamation, "警告" Exit Sub End If '获取主要参数值 Dim Radius As Double, Number As Double, Addhor As Double Dim Addver As Double, md As Double Radius = txtD.Text / 2: Number = TxtNum.Text: Addhor = txtAddhor.Text A
39、ddver = txtaddver.Text: md = Txtmd.Text '获取点的个数和角度间隔 Dim PtControl() As Double n = (Number + 1.5) * 200 ReDim PtControl(3 * n + 2) As Double Angle = 2 * pi / 200 '计算控制点的坐标 For i = 0 To 200 PtControl(3 * i) = txtCenX.Text + (Radius + i * Addhor / 200) * Sin(2 * i * pi / 200) PtControl(3 * i +
40、 1) = txtCenY.Text + (Radius + i * Addhor / 200) * Cos(2 * i * pi / 200) PtControl(3 * i + 2) = txtCenZ.Text + i * Txtmd.Text / 200 - Txtmd.Text / 2 Next i For i = 201 To (n - 200) PtControl(3 * i) = txtCenX.Text + (Radius + i * Addhor / 200) * Sin(2 * i * pi / 200) PtControl(3 * i + 1) = txtCenY.Te
41、xt + (Radius + i * Addhor / 200) * Cos(2 * i * pi / 200) PtControl(3 * i + 2) = txtCenZ.Text + i * Addver / 200 - txtaddver.Text + Txtmd.Text - Txtmd.Text / 2 Next i For i = (n - 199) To n PtControl(3 * i) = txtCenX.Text + (Radius + i * Addhor / 200) * Sin(2 * i * pi / 200) PtControl(3 * i + 1) = tx
42、tCenY.Text + (Radius + i * Addhor / 200) * Cos(2 * i * pi / 200) PtControl(3 * i + 2) = txtCenZ.Text + (i - n + 201) * Txtmd.Text / 200 + (n - 200) * Addver / 200 - txtaddver.Text + Txtmd.Text / 2 Next i '绘制多段线 Dim ObjPline As Acad3DPolyline Set ObjPline = ThisDrawing.ModelSpace.Add3DPoly(PtCont
43、rol) '创建截面 Dim objList(0) As AcadEntity Dim ptCen(0 To 2) As Double ptCen(0) = 0: ptCen(1) = 0: ptCen(2) = 0 Set objList(0) = ThisDrawing.ModelSpace.AddCircle(ptCen, Txtmd.Text / 2) Dim pt1(0 To 2) As Double, pt2(0 To 2) As Double pt1(0) = 0: pt1(1) = -5: pt1(2) = 0 pt2(0) = 0: pt2(1) = 5: pt2(2
44、) = 0 objList(0).Rotate3D pt1, pt2, -pi / 2 Dim objCircle As AcadCircle Set objCircle = objList(0) pt1(0) = txtCenX.Text: pt1(1) = txtCenY.Text + Radius: pt1(2) = txtCenZ.Text - Txtmd.Text / 2 objCircle.Center = pt1 objCircle.Update '生成截面的边界 Dim objRegion As Variant objRegion = ThisDrawing.Model
45、Space.AddRegion(objList) '拉伸得到三维模型 Dim objSolid As Acad3DSolid Set objSolid = ThisDrawing.ModelSpace.AddExtrudedSolidAlongPath(objRegion(0), ObjPline) '将三维模型剖切得到两端磨平的压缩弹簧 Dim pnt(0 To 2) As Double Dim pnt1(0 To 2) As Double Dim pnt2(0 To 2) As Double Dim pnt3(0 To 2) As Double Dim pnt4(0 To
46、2) As Double Dim pnt5(0 To 2) As Double Dim pnt6(0 To 2) As Double Dim pnt7(0 To 2) As Double Dim pnt8(0 To 2) As Double pnt(0) = Val(txtCenX.Text): pnt(1) = Val(txtCenY.Text) + Val(Radius): pnt(2) = Val(Txtmd.Text / 2) + Val(txtCenZ.Text) pnt1(0) = 0: pnt1(1) = 0: pnt1(2) = Val(PtControl(3 * n + 2)
47、 - Val(Txtmd.Text / 2) pnt2(0) = 1: pnt2(1) = 4: pnt2(2) = Val(PtControl(3 * n + 2) - Val(Txtmd.Text / 2) pnt3(0) = 2: pnt3(1) = 3: pnt3(2) = Val(PtControl(3 * n + 2) - Val(Txtmd.Text / 2) pnt4(0) = 0: pnt4(1) = 0: pnt4(2) = txtCenZ.Text pnt5(0) = 0: pnt5(1) = 0: pnt5(2) = txtCenZ.Text pnt6(0) = 1:
48、pnt6(1) = 4: pnt6(2) = txtCenZ.Text pnt7(0) = 2: pnt7(1) = 3: pnt7(2) = txtCenZ.Text pnt8(0) = 0: pnt8(1) = 0: pnt8(2) = Val(txtCenZ.Text) + Val(Txtmd.Text) Dim det As String det = axPoint2lspPoint(pnt) 'axPoint2lspPoint函数的作用是将VBA的点转换为SendCommand用的点格式 Dim det1 As String det1 = axPoint2lspPoint(p
49、nt1) Dim det2 As String det2 = axPoint2lspPoint(pnt2) Dim det3 As String det3 = axPoint2lspPoint(pnt3) Dim det4 As String det4 = axPoint2lspPoint(pnt4) Dim det5 As String det5 = axPoint2lspPoint(pnt5) Dim det6 As String det6 = axPoint2lspPoint(pnt6) Dim det7 As String det7 = axPoint2lspPoint(pnt7) D
50、im det8 As String det8 = axPoint2lspPoint(pnt8) ThisDrawing.SendCommand "_slice" & vbCr & det & vbCr & vbCr & det1 & vbCr & det2 & vbCr & det3 & vbCr & det4 & vbCr ThisDrawing.SendCommand "_slice" & vbCr & det & vbCr &am
51、p; vbCr & det5 & vbCr & det6 & vbCr & det7 & vbCr & det8 & vbCr '删除原来的对象 objRegion(0).Delete ObjPline.Delete objCircle.Delete '预置视点 Dim NewDirection(2) As Double NewDirection(0) = -1: NewDirection(1) = -1: NewDirection(2) = 1 ThisDrawing.ActiveViewport.Directi
52、on = NewDirection ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewportZoomExtentsEndEnd SubPrivate Sub cmdPick_Click() Dim PtPick As Variant 压缩弹簧.Hide PtPick = ThisDrawing.Utility.GetPoint(, "请点击获取弹簧模型的插入点:") txtCenX.Text = PtPick(0) txtCenY.Text = PtPick(1) txtCenZ.Text = PtPick(2) 压缩弹
53、簧.ShowEnd SubPrivate Sub UserForm_Initialize() '弹簧参数的初值 txtD.Text = 30 txtaddver.Text = 10 txtAddhor.Text = 0 TxtNum.Text = 5 Txtmd.Text = 5 txtCenX.Text = 0: txtCenY.Text = 0: txtCenZ.Text = 0End Sub(4)扭转弹簧窗体程序代码Const pi = 3.1415926Private Sub cmdCancel_Click() EndEnd SubPrivate Sub cmdOk_Click
54、() '如果某一参数值为空,则提示用户输入参数值 If txtD.Text = "" Or txtbc.Text = "" Or txtNum.Text = "" Or _ txtCenX.Text = "" Or txtCenY.Text = "" Or txtCenZ.Text = "" Or Txtmd.Text = "" Then MsgBox "缺少参数,请检查参数的输入。", vbExclamation, "
55、;警告" Exit Sub End If '获取主要参数值 Dim Radius As Double, Number As Double, bc As Double Dim Addver As Double, Segment As Double, md As Double Radius = txtD.Text / 2: Number = txtNum.Text: bc = txtbc.Text Addver = Txtmd.Text: Segment = 200: md = Txtmd.Text '获取点的个数和角度间隔 Dim PtControl() As Double n = (Numbe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省开远市第二中学2025届化学高二下期末学业质量监测试题含解析
- 浙江省嘉兴市嘉善高级中学2025届高二下化学期末达标检测试题含解析
- 新疆巩留县高级中学2024-2025学年物理高二第二学期期末学业质量监测试题含解析
- 跨国劳务派遣中介服务与合同履行及费用结算合同
- 电子设备仓储与高效货物航空运输合同
- 智能化标准厂房租赁及服务合同范本
- 车辆抵押担保贷款风险预警合同
- 茶楼环保与可持续发展合同
- 婚纱摄影策划合同范本
- 浙江省台州市临海市2025年八年级下学期期末数学试题及参考答案
- 《基于单片机的家用万能遥控器设计5800字(论文)》
- 小学生军人知识普及
- DB65-T 4863-2024 超设计使用年限压力容器安全评估规则
- 九年级上册《道德与法治》教案
- 2025陕西建工控股集团限公司招聘12人易考易错模拟试题(共500题)试卷后附参考答案
- 光储充一体化低碳发展项目可行性研究报告写作模板-备案审批
- 智慧工会管理系统需求方案
- 临床三基培训
- 配电室巡检培训
- 混凝土工程施工质量控制培训材料
- 《工程勘察设计收费标准》(2002年修订本)
评论
0/150
提交评论