1. 引言
蜗杆传动因其独特的结构特点和优良的传动性能,在现代工业传动系统中占据着不可替代的重要地位,其紧凑的结构设计、高承载能力以及良好的抗冲击性能,使其成为重载低速传动领域的理想选择。随着制造业智能化、自动化水平的不断提升,蜗杆传动凭借其大传动比、自锁性能好、运行平稳等优势,在机械、汽车、能源、航空航天等领域取得了越来越广泛的应用[1]。但蜗杆的设计要考虑许多方面的情况,如标准件和非标准件的选择需权衡成本与性能、轮杆之间的互相约束涉及啮合精度与传动效率的优化、蜗杆的尺寸参数需综合考虑强度、刚度和热变形等因素,这是一项涉及多学科知识,且需要反复校核验证的复杂过程[2]。尽管目前主流商业CAD系统(如SolidWorks、CATIA、UG/NX等)提供了基础参数化设计功能,并在通用机械零件设计中表现良好,但它们对蜗杆传动的专门支持仍较为有限。现有研究虽已尝试通过二次开发实现蜗杆参数化建模,例如基于特征自动生成模型、集成部分校核计算或构建专用设计界面,但仍存在明显不足:多数系统缺乏对设计知识的系统封装与重用,参数化过程依赖人工经验输入,未能有效融合智能推荐与实时验证机制;同时,现有工具在界面友好性、与企业系统(如PLM/ERP)的集成性以及全流程自动化方面仍有较大提升空间[3]。因此,将设计经验转化为显性知识规则,通过对成熟CAD软件进行二次开发,构建融合知识驱动与参数化能力的专业设计系统,可在适应用户习惯的基础上引入参数化建模功能,既提高了蜗杆设计效率,又降低了使用门槛,具有重要的工程应用价值[4]。
SolidWorks作为一款广泛应用于设计与工程领域的三维CAD软件,以其强大的建模、装配与仿真能力,以及高度的集成性和可扩展性,成为该领域中功能全面且广受欢迎的工具[5]。然而,其功能的标准化也带来了一定的局限性,如缺乏特定功能及部分操作体验欠佳。为此,研究人员逐步开展SolidWorks二次开发工作,通过分析用户需求、调用API接口、编写和测试程序等方法,构建更灵活、贴合实际的软件生态系统,显著增强了软件功能、简化了操作,并持续提升了系统性能[6]。
当前,SolidWorks二次开发研究主要从四个维度提升系统性能:一是开发专业化定制模块(如蜗杆参数化设计工具),提升在传动机械等领域的适用性,实现从参数输入到建模与仿真的全流程自动化[7];二是重构人机交互流程,采用分步向导、参数预填和实时预览等技术,将复杂操作流程化,提高在中小企业和教育领域的普及度[8];三是融合机器学习智能推荐与参数化设计引擎,实现特征识别、尺寸优化与装配验证的自动化,可减少重复操作时间约50%,特别适用于大批量标准件及变型设计[9];四是建立与PLM/ERP等系统的数据接口,构建覆盖设计–工艺–制造–质检的数字化协同链路[10]。总之,SolidWorks二次开发旨在精准满足用户需求,优化操作流程,提升工作效率与设计质量。
针对以上研究空白与工程需求,本文基于SolidWorks二次开发技术,采用VBA与Visual Studio联合编程方式,开发了一套面向阿基米德圆柱蜗杆的参数化设计系统。该系统支持用户输入模数、分度圆直径、头数、齿数、旋向等关键参数,自动生成蜗杆三维模型,并致力于实现设计过程的直观引导与实时可视化,有效弥补现有工具在知识嵌入性与交互效率方面的不足,为提升蜗杆设计质量与效率提供实用化解决方案。
2. 系统设计与实现
2.1. 开发环境与工具
Visual Studio作为一款功能全面的集成开发环境,为开发人员提供了完整的开发解决方案,支持包括桌面、Web、移动及云服务等多种应用的开发。其内置的智能调试系统显著提升了错误排查效率[11],而多项目协同管理和丰富的UI设计工具(如Windows Forms、WPF)则优化了团队协作与界面构建流程[12]。此外,该平台全面兼容主流数据库系统,提供全流程的数据库开发支持[13],并深度集成DevOps工具链,通过自动化测试、持续集成和性能监控保障软件交付质量与运行状态[14]。本文利用Visual Studio的项目管理功能,通过工具箱中的控件创建了参数输入窗口,所创建的窗口如图1所示。
Figure 1. Create a worm window
图1. 创建蜗杆窗口
2.2. 参数化算法设计
阿基米德蜗杆是一种在垂直于蜗杆轴线的平面(即端面)上,齿廓为阿基米德螺旋线,在包含轴线的平面上的齿廓(即轴向齿廓)为直线的蜗杆。它的齿形角α0通常为20˚,并且可在车床上用直线刀刃的单刀或双刀车削加工。阿基米德蜗杆是在生产中最常见的蜗杆类型,为实现其参数化自动设计,需依据以下关键参数建立几何模型:
模数m:它决定了蜗杆和蜗轮的基本尺寸。蜗杆的轴向模数与蜗轮的端面模数相等。
分度圆直径da1:蜗杆的分度圆直径由模数和直径系数决定。
蜗杆头数z1,蜗轮齿数z2,旋向。
压力角Alpha:蜗杆和蜗轮的压力角也是重要的设计参数。
齿顶高系数
和顶隙系数
:这两个系数决定了蜗杆和蜗轮的齿形尺寸。
传动比:传动比由蜗杆的头数和蜗轮的齿数决定。
Visual Studio中的定义变量语句如图2所示。
Figure 2. Define variables
图2. 定义变量
参数化算法的核心是依据上述参数自动计算蜗杆的几何尺寸,其基本公式如式(1)~(8)所示。
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
其中,
指的是齿顶高系数;
指的是顶隙系数;
指的是压力角;
指的是齿顶高度;
指的是齿根高度;
指的是齿高;
指的是齿顶圆直径;
指的是齿根圆直径。
Figure 3. Parameter calculation
图3. 参数计算
Visual Studio中的参数计算语句如图3所示,该程序可以通过VBA实现上述公式的自动计算,并据此生成蜗杆的基本几何轮廓。
2.3. 参数化建模流程
SolidWorks的宏录制功能为实现建模流程自动化提供了基础支持,它能够完整记录用户操作序列,并生成可重复调用的VBA代码,从而显著提升建模效率。其基本操作流程包括:启动录制、执行建模操作、停止录制并保存宏。更重要的是,通过宏编辑功能可对自动生成的代码进行查看与修改,为后续定制化开发奠定基础[15]。本次建模所形成的宏录制源代码如图4所示。
Figure 4. Macro recording
图4. 宏录制
根据所生成的宏录制,在Visual Studio中撰写绘制阿基米德蜗杆的程序,在右侧基准面绘制圆并且进行拉伸的程序如图5所示。
Figure 5. Draw the circle and stretch
图5. 绘制圆并拉伸
在前侧基准面绘制梯形的程序如图6所示。
Figure 6. Draw a trapezoid
图6. 绘制梯形
在右侧基准面绘制螺旋线并且切除的程序如图7所示。
Figure 7. Draw the spiral and excision
图7. 绘制螺旋线及切除
隐藏不必要的草图以及保存的程序如图8所示。
Figure 8. Closing statement
图8. 结束语句
3. 结果与分析
3.1. 参数化建模成果
在SolidWorks集成开发环境下,本研究采用基于VBA的宏录制技术,实现了两组合格阿基米德蜗杆传动副的参数化自动建模。针对第一组参数配置(模数2.5 mm,分度圆直径22.5 mm,蜗杆头数为1、右旋,涡轮齿数为27),通过编程精确控制齿廓的渐开线生成算法与螺旋升角参数化计算,构建了符合阿基米德螺旋线几何特征的蜗杆三维实体,模型图如图9所示。
Figure 9. Parameter 1 model diagram
图9. 参数1模型图
随后,针对第二组参数配置(模数3.15 mm,分度圆直径35.5 mm,蜗杆头数为2、右旋,涡轮齿数为40),通过修订宏代码中的几何约束关系与运动生成算法,实现了多头蜗杆复杂螺旋结构的精确几何表达,模型图如图10所示。整个建模过程严格依据蜗杆传动啮合理论,采用全参数化驱动策略,显著增强了模型的可重构性与设计灵活性。最终成功生成两组具有明确几何差异的蜗杆实体模型,有效验证了所提方法在变参数蜗杆传动结构快速生成方面的可靠性与适应性,为高精度传动元件的数字化设计与分析提供了可行的技术路径与方法论支持。
Figure 10. Parameter 2 model diagram
图10. 参数2模型图
3.2. 程序的性能测试数据
在统一硬件平台环境下,本研究对两组不同参数蜗杆的自动化建模过程进行了系统性的性能评估。针对第一组参数(单头蜗杆),录制的宏程序总运行时间为28.5秒,峰值内存占用为1.2 GB;在结构更为复杂的第二组参数(双头蜗杆)条件下,运行时间增至36.8秒,内存占用峰值达到1.5 GB。与传统手工交互建模方式(平均耗时约15~20分钟)相比,自动化建模的效率提升极为显著,耗时仅为人工操作的3%~4%。结果表明,所开发的VBA宏程序在严格保证模型几何精度的前提下,展现出优异的执行效率与稳定的系统资源管控能力,特别适用于需要高一致性及快速迭代的系列化传动零部件设计与开发场景。
3.3. 模型精度验证结果
为系统评估生成模型的几何精度,本研究采用与SolidWorks手动构建的参照模型进行对比分析的验证方法。通过集成开发环境内置的几何比对模块及尺寸公差分析工具进行检测,结果表明:由宏程序生成的蜗杆模型齿廓最大偏差小于0.005 mm,螺旋线误差不超过0.008 mm,分度圆直径尺寸与理论设计值完全吻合。在蜗杆–涡轮副的啮合性能验证中,自动化生成模型展现出更优异的齿面接触特性,未出现几何干涉现象,且装配中心距误差严格控制在±0.01 mm范围内。精度验证结果表明,基于参数化宏程序所生成的模型不仅在关键几何特征方面显著优于人工建模结果,同时具备高度一致的尺寸稳定性与良好的可重复性,完全满足高精度传动系统的设计与制造要求。
4. 总结与展望
本文采用VBA (Visual Basic for Applications)语言,基于Visual Studio的VB编辑器开发环境,结合SolidWorks三维建模软件,开发了一套专门针对阿基米德圆柱蜗杆的自动参数化设计程序。在程序开发过程中,首先通过SolidWorks宏录制功能获取基础建模代码,随后对原始代码进行了系统性的修改与调试,重点改写了蜗杆螺旋齿面的几何坐标计算算法,并设计了友好的用户交互界面。此外,程序还集成了标准的蜗杆强度校核公式,实现了设计计算与建模的一体化。该程序具有高度自定义功能,操作者可通过输入界面灵活设定蜗杆的模数、分度圆直径、头数、涡轮齿数以及旋向等关键结构参数,系统即可自动生成符合设计要求的蜗杆三维模型。
与现有主流解决方案相比,本研究构建的系统在功能完整性与专业针对性方面体现出明显优势。相较于SolidWorks Toolbox所提供的有限标准化蜗杆类型及固定参数范围,本研究实现了对阿基米德蜗杆齿形的全参数化定制能力,能够生成具有更高几何精度的蜗杆模型;与GearTrax等专业齿轮设计插件相比,本系统不仅具备参数化建模功能,还深度融合了符合行业标准的强度校核算法,形成了集设计、计算与建模于一体的自动化工作流程,从而有效避免了多平台切换导致的数据传递误差与操作效率损失,在面向专用传动部件的设计适应性、功能集成度与工程实用价值方面均表现出显著提升。
然而,本研究尚存在以下需要改进的局限性:首先,程序目前仅实现了静态参数化建模功能,尚未对所建蜗杆模型进行动态故障诊断分析,无法实时监测蜗杆传动过程中的异常振动或磨损情况;其次,虽然程序包含了理论强度计算模块,但缺乏有限元强度仿真验证环节,难以直观展示蜗杆在实际工况下的应力应变分布情况。这些不足主要受限于当前研究条件和时间因素,在后续研究中,笔者计划引入ANSYS等有限元分析工具,建立蜗杆传动的多物理场耦合模型,对其接触应力分布、热变形特性以及疲劳寿命等关键性能指标进行深入评估。同时,还将考虑集成MATLAB/Simulink进行动力学仿真,以构建更为完善的蜗杆参数化设计与性能评估一体化系统,为工程实际应用提供更可靠的设计工具。
附 录
Imports System.Math
Public Class Form1
Dim m, d1 As Double
Dim z1, z2 As Integer
Dim Direction As String
Dim hax#, cx#, Alpha#, ha1#, hf1#, h1#, da1#, df1#, px#, b1#
Sub Numcalcuation()
m = Val (ComboBoxm. Text)/1000
d1 = Val (ComboBoxd1.Text)/1000
z1 = Val (ComboBoxz1.Text)
z2 = Val (ComboBoxz2.Text)
Direction = ComboBoxDirection.Text
hax = 1 '计算赋值
cx = 0.2
Alpha = 20 / 180 * PI
ha1 = m * hax
hf1 = m * (hax + cx)
h1 = ha1 + hf1
da1 = d1 + 2 * ha1
df1 = d1 − 2 * hf1
px = m * PI
If z1 = 1 Or z1 = 2 Then
b1 = (12 + 0.1 * z2) * m
Else
b1 = (13 + 0.1 * z2) * m
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'计算数据
Call Numcalcuation()
Dim swApp As SldWorks. SldWorks
swApp = CreateObject ("sldworks.application") '打开solid works
swApp.NewDocument("C:\ProgramData\Solidworks\SOLIDWORKS2016\templates\gb_part.prtdot", 0, 0, 0) '新建零件
'找到要建模的零件
Dim Part As SldWorks.ModelDoc2
Part = swApp.ActiveDoc
'创建基准轴
Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, True, 0, Nothing, 0) '选中前视基准面
Part.Extension.SelectByID2("上视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0) '选中上视基准面
Part.InsertAxis2(True)
'拉伸草图1
Part.Extension.SelectByID2("右视基准面", "PLANE", 0, 0, 0, False, 32, Nothing, 0) '选中右视基准面
Part.SketchManager.InsertSketch(True)
Part.SketchManager.CreateCircleByRadius(0, 0, 0, da1/2) '画圆
'Part.SketchManager.CreateCircle(−0#, 0#, 0#, 0.019882, −0.009341, 0#)
Part.AddDimension2(0, 0, 0) '给圆标尺寸
Part.SketchManager.InsertSketch(True) '完成草图1
Part.FeatureManager.FeatureExtrusion2(False, True, False, 6, 0, b1, 0, False, False, False, False, 0, 0, False, False, False, False, True, False, True, 0, 0, False) '拉伸
'新建草图2
Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 32, Nothing, 0) '选中前视基准面
Part.SketchManager.InsertSketch(True) '新建草图2
'画梯形
Dim x1, x2, x3, y1, y2 As Double
y1 = df1/2 '计算尺寸
y2 = d1/2 + hf1
x1 = −b1
x2 = −b1 + (PI * m/4 − hf1 * Atan (Alpha))
x3 = −b1 + PI * m/4 + (PI * m/4 − hf1 * Atan (Alpha))
Part.SketchManager.CreateLine(x1, y2, 0#, x3, y2, 0#) '画直线
Part.SketchManager.CreateLine(x3, y2, 0#, x2, y1, 0#)
Part.SketchManager.CreateLine(x2, y1, 0#, x1, y1, 0#)
Part.SketchManager.CreateCenterLine(x1, y2, 0#, x1, y1, 0#)
Part.Extension.SketchBoxSelect(−2 * b1, da1, 0, 0, 0, 0)
Part.SketchMirror() '草图镜像画梯形
'标尺寸
Part.SketchManager.InsertSketch(True) '退出草图
'新建草图3画螺旋线
Part.Extension.SelectByID2(" ", "FACE", −b1/2, 0, 0, False, 32, Nothing, 0) '选中左单面
Part.SketchManager.InsertSketch(True) '新建草图3
Part.SketchManager.CreateCircleByRadius(0, 0, 0, d1 / 2) '画圆
Dim WormDirection As Boolean = IIf(Direction = “右旋”, True, False)
Part.InsertHelix(True, Worm Direction, False, True, 2, 2 * b1, px * z1, 0, 0, PI/2) '画螺旋线
'扫描切除
Part.Extension.SelectByID2("草图2", "SKETCH", 0, 0, 0, False, 1, Nothing, 0)
Part.Extension.SelectByID2("螺旋线/涡状线1", "REFERENCESURVES", 0, 0, 0, True, 4, Nothing, 0) '选中螺旋线和梯形草图
Part.FeatureManager.InsertCutSwept4( False, True, 0, False, False, 1, 0, False, 0, 0, 0, 10, True, True, 0, True, True, True, False) '扫描切除
If z1 <> 1 Then
Part.Extension.SelectByID2("切除扫描-1", "BODYFREATURE", 0, 0, 0, False, 4, Nothing, 0)
Part.Extension.SelectByID2("基准轴", "AXIS", 0, 0, 0, True, 1, Nothing, 0)
Part.FeatureManager.FeatureCircularPattern4(z1, PI * 2, False, "NULL", False, True, False) '圆周阵列
End If
'隐藏草图
Part.Extension.SelectByID2("螺旋线/涡状线1", "REFERENCECURVCES", 0, 0, 0, False, 0, Nothing, 0)
Part.Extension.SelectByID2("基准轴1", "AXIS", 0, 0, 0, True, 0, Nothing, 0)
Part.BlankRefGeom() '隐藏螺旋线、基准轴
Part.Extension.SelectByID2("草图", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.BlankSketch() '隐藏草图
'保存
Part.EditRebuild3() '重建模型
Part.ClearSelection2(True) '清空选择项
Part.ShowNamedView2("*等轴测", 7) '正等侧视角
Part.ViewZoomtofit2() '整屏显示
Part.SaveAs3(Application.StartupPath & "\蜗杆(ZA) " & z1 & "X" & m * 1000 & ".SLDPRT", 0, 2)
End Sub
End Class