基于SolidWorks的蜗轮蜗杆三维参数化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012届本科毕业论文(设计)
论文题目:基于SolidWorks的蜗轮蜗杆三维参数化
设计
学生姓名:
所在院系:
所学专业:
导师姓名:
完成时间:
基于SolidWorks的蜗轮蜗杆三维参数化设计
摘要
本设计以蜗轮蜗杆为研究对象,建立其数学模型,使用Visual Basic语言对SolidWorks2011进行二次开发。
通过录制宏、编辑宏的方法,获得参数化设计的源程序,在Visual Basic 6.0编辑器中对其进行相应的代码替换和修改,最后制作成简单的程序,并添加控件和窗体来实现蜗轮蜗杆的三维参数化实体设计建模。
通过对蜗轮蜗杆的参数化设计,详细说明了基于Visual Basic语言进行的SolidWorks二次开发方法,为初学者提供一个便利的参考,提高了编程效率,可以避免走一些不必要的弯路,也对类似的复杂曲面形状的零部件三维参数化设计提供了借鉴。
蜗轮蜗杆参数化设计与SolidWorks造型软件的开发,不仅实现了蜗轮蜗杆的参数化设计与三维实体造型的结合,缩短了产品设计时间,有利于提高产品开发的效率和质量,同时所完成的三维实体零件模型为后续的进一步研究工作提供了必要的条件。
关键词:蜗轮蜗杆,Visual Basic,SolidWorks 2011,参数化
Parametric 3D-Design for Worm and Worm Gear Based on
SolidWorks
Abstract
This design takes the worm and worm gear as an object,establishes its mathematical model,introduces the theory and method of the Redevelopment approach or SolidWorks2011 with Visual Basic. Modifing and replacing the source program obtained by recording and editing macro in Visual Basic 6.0, finally makes into a simple program. And it helps us to achieve the worm and worm gear three-dimensional parametric solid model by adding the controls and forms.By the Parametric 3D-Design for worm and worm Gear , it makes us understand the secondary development of SolidWorks and Provides a favorable reference for beginners to improve their programming efficiency and avoid detours. It also provides a reference for three-dimensional design of similar parts with complex surface shape . The development of worm and worm gear parametrical design and modeling software brings about the join of gear parametrical design and three- dimensional substance modeling ,shortens the time of design produce ,and benefits the improvement of produce quality and efficiency..It has realized the worm
And worm gear three-dimensional parametric model, which has provided the essentional condition for the following further research work.
Keywords:worm and worm gear , Visual Basic, SolidWorks 2011, parametric
目录
第一章绪论 (1)
1.1蜗轮蜗杆传动特点 (1)
1.2SolidWorks二次开发的研究背景和意义 (1)
第二章SolidWorks软件的简介 (1)
2.1SolidWorks软件的特点 (1)
2.2SolidWorks的二次开发功能 (2)
2.3 Visual Basic对SolidWorks的简单开发过程 (2)
2.3.1宏工具条 (2)
2.3.2宏录制及其源代码的简单调试 (3)
第三章蜗轮蜗杆的参数化描述 (5)
3.1蜗轮蜗杆传动的主要参数及选择 (5)
3.2蜗轮蜗杆的参数化计算 (7)
第四章蜗轮蜗杆参数化建模的实现 (7)
4.1参数化建模中约束参数的提取 (8)
4.2数学模型 (8)
4.2.1蜗杆的数学模型 (8)
4.2.2蜗轮的数学模型 (9)
4.3蜗轮蜗杆参数化建模的基本步骤 (10)
4.3.1蜗杆的建模步骤 (11)
4.3.2运用程序创建蜗杆实体 (11)
4.3.3蜗轮的建模步骤 (17)
4.3.4运用程序创建蜗轮实体 (18)
第五章结论 (24)
参考文献 (25)
致谢 (26)
附录1蜗杆程序 (27)
附录2蜗轮程序 (33)
第一章绪论
1.1蜗轮蜗杆传动特点
蜗轮蜗杆传动主要是在空间交错的两轴间传递运动和力的一种传动机构,常见的有圆柱蜗杆传动、环面蜗杆传动、和锥蜗杆传动。
与其他传齿轮动相比,蜗轮蜗杆传动具有传动比大、冲击载荷小、传动平稳、噪声小、结构紧凑、可实现反向自锁等优点,所以被广泛运用到各类机械设备的传动系统中。
1.2SolidWorks二次开发的研究背景和意义
由于现实中部分产品的结构比较复杂,特别是其外形曲面,一般的手工三维建模方法效率低下,而且绘图精度较低。
如今的SolidWorks软件虽然具有相对比较强大的绘图建模功能,但是目前还不是十分成熟,对于非标准零件,特别是比较复杂的零件进行建模过程依旧显得比较繁琐。
为了适合各行企业的不同需要,使SolidWorks在我国的企业中有效地发挥重大作用,并使常用的或重复的任务自动化,提高效率,对其进行本地化和专业化的二次开发显得十分必要。
本文以应用最广泛的阿基米德螺旋线圆柱蜗杆传动为例,利用Visual Basic编程语言来实现SolidWorks2011的二次开发,对蜗轮蜗杆进行三维参数化建模设计,提高产品的开发效率和质量,同时也为产品所要进一步进行的有限元分析、动力学分析和机构仿真等奠定一定基础。
第二章SolidWorks软件的简介
2.1SolidWorks软件的特点
SolidWorks是一套智能型的高级CAD/CAE/CAM组合软件,自1995年问世以来,凭借其具有强大的零件设计、钣金设计、管理设计、绘制二维工程图、支持异地协同工作等功能,同时也拥有结构分析、运动分析、动态模拟仿真、高级渲染等专业功能,特别是它完全基于Windows的图形界面和特征的参数化、变量化设计技术,使其操作方便,易学易懂,赢得了广大用户的青睐。
但是,此软件虽然是国际通用的三维机械设计软件,可是其中的一些功能并不符合我国国标,也不带有所有的标准件3D图库。
因此,为了适合特定的需求,使SolidWorks
能够更有效地发挥作用,并使特定的或复杂的任务自动化,提高效率,对其进行
一定的二次开发在现实的应用中显得至关重要。
2.2SolidWorks的二次开发功能
目前主流的CAD软件都为用户提供了一定的二次开发功能,通过CAD软件的二次开发工具,可以极大提高产品的设计研发效率,同时也促进CAD系统的用户化、本地化。
SolidWorks为用户了提供强大的API(Application Programming Inter -face )应用编程接口,它是一个基于OLE Automation的编程接口,此接口为用户提供了自由、开放、功能完整的开发工具,其中包含了数以百计的功能函数,这些函数为人们提供了直接访问SolidWorks的能力。
VB在二次开发中的参数化编程方式主要有两种:一种尺寸驱动法,通过修改CAD系统建模时自动生成的设计变量来驱动零件,所以程序的代码非常简捷。
SolidWorks在零件建模时,将根据建模的过程自动创建设计变量,并给每个变量赋以相应的名称,尺寸驱动程序只需修改这些变量的值。
另一种是程序驱动法,它是通过完全运用程序调用API函数对象来绘制图形,产生的代码量很大,而且每次生成零件时都需运行一次程序,运行速度相对较慢。
但由于它可以处理非设计变量的参数,具备变型设计的能力,所以人们常常把它作为尺寸驱动法的一个辅助手段来使用。
虽然这两种方法都具有各自优越性,但是对于初学者来说,不可能在很短的时间内熟练地掌握SolidWorks中所有API函数的调用命令。
SolidWorks中整合了VB编辑器,这个编辑器可以进行宏与二次开发的制作,使用宏录制工具可以大大简化二次开发过程。
用这种方法也可以快速得到SolidWorks 的操作命令,这比检索全英文的API文档方便快捷,所以SolidWorks提供的宏命令对于初学者来说显得非常重要。
2.3 Visual Basic对SolidWorks的简单开发过程
2.3.1宏工具条
SolidWorks软件中的宏工具条如图2-1所示,主要包括宏操作的命令按钮,同时也可以单击菜单栏中的工具来调用宏命令。
我们可以通过移动鼠标到任一工具上,单击右键来将宏工具栏显示在SolidWorks的工具栏中。
宏工具栏的按钮主要包括运行、停止、录制/暂停、编辑等按钮,对于初学者来说,应该熟悉了解各个按钮的基本用途。
图2-1宏工具条
2.3.2宏录制及其源代码的简单调试
(1)利用宏工具录制的圆柱体源代码如图2-2所示。
图2-2 圆柱体源代码
(2)在VB程序开发环境中建立标准EXE文件,引用SolidWorks类型库,单击菜单栏中“工程”→“引用”命令,选择“SolidWorks 2011 Type Libray”、“SolidWorks 2011 Consant Type library”和“SolidWorks 2011 exposed Type Libraries For add-in Use”。
(3)在Visual Basic中添加相关控件,程序界面如图2-3所示。
图2-3 基本参数对话框
(4)调试后的程序如图2-4所示。
图2-4 调试后的程序
在通用区写入下面的代码来定义变量:
Dim swApp As Object
Dim part As Object
Dim boolstatus As Boolean
Dim D As Double
Dim L As Double
在Command1控件下写入下面的代码:
Set swApp = CreateObject("SldWorks.Application")
Set part = swApp.NewPart()
swApp.Visible = True
在Command2控件下写入主要代码如上图2-4中所示。
(5)单击VB中的启动按钮,程序调试结果如下图2-5所示:
图2-5圆柱体模型
注:在SolidWorks的API函数中的单位是米,如Set skSegment =
Part.CreateCircleByRadius2(0, 0, 0, D / 2000),API中的绘制圆的函数是以半径为参数,所以除以2000。
第三章蜗轮蜗杆的参数化描述
3.1 蜗轮蜗杆传动的主要参数及选择
本文中主要采用普通圆柱蜗杆传动如图,其主要参数有模数m、压力角α、蜗杆头数z1、蜗轮齿数z2及蜗杆的分度圆直径d1、中心距a等。
(1)模数m和压力角α
和齿轮传动一样,蜗杆传动的几何尺寸也以模数为主要计算参数,蜗杆模数系列见表3-1。
蜗杆和蜗轮啮合时,在中间平面上,蜗杆的轴面模数、压力角应与蜗轮的端面模数、压力角相等,即
m a1 = m a2 = m
a a1 = a t2
阿基米德蜗杆的轴向压力角αa为标准值20°,当蜗杆与蜗轮的轴线交错角为90°时,还需保证蜗杆的导程角等于蜗轮的螺旋角,即γ1= β2,且两者的螺旋线的旋向相同。
(2)蜗杆的分度圆直径d1
因为在用蜗轮滚刀切制蜗轮时,滚刀的分度圆直径必须与工作蜗杆的分度圆直径相同,为了限制蜗轮滚刀的数目,国家标准中规定将蜗杆的分度圆直径标准化,且与其模数相匹配,d1与m匹配的标准系列见表3-2。
(3)齿数
蜗杆的齿数又叫做蜗杆的头数,用z1表示。
一般可取z1 = 1 ~ 10,推荐选取z1 = 1、2、4、6。
在传动比大或者反行程具有自锁性的传动中,常取z1 = 1,及单头蜗杆;当要求传动效率较高时,z1应取大值。
蜗轮的齿数z2可以根据传动比计算得出。
对于动力传动,一般推荐z2 = 29 ~ 70。
(4)蜗杆传动的中心距a
a = (d1 + d2)/ 2 = m *(q + z2) / 2
3.2 蜗轮蜗杆的参数化计算
在蜗轮蜗杆的参数化设计过程中所用到的参数的计算公式见下表3-3
表3-3 普通圆柱蜗杆传动的基本几何尺寸计算公式
第四章蜗轮蜗杆参数化建模的实现
本文以最常见的阿基米德圆柱蜗杆为研究对象来简述参数化建模过程的基本思路和其建模原理,包括建模约束参数的提取,蜗轮蜗杆的数学模型的简单介绍,蜗杆建模和蜗轮建模的基本步骤及其建模过程中SolidWorks二次开发功能的详细分析。
4.1参数化建模中约束参数的提取
分析约束参数的提取过程,该方法可以扩展到其它产品模型约束参数的提取中。
根据人们的设计要求,结合蜗杆传动关键尺寸的约束,可以很容易的得出蜗轮蜗杆在三维参数化建模中所需要的主要参数:蜗杆头数z1、压力角α、蜗轮齿数z2、模数m、蜗杆直径系数q、蜗杆分度圆直径d1、中心距a等。
在蜗轮蜗杆的三维参数化建模过程中,只要约束了这些主要的参数变量,就能很容易的确定蜗轮蜗杆。
4.2数学模型
在三维建模过程中,数学模型显得至关重要,它是我们进行图形绘制的关键,只有熟悉了解零件产品的数学模型,才能比较精确的绘制出我们所需要的零件图,才能进一步去分析零件其它方面的性能。
4.2.1蜗杆的数学模型
对于阿基米德蜗杆来说,其螺旋面的形成与螺纹的生成类似,由一个等腰梯形齿廓截面绕阿基米德螺旋线扫描切除得到。
如图4-1所示为蜗杆齿廓的数学模型。
图4-1 蜗杆数学模型
4.2.2蜗轮的数学模型
图4-2所示为蜗轮与阿基米德蜗杆啮合情况。
过蜗杆的轴线作一平面垂直于蜗轮的轴线,该平面对于蜗杆是轴面,对于蜗轮是端面,这个平面称为蜗杆传动的中间平面。
在此平面内蜗杆的齿廓相当于齿条,蜗轮的齿廓相当于一个齿轮,即在中间平面上两者相当于齿条与齿轮的啮合。
图4-2普通圆柱蜗杆的传动
由于SolidWorks中没有绘制渐开线的功能,所以需要计算渐开线上若干点的坐标值,通过样条曲线拟合得到近似的渐开线。
其数学模型如图4-3所示。
渐开线参数方程如下:
x1(r k) = r k sin(ϕ+ θk)
y1(r k) = r k cos(ϕ+ θk)
x2 = - x1(r k)
y1 = r1 + r2 + y1
ϕ= π/(2z2) –tanα + α
αk = arccos (r b / r k)
θk= tanαk+αk
(其中,r1、r2分别是蜗杆、蜗轮的分度圆半径,θk是渐开线上K点的展角,r k 为渐开线在任意点K的向径,且有r f ≤ r k≤ r a)
图4-3 蜗轮数学模型
利用上述渐开线参数方程绘制出渐开线,再进一步修剪为齿廓后,使用扫描这一特征就可以得到一个齿槽(扫描时,以蜗杆的螺旋线为导线),最后再使用圆周阵列便可以得到一个完整的蜗轮。
4.3蜗轮蜗杆参数化建模的基本步骤
首先熟悉蜗轮蜗杆的画法,再利用SolidWorks中的宏录制功能,得到绘制蜗轮蜗杆的源代码,然后在Visual Basic 6.0中对全部变量进行声明,计算结构尺寸,并输入相关参数(蜗杆蜗轮的参数变量如图4-4和图4-5所示),最后仿照第二章中2.3.2宏编辑及其源代码的简单调试来编辑和调试程序。
图4-4 蜗杆基本参数对话框
图4-5蜗轮基本参数对话框
4.3.1蜗杆的建模步骤
(1)以齿顶圆半径绘制草图,拉伸获得蜗杆坯体(拉伸的长度即为蜗杆的长度)。
(2)在新建的基准面上建立螺旋线(螺旋线基圆为蜗杆分度圆,高度等于蜗杆的拉伸长度,螺距等于蜗杆的导程,起始角等于90°)。
(3)以图4-1所示的蜗杆数学模型建立蜗杆齿廓(本文中主要通过几何尺寸及其添加几何关系来获得齿廓)。
(4)利用扫描切除特征获得蜗杆三维建模模型(以阿基米德螺旋线为扫面路径,齿廓为扫描轮廓)。
(5)对于多头蜗杆,可以通过圆周阵列来得到(阵列对象为“扫描切除”特征,阵列轴为蜗杆中心轴,起始角度为2π/ z1,阵列个数为z1
采用等距阵列)。
,
4.3.2运用程序创建蜗杆实体
下面主要以单头蜗杆为例来说明蜗杆实体生成的主要实现过程及其主要程序。
(1)蜗杆坯体的创建
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
Dim skSegment As Object
Set skSegment = Part.CreateCircleByRadius2(0, 0, 0, Da / 2000)‘以坐标原点为圆心,齿顶圆半径为半径绘制圆,其中Da为变量参数
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
Part.ShowNamedView2 "*上下二等角轴测", 8
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("草图1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Dim myFeature As Object
Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, L / 1000, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, True, True, True, 0, 0, False)
Part.SelectionManager.EnableContourSelection = False‘此为拉伸过程,L为变量参数
(2)绘制螺旋线
boolstatus = Part.Extension.SelectByID2("前视基准面", "P LANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
Set skSegment = Part.CreateCircleByRadius2(0, 0, 0, D / 2000)‘Df为螺旋线基圆半径,即蜗杆分度圆半径
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
Part.InsertHelix False, False, False, False, 2, G / 1000, p / 1000, 15.91549430919, 0, 1.570796326795
‘G为螺旋线高度,p为螺距
(上述程序所生成的蜗杆螺旋线如下图4-6所示,生成螺旋线时以蜗杆分度圆半径作为螺旋线基圆的半径,选用“螺旋线高度”和“螺距”这两个参数来获得所需的螺旋线)
图4-6 蜗杆建模中螺旋线的生成
(3)绘制蜗杆齿廓
首先绘制任意齿廓,然后按照蜗杆齿廓数学模型,计算各个变量,并进行相应的参数变量的声明和一定的修改,下面是齿廓修改后的部分程序。
boolstatus = Part.Extension.SelectByID2("右视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "", "", False, 7, 2, True, 12, 12, "", "", True, "", "", False)
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "", "", False, 7, 2, True, 12, 12, "", "", True, "", "", False)
Part.Parameter("D1@草图3").SystemValue = α
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 3.909293814548E-08, 0.06431711666873, -0.0460911112736, False, 0, Nothing, 0) boolstatus = Part.Extension.SelectByID2("Line6", "SKETCHSEGMENT", 3.909293820773E-08, 0.05540169895969, -0.04439293647188, True, 0, Nothing, 0) Set myDisplayDim = Part.AddDimension2(0, 0.05794896116227, -0.01425033374129)
Part.ClearSelection2 True
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "", "", False, 7, 2, True, 12, 12, "", "", True, "", "", False)
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "", "", False, 7, 2, True, 12, 12, "",
"", True, "", "", False)
Part.Parameter("D2@草图3").SystemValue = Ha / 1000
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Line6", "SKETCHSEGMENT", 3.909293818402E-08, 0.05879804856313, -0.068167383696, False, 0, Nothing, 0) boolstatus = Part.Extension.SelectByID2("Line5", "SKETCHSEGMENT", 3.909293840339E-08, 0.02738181473126, -0.05967650968739, True, 0, Nothing, 0) Set myDisplayDim = Part.AddDimension2(0, 0.03332542653729, -0.02061848924776)
Part.ClearSelection2 True
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "", "", False, 7, 2, True, 12, 12, "", "", True, "", "", False)
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "", "", False, 7, 2, True, 12, 12, "", "", True, "", "", False)
Part.Parameter("D3@草图3").SystemValue = Hf / 1000
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Line6", "SKETCHSEGMENT", 3.909293817809E-08, 0.05964713596399, -0.04481748017231, False, 0, Nothing, 0) Set myDisplayDim = Part.AddDimension2(0, 0.07705342768166, -0.04142113056886)
Part.ClearSelection2 True
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "", "", False, 7, 2, True, 12, 12, "", "", True, "", "", False)
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "", "", False, 7, 2, True, 12, 12, "", "", True, "", "", False)
Part.Parameter("D4@草图3").SystemValue = s / 1000
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Line5", "SKETCHSEGMENT", 3.909293841747E-08, 0.05323068004644, -0.03057561649989, False, 0, Nothing, 0) boolstatus = Part.Extension.SelectByID2("Line7", "SKETCHSEGMENT", 3.909293879039E-08, -1.740050979668E-04, -0.02547789655428, True, 0, Nothing, 0)
Set myDisplayDim = Part.AddDimension2(0, 0.02555734319888, -0.05703521050325)
Part.ClearSelection2 True
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "", "", False, 7, 2, True, 12, 12, "", "", True, "", "", False)
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "", "", False, 7, 2, True, 12, 12, "", "", True, "", "", False)
Part.Parameter("D5@草图3").SystemValue = Df / 2000
Part.ClearSelection2 True‘以上是齿廓尺寸修改后,得到的齿廓截面
boolstatus = Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 3.909293866665E-08, 0.01754664042722, -0.03057561649989, True, 0, Nothing, 0) boolstatus = Part.Extension.SelectByID2("Line8", "SKETCHSEGMENT", 3.909293838865E-08, 0.05735740571669, 2.534517425671E-04, True, 0, Nothing, 0) Part.SketchAddConstraints "sgCOLINEAR"
‘以上是添加线线重合的几何关系
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
图4-7 蜗杆的螺旋线和修正尺寸后的齿廓截面
如上图4-7所示即为蜗杆齿廓截面的模型。
(4)扫描切除
boolstatus = Part.Extension.SelectByID2("螺旋线/涡状线1", "REFERENCECURVES", 0.06190797436523, 0.03235430312635, 0.143717855926, True, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("草图3", "SKETCH", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("螺旋线/涡状线1", "REFERENCECURVES", 0.06190797436523, 0.03235430312635, 0.143717855926, True, 4, Nothing, 0)
Set myFeature = Part.FeatureManager.InsertCutSwept4(False, True, 0, False, False, 0, 0, False, 0, 0, 0, 0, True, True, 0, True, True, True, False)
以上是通过扫描切除这一特征命令获得的如下图4-8所示的单头蜗杆最终建模模型,其中以螺旋线为扫描路径,以蜗杆的齿廓截面为扫描轮廓。
图4-8 单头蜗杆建模造型
其中,多头蜗杆(图4-9为双头蜗杆的建模造型)的关键程序如下:boolstatus
=Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swDisplayTemporaryAxe s, True)
Part.ActivateSelectedFeature
boolstatus = Part.Extension.SelectByID2("", "AXIS", 3.909293878361E-08, 0.000796989177386, 0.1395911302557, True, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("切除-扫描1", "BODYFEATURE", 0, 0, 0, False, 4, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("", "AXIS", 3.909293878361E-08, 0.000796989177386, 0.1395911302557, True, 1, Nothing, 0)
Set myFeature = Part.FeatureManager.FeatureCircularPattern2(Z, β, False, "NULL", False)
‘其中Z为蜗杆的头数,β = 2π/ Z
图4-9 双头蜗杆建模造型
4.3.3蜗轮的建模步骤
(1)绘制蜗轮齿顶圆的草图,并拉伸获得基体,拉伸长度等于齿宽。
(2)首先绘制齿顶圆和齿根圆草图,再通过蜗轮齿廓的渐开线参数方程,运用SolidWorks2011中“方程式驱动的曲线”这一功能,得到样条曲线拟合后的同一个齿槽中一侧的渐开线,再利用“镜像”功能获得另外一条渐开线,最后通过修剪得到蜗轮齿廓。
(3)在新的基准面上建立阿基米德螺旋线(螺旋线的基圆是蜗杆的分度圆,蜗轮的螺旋角β等于蜗杆螺旋角γ,即β = γ = arctan((mz1)/d1),螺距p =(πd2)/ tanβ,螺旋线圈数n = B / p)。
(4)使用扫描切除特征来生成单个齿廓的蜗轮基体(齿廓作为扫描切除轮廓,阿基米德螺旋线为扫描切除路径)。
(5)建立一个通过基体轴心的基准轴。
(6)通过圆周阵列来生成全齿。
(7)最后再绘制轮毂,并通过倒角,键槽等功能,得到完整的蜗轮。
4.3.4 运用程序创建蜗轮实体
下面是蜗轮实体生成的主要实现过程及其主要程序。
(1)蜗轮齿顶圆的及其基体的拉伸
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
Dim skSegment As Object
Set skSegment = Part.CreateCircleByRadius2(0#, 0#, 0#, Ra / 1000)
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
Part.ShowNamedView2 "*上下二等角轴测", 8
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("草图1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Dim myFeature As Object
Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, B / 1000, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, True, True, True, 0, 0, False)
Part.SelectionManager.EnableContourSelection = False
(2)蜗轮齿廓的生成
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
Set skSegment = Part.CreateCircleByRadius2(0#, 0#, 0#, Rf / 1000)
Part.ClearSelection2 True
Set skSegment = Part.CreateCircleByRadius2(0#, 0#, 0#, Ra / 1000)
Part.ClearSelection2 True
For N1 = 0 To N2
t = Rf + f * N1
φ = ArcCos(Rb / t)
ε = K / (2 * Z2) - Tan(α) + α
θ = Tan(φ) - φ
u = t * Sin(ε + θ)
w = t * Cos(ε + θ)
Part.SketchSpline N2 - N1, u / 1000, w / 1000, 0 ‘样条曲线的生成
Next N1
Part.InsertSketch2 True
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("草图2", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.EditSketch
Part.ClearSelection2 True
Set skSegment = Part.SketchManager.CreateCenterLine(0#, 0#, 0#, 0#, 0.037159, 0#) Part.SetPickMode
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.002210763482057, 0.06307480319502, 0.010725, True, 0, Nothing, 0) boolstatus = Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0.000587693149383, 0.02197228389269, 0.010725, True, 0, Nothing, 0)
Part.SketchMirror
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("圆弧2", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.SketchManager.SketchTrim(0, -0.00806467926524, 0.06454926414702, 0)
Part.SetPickMode
boolstatus = Part.Extension.SelectByID2("圆弧1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0) ‘齿廓的修剪
boolstatus = Part.SketchManager.SketchTrim(0, -0.00629999165294, 0.05909716958365, 0)
Part.SketchManager.InsertSketch True
以上主要是根据蜗轮的渐开线参数方程,并通过样条曲线拟合的方法生成蜗轮齿廓渐开线,再通过相应的修剪,最后获得蜗轮的齿廓截面,如图4-10 所示。
图4-10蜗轮齿廓截面
(3)蜗轮建模中螺旋线的生成
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, 0.019205, 0.005872, 0#)
Part.InsertHelix False, False, False, True, 0, 0.02144989897475, p / 1000, n, 0, 0 ‘p 为螺距,n为螺旋线圈数
Part.ClearSelection2 True
(4)扫描切除生成单个轮齿
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, 0.019205, 0.005872, 0#)
Part.InsertHelix False, False, False, True, 0, 0.02144989897475, p / 1000, n, 0, 0 Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("草图2", "SKETCH", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("螺旋线/涡状线1", "REFERENCECURVES", 0, 0, 0, True, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("草图2", "SKETCH", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("螺旋线/涡状线1", "REFERENCECURVES", 0, 0, 0, True, 4, Nothing, 0)
Set myFeature = Part.FeatureManager.InsertCutSwept4(False, True, 0, False, False, 0, 0, False, 0, 0, 0, 0, True, True, 0, True, True, True, False)
图4-11 单个轮齿的造型
(5)阵列得到蜗轮全齿
boolstatus = Part.Extension.SelectByID2("上视基准面", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("右视基准面", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Part.InsertAxis2(True)
boolstatus = Part.Extension.SelectByID2("切除-扫描1", "BODYFEATURE", 0, 0, 0, True, 0, Nothing, 0)
Part.ActivateSelectedFeature
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("切除-扫描1", "BODYFEATURE", 0, 0, 0, False, 4, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("基准轴1", "AXIS", 0, 0, 0, True, 1, Nothing, 0)
Set myFeature = Part.FeatureManager.FeatureCircularPattern2(Z2, (2 * K) / Z2, False, "NULL", False)
boolstatus = Part.Extension.SelectByID2("基准轴1", "AXIS", 0, 0, 0, False, 0, Nothing, 0)
Part.BlankRefGeom
boolstatus = Part.Extension.SelectByID2("草图3", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.BlankSketch
boolstatus = Part.Extension.SelectByID2("螺旋线/涡状线1", "REFERENCECURVES", 0, 0, 0, False, 0, Nothing, 0)
Part.BlankRefGeom
boolstatus = Part.Extension.SelectByID2("草图2", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.BlankSketch
(阵列生成全齿的蜗轮模型如图4-12所示,最后几段的程序用来隐藏基准轴、齿廓截面、螺旋线和螺旋线基圆)
图4-12全齿蜗轮
完成上述蜗轮的造型后,再根据实际情况,结合蜗轮轮毂的设计要求,查询相关资料,进行轮毂的设计,这样一个完整的蜗轮造型就生成了,如图4-13 所
示为轮毂的一个实例。
图4-13蜗轮的建模实体造
第五章结论
本论文研究了基于SolidWorks的蜗轮蜗杆三维参数化设计,主要借助于Visual Basic语言对SolidWorks2011进行二次开发程序的编制和调试,以蜗轮蜗杆为例实现了输入基本参数就可以立即生成零件的建模造型,不仅简化了蜗轮蜗杆一般的三维建模步骤,同时也提高了人们对产品设计研发的效率,降低了研发成本。
而且本文通过对蜗轮蜗杆参数化三维建模过程的详细介绍和分析,使更多的初学者快速熟悉和掌握SolidWorks2011的简单二次开发方法,也促进了该软件功能的进一步完善。
参考文献
[1]江洪,单莉,李春表,等. SolidWorks机械设计实例解析[M].2版.北京:
机械工业出版社,2007.
[2]宋爱平,等.CAD/CAM技术综合实训指导书[M].北京:机械工业出版
社,2007.
[3]崔凤奎,等.SolidWorks机械设计[M].北京:机械工业出版社,2007.
[4]陆利锋,江洪,伍锦辉,等.SolidWorks工程师高级教程[M].北京:化
学工业出版社,2006.
[5]SolidWorks公司.SolidWorks基本零件建模[M].北京:机械工业出版社,
2005.
[6]王东.等.基于SolidWorks的机械零件参数化设计[J].机械制造与研
究.2004.
[7] 殷国富,徐蕾,胡晓兵.SolidWorks二次开发实例精解〃冲模标准件3D
图库[M].北京:机械工业出版社,2006.
[8]江洪,魏峥,王涛威,等 .SolidWorks二次开发实例解析[M].北京:机
械工业出版社,2004.
[9] 李雁翎,周东贷,潘伟. Visual Basic程序设计教程[M].北京:人民邮电
出版社,2007.
[10]李兰友,李会山,郑志荣,刘培. Visual Basic应用程序设计[M].北京:
清华大学出版社;北京交通大学出版社,2007.
[11]丁彩红. SolidWorks中函数曲线绘制的二次开发[J].机械与电子2006.
[12] 孙桓,陈作模,葛文杰等.机械原理[M].北京:高等教育出版社,2006.
[13]濮良贵,纪名刚,等.机械设计[M].北京:高等教育出版社,2005.
[14]丛晓霞,等.机械设计课程设计[M].北京:高等教育出版社,2010
[15]朱文坚,黄平.机械设计课程设计[M].2版.广州:华南理工大学出版社,
2006.
[16] 朱辉,曹桄等.画法几何及工程制图[M].上海科学技术出版社,2008.6
[17] 管殿柱. AutoCAD2008[M].机械工业出版社,2008.9
[18] 曹岩,赵汝嘉. SolidWorks2005基础篇[M]. 机械工业出版社,2005.6
[19] 邹昌平、黄志真、孙翠微、赵建波.基于VC的SolidWorks三维标准
件库.现代制造工程,2002.10
[20] 王东,蒲小琼.基于SolidWorks的机械零件参数化设计[J].机械制造与
研究,2004.
致谢
本论文是在我的导师王占奎老师的悉心指导下完成的。
在毕业设计的过程中多次向王老师请教Visual Basic语言的编程,并同老师一起讨论解决毕业设计过程中遇到的难题,特别是SolidWorks2011二次开发设计过程中的方程式曲线这一命令的正确使用。
刚开始做毕业设计没有一点头绪,经过自己的摸索和老师的指导,还有同学们之间的相互交流,慢慢的打开了思绪的大门。
同时,经过这次毕业设计,也让自己深切了解到了一种新的研究方法。
由于我的学术水平有限,在设计过程中不免会有不足之处,恳请各位老师批评和指正。
.
附录1蜗杆程序
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long Dim Feature As Object
Dim Featuredata As Object
Dim M As Double '模数
Dim L As Double '蜗杆拉伸长度
Dim Z As Double '蜗杆头数
Dim D As Double '蜗杆分度圆直径
Dim α As Double '压力角
Dim β As Double '多头蜗杆阵列起始角度
Dim Da As Double '齿顶圆直径
Dim Df As Double '齿根圆直径
Dim Hf As Double '齿根高
Dim Ha As Double '齿顶高
Dim Rb As Double '螺旋线基圆半径
Dim G As Double '螺旋线高度
Dim T As Double '蜗杆导程
Dim p As Double '螺距
Dim s As Double '齿厚
Const K = 3.14159265358979
Const h = 1 '齿顶高系数
Const c = 0.2 '顶隙系数
Private Sub Command1_Click()
Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.NewPart()
swApp.Visible = True
End Sub
Private Sub Command2_Click()
M = Val(Text1.Text)
L = Val(Text2.Text)
Z = Val(Text3.Text)。