基于SolidWorks的柴油机曲轴特征参数化建模
2018-03-20刘方,刘炜
刘 方,刘 炜
(1.江苏联合职业技术学院 无锡交通分院,江苏 无锡 214151;2.江苏科技大学 能源与动力工程学院,江苏 镇江 212003)
0 引言
曲轴是柴油机最重要的部分之一,工作环境恶劣,各部分承受弯曲、扭转、拉压和剪切等力的作用,要求有足够的疲劳强度、弯曲刚度和扭转刚度。为了满足以上条件,在设计曲轴的过程中,需要对曲轴进行建模分析,大量重复性模型绘制工作和修改简化工作会降低生产效率,因而寻找一种高效的三维建模方法有其必要性。
基于SolidWorks二次开发的特征参数化建模方法能有效解决上述问题,本文使用VB.NET程序开发平台,以参数化设计思想为主导,对SolidWorks进行二次开发。具体方法为:以曲轴的主轴颈直径D1和长度L1、连杆轴颈直径D2和长度L2、平衡臂厚度H五个重要参数为变量,对曲轴进行基于特征参数化建模,将柴油机曲轴特征的每个建模步骤都用程序反映出来,通过相关参数控制完整模型的生成。
1 SolidWorks二次开发
SolidWorks是以Windows为开发环境的CAD/CAE/CAM/PDM的桌面集成系统[1]。SolidWorks具有开放的外部接口,提供了二次开发的环境和开放的数据结构,用户可应用VBVBAVCDelphi等编程语言,在SolidWorks上实现自定义功能,这种技术叫作SolidWorks二次开发。为了方便二次开发,Solid-Works通过OLE(Object Linking and Embedding,对象的嵌入与链接)或者COM(Component Object Model, 组件对象模型接口)为用户提供了自由开放、功能完整的二次开发接口API(Application Program Interface)函数,来创建专门化的SolidWorks应用模块。
以VB.NET为开发环境,引用API函数方法以及创建对话框的步骤为:
(1)安装SolidWorks API SDK文件,打开Microsoft Visual Basic,并新建项目“Windows窗口应用程序”。
(2)在解决方案资源管理器中右键“引用”,点击“添加引用”,打开SolidWorks所在目录,将SolidWorks.Interop.sldworks.dll和SolidWorks.Interop.swconst.dll两个头文件添加到引用。
(3)进行对话框界面设计。
(4)引用要添加的头文件。
(5)编写主程序代码。
(6)运行代码程序。
2 特征参数化建模
参数化建模是指在建模之前对模型的构造特征进行分析,提取模型特征参数,通过建立参数与模型之间的对应关系,输入控制参数即可创建模型[2]。基于特征的参数化建模方法的关键是形成和约束参数化特征[3],是CAD/CAPP/CAM的热点研究方向。特征可分为形状特征、精度特征、技术特征、材料特征和装配特征[4]等。基于特征的参数化建模技术就是将基于特征的建模和参数化有机结合起来,使特征本身包含参数化设计所需的成员变量和成员函数,采用带有语义的特征描述方式,通过改变参数,随时调整产品的结构和尺寸,驱动特征随之变化[4]。基于特征的参数化建模比较复杂,它的程序语言记录了零件构建过程中的每一步信息操作,完整地展现出产品的工程语意和形状信息,多应用于复杂产品的创建。
3 柴油机曲轴特征参数化的建模实例
以CZ 380型柴油机曲轴为例,根据曲轴的重要参数来进行特征参数化建模。
3.1 曲轴设计参数取值范围的确定
(1)柴油机缸径D为80 mm。
(2)主轴颈直径D1:理论上主轴颈需要承受的力只是连杆轴颈的一半,但是考虑到整个曲轴的刚度要求,实际设计中主轴颈直径应大于连杆轴颈的直径,故取D1/D=0.65~0.80。
(3)主轴颈长度L1:一般情况下取L1/D=0.35~0.45。
(4)连杆轴颈直径D2:连杆轴颈直径越大,曲轴可承受的扭矩越大,柴油机产生的功率越大。但随着直径的增大,曲轴的转动惯量也随之增加,共振现象会更加明显,在平衡臂厚度不大的情况下,容易产生应力集中。综合以上的因素,取连杆轴颈直径D2/D=0.60~0.65。
(5)连杆轴颈长度L2:一般情况下取L2/D=0.35~0.45。
(6)平衡臂厚度H:平衡臂的H应尽量大一点,取H/D=0.20~0.25。
3.2 绘制曲轴各段特征主要应用的函数
主要调用Solid works API。
(1)选择草图基准面:swModelDocExt.SelectByID2(Name, Type, XPos / 1000, YPos / 1000, 0, False, 0, Nothing, 0)。
(2)插入草图:swModel.InsertSketch()。
(3)激活草图:swSketchMgr.ActiveSketch。
(4)绘制圆:swSketchMgr.CreateCircleByRadius(xc / 1000, yc / 1000, 0, diameter / 2000)。
(5)绘制小圆:swSketchMgr.CreateCircleByRadius(Cos(PI / 3) * (60 / 2000), Sin(PI / 3) * (60 / 2000), 0, 8.5 / 2000)。
(6)拉伸命令:swFeatureMgr.FeatureExtrusion(True, False, False, 0, 0, height / 1000, 1, False, False, False, False, 1, 1, False, False, False, False, True, False, True)。
(7)拉伸切除:swFeatureMgr.FeatureCut(True, False, False, 0, 0, 0.1, 0.1, False, False, False, False, 0, 0, False, False, False, False, False, True, True)。
调用API,通过编写曲轴各段特征的函数,分别绘制:起始端凸台、主轴颈和连杆轴颈、平衡臂、末端凸台及键槽,见图1。
教学设计方面 在高职大学英语教学设计过程中,课前、课中、课后、课外四个阶段都要将教学活动同核心素养培养有机结合起来,围绕基于核心素养四个要素的教学目标展开,保障教学活动实施,提升高职学生英语语言应用能力、自主学习能力等核心能力,帮助他们养成良好的思维品质,树立正确的文化意识。
图1 绘制的曲轴各段特征
3.3 应用窗口及曲轴整体建模设计
创建图2所示的程序应用窗口。创建六组Lable控件和Textbox控件作为参数提示和参数输入框。添加一个Button控件,取名“OK”,控制程序执行开始。
图2 绘制曲轴对话框
曲轴建模整体分为三部分:第一部分绘制起始端两个凸台;第三部分绘制末段三个凸台和两个键槽;第二部分绘制相对复杂,分为12个拉伸特征,见图3。具体流程见图4。Button“OK”的执行命令反映了整个参数化建模思路,将单独列出程序代码并作说明。
图3 曲轴分段图解
图4 曲轴建模流程图
最终生成的曲轴模型见图5。
图5 曲轴模型图
3.4 部分建模流程主体程序及说明
(1)创建两个变量,即x、y的坐标平面,在y轴上,选择绘制草图位置面,其中案例曲轴为轴类,z轴方向基本不需要变化,所以无需变量。
Dim xPos As Double,yPos As Double
(2)绘制基础第一部分凸台:两个圆凸台。
drawForOneCylinderEntity() '自定义特征函数
(3)绘制中间随参数变化的部分(共12个拉伸特征)。
每个部分特征绘制的步骤相似:分别为:缩放到合适大小显示模型;新的草图绘制面的位置xpos和ypos的值;绘制草图和拉伸凸台。
swModel.ViewZoomtofit()
xPos = 26 + 5
drawCylinderEntity("右视基准面", "PLANE", 0, 0, 0, 0, TextBoxD1.Text, TextBoxL1.Text, 0)′自定义特征函数
绘制2部分特征:缩放合适大小;选择面位置叠加上一个特征的深度L1;平衡臂拉伸凸台:复杂草图,根据D1、D2、H绘制凸台。
swModel.ViewZoomtofit()
xPos = xPos + TextBoxL1.Text
drawSketchAndExt("", "FACE", xPos, 0, 0, TextBoxD1.Text, TextBoxD2.Text, TextBoxH.Text, 0) '自定义特征函数
绘制3部分特征:缩放合适大小;选面参数叠加(此处为绘制连杆轴凸台,需要绘制一个不在草图中心的圆,需要偏离数值ypos);绘制连杆轴,选面使用xpos和0。圆中心位置:0和ypos。根据D2、L2绘制连杆轴。
swModel.ViewZoomtofit()
xPos = xPos + TextBoxH.Text
yPos = -TextBoxD1.Text / 2
drawCylinderEntity("", "FACE", xPos, 0, 0, yPos, TextBoxD2.Text, TextBoxL2.Text, 0) '自定义特征函数
绘制4部分特征:缩放合适大小;选面参数叠加;绘制第二个相同平衡臂(由于上一个特征的连杆圆形不在零件中心,选面会选不中,需要使用xpos、ypos选面。
swModel.ViewZoomtofit()
xPos = xPos + TextBoxL2.Text
drawSketchAndExt("", "FACE", xPos, yPos, 0, TextBoxD1.Text, TextBoxD2.Text, TextBoxH.Text, 0) '自定义特征函数
绘制5、6、7、8四部分特征,与上面的方法相同,不同之处为:平衡臂的方向需要改变120°,此处代码省略。
绘制9、10、11、12四部分特征,与上面的方法相同,不同之处为:平衡臂的方向需要改变240°,此处代码省略。
(4)绘制末端的三个凸台。
swModel.ViewZoomtofit()
xPos = xPos + TextBoxH.Text
drawForTwoCylinderEntity(xPos, 0, TextBoxD1.Text) '自定义函数
3.5 主要难点与解决方法
(1)难点1:不规则图形的复杂草图绘制比较困难,例如曲轴平衡臂草图的绘制。
方法:需要换算输入参数与各个草图线的对应关系,根据不同的参数创建不同的草图线(包含直线的位置,圆弧的圆心、半径及圆弧长度、位置)。
具体步骤为:先绘制arc1、arc2两端圆弧,获得圆弧起始点和终止点P1、P2、P3和P4,通过点P1和坐标(P3x,P1y)画出直线line1,同理可获得line3,再获得line1、line2的终止点P5、P6,最后连接P3和P5、P4和P6获得line2和line4。草图及标记见图6。
图6 平衡臂草图
(2)难点2:选择已有的实体的面创建草图。
方法:由于实体表面在SolidWorks中不具有名称,无法直接调用获取此面。根据SolidWorks中鼠标点选面的方式,设定坐标点选中面,代码如下:
boolStatus=swPart.Extension.SelectByID2("", "FACE",X,Y,Z ,False,0, Nothing, 0)
说明:第一个参数为空,因为所选对象(面)不具有名称,类型为“FACE”,再根据XYZ坐标点(只要这个点在面上即可),选中此面。为方便起见,这里的圆凸台的草图选择点设置在圆心,平衡臂的草图选择点设置在arc2弧中心。当绘制首末两组凸台、主轴颈和第一组平衡臂和连杆轴颈时,由于没有旋转角度,草图选择点只需在x轴和y轴方向变化,无需引入z坐标。当绘制第二组和第三组的第二段平衡臂时,由于需要分别旋转120°和240°,草图选择点除了要考虑其在x轴与y轴的坐标变化,还要引入z轴坐标变化。例如绘制第二组的第二段的平衡臂,代码如下:
′平衡臂2,旋转角度不再是0,而是PI * 2 / 3;并且选面位置也发生变化,使用X值:xpos;Y值:-Sin(PI / 3) * yPos;Z值:Cos(PI / 3) * yPos三个参数选中上一个连杆凸台的中心以选中面(注意,此处的ypos的值原本为负数)
xPos=xPos + TextBoxL2.Text′选取点x坐标确定
drawSketchAndExt("", "FACE", xPos, -Sin(PI / 3) * yPos, Cos(PI / 3) * yPos, TextBoxD1.Text, TextBoxD2.Text, TextBoxH.Text, PI * 2 / 3) ′参数中对选取点y、z坐标进行换算
4 结语
采用特征参数化建模能够快速准确地创建柴油机曲轴模型,针对模型的完成情况,应进一步完善曲轴其余参数的添加,例如飞轮端、键槽等尺寸参数设置,以满足更多参数需求的设计工作。
基于SolidWorks二次开发的特征参数化建模方法,符合产品研发和设计的需求,能有效提高各种产品的三维建模的效率,具有普遍适应性。