基于装配特征的机械零件三维建模研究与实现
2014-03-24杜浩
杜浩
(湖北工业大学,湖北 武汉 430068)
鉴于机械产品的复杂性,直观的三维图形在机械领域的应用日趋广泛。机械产品的三维建模与二维建模相比具有更大的优势:①三维建模更为形象直观,使得设计人员对机械产品的设计一目了然;②三维建模可以实现参数化、模块化设计,即通过修改某参量的数值来改变机械产品的结构与尺寸;③三维建模有利于实现CAD、CAM、CAE、CAPP、PDM、ERP等机械产品信息化软件的集成,即实现机械产品设计制造的信息集成及信息流自动化传播,使得机械产品的制造精度与设计一致;④三维建模使得机械设计中方便的对所需零件进行有限元分析,优化零件的形状,保证零件工作时的可靠性,因此实现机械产品三维图形的建模具有重要的理论及实际价值。
OpenGL是一种大型的专业图形图像处理接口,被广泛应用于CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中。鉴于OpenGL在图形图像处理上的优越性能,因此可用OpenGL与VC++6.0来对机械零件三维图形进行建模。王兰美等详细介绍了Windows NT系统环境在VC++中运用OpenGL进行三维建模的机制;强大再等研究了运用OpenGL进行三维仿真的优点、仿真几何模型的构建、模型运动轨迹的确定、仿真过程的动态显示以及仿真真实感实现的具体算法与策略,取得了较好的视觉效果。在此基础上,学者们将此方法引入机械行业,对机械产品进行三维建模。李丽荣等运用3DSMAX软件对武装直升机等进行三维建模,并将其装换成OpenGL程序降低了复杂模型的难度,减小了建模的工作量;吕希奎等基于OpenGL与VC++6.0,从图形图像学角度对高速列车进行了可视化方仿真,取得了较好的效果。由于机械零件的三维建模直接影响后续的装配工艺,因此建模时需考虑其装配特征。文章在深入分析机械零件装配特征的基础上,提出了运用机械零件装配特征参数对零件进行三维建模的方法,通过OpenGL与VC++6.0,建立机械零件的三维模型,研究在VC++6.0中运用OpenGL进行建模的基本思路,并通过实例验证文章方法的正确性。
1 装配特征建模
零件的设计与装配密不可分,零件的设计需要考虑其装配问题。零件的设计合理性可以从零件的装配检验出来:包括零件能否按图纸正常装配、零件之间是否存在干涉现象、需要有一定运动的零件工作状态是否正常、零件的使用寿命是否在允许范围等。因此,零件的三维建模不仅需要考虑零件的基本尺寸,还需要考虑零件所使用的材料、表面粗糙度等。基于以上原因,文章将零件的装配特征B表述为:构成零件的面信息P(包括平面、柱面、锥面、球面、螺旋面及其它曲面)、零件的公差信息T(形状公差Tf、位置公差Tp)、零件的材料信息M。因此,用数学式来表达零件的装配特征可如式(1)所示。
式(1)中面信息P及公差信息T可以表示为:
式(2)中P1、P2、P3……Pn可以是平面、柱面、锥面、球面、螺旋面及其它曲面,至此,联立式(1)、(2)、(3),可以得到零件的装配特征。
2 基于OpenGL的机械产品三维建模
(1)OpenGL的三维建模流程。OpenGL在屏幕上显示三维图像的主要原理如图1所示:
图1 OpenGL的处理流程
在屏幕上显示图像的处理流程可以表述为:①创建对象:OpenGL规定所有的图形单元都用顶点来进行描述。先将已有的顶点数据通过求值器构造几何要素(包括点、线、多边形、图像、位图等),通过数组等创建对象。②设置观察点:将对象置于某三维坐标系(空间)中,选择较优的视觉场景观察点。③进行扫描转化,也就是通过对象的数学描述以及相对应的颜色像素,进行转化,将它们变为显示屏幕上的像素,即光栅化。④设置颜色:通过光照条件及纹理获得对象的颜色或者自定义。⑤显示:将上述获得的像素存放在帧缓冲区中进行缓存便于将像素在屏幕上显示。
OpenGL与VC++6.0之间的图形接口是通过设置像素的格式以及关联DC和RC来实现的。首先,设置像素格式,然后建立RC。其中RC一般以线程为基础,每个线程必须将RC作为当前的RC才能够执行绘图命令,具体接口的主要实现步骤如下:①新建一个Win32程序(并非控制台程序),如建立项目名为OpenGLPart。②配置OpenGL的基础类库。在菜单中选择工程-设置-连接选项,然后在对象/库模块中增加OpenGL所需的类库,包括opengl32.lib,glu32.lib,glut32.lib。由于程序中要使用OpenGL类库,因此每个程序中需包含OpenGL类库的头文件,即:“#include"gl.h";#include"glu.h";#include"glut.h";”。③定义全局的变量,包括定义渲染的环境为“HGLRC hRC=NULL;”、设置GDI的设备环境为“HDChDC=NULL;”、获得当前窗口的句柄“HWNDhWnd=NULL”和创建实例“HINSTANCEhInstance”。④运用GLvoidReSizeGLScene(GLsizeiwidth,GLsizeiheight)函数调整场景,即设置窗口全屏与否,非全屏模式的可以调整窗口的宽度与高度。⑤设置OpenGL,包括屏幕的颜色glClearColor函数,平滑阴影glShadeModel函数,深度缓存glClearDepth函数、glEnable函数和glDepthFunc函数,透视修正glHint函数。⑥向intDrawGLScene(GLvoid)函数中添加绘制三维模型的代码,包括设置场景的中心位置(以X轴、Y轴和Z轴坐标来表示),绘制三角形、四边形甚至三维图形,给不同的图形着色,旋转图形等。设置纹理映射,主要用于得到三维实体模型更好的视觉效果,这样可以节省大量的运算时间;使用纹理过滤,提高三维实体模型的清晰度。
(2)机械产品三维建模实例。机械产品复杂多样,如图2所示本文以材料为20CrMoTi的简易阶梯轴为例来验证上述的研究方法。根据上述装配特征建模方法,可将各面表示成如式(1)所示形式。此轴共有5个面,因此P=",其中2个圆,一个圆环以及两个圆柱面。此处无公差显示,因此T为空。",因此通过上述编程步骤,intDrawGLScene(GLvoid)函数的代码可写成如下所示:
图2 简易阶梯轴
为了使得三维图形边界更加清晰,本文引入了多边形反锯齿的方法来解决此问题,绘制出来的简易阶梯轴图形如图3所示,将此零件的公差信息T和材料信息M等存入到指定的类中,此机械零件的三维模型就可以建立起来。由于建立之后的三维模型中存入了零件的几何尺寸、公差信息及材料信息,因此对零件进行装配时,通过零件的面特征P可以判断其装配方向,通过零件的公差信息可以判断零件间的装配关系,零件的材料信息可以为装配后的合理性提供一定的参考。
图3 Open GL生成零件图
3 结语
文章基于零件设计需考虑其装配特性这一思想,建立了零件的装配特征模型,提出了机械零件的装配特征参数。基于Open GL与VC++6.0对机械零件进行三维建模,研究了机械产品三维建模处理流程,通过对简易阶梯轴实例验证了本文模型的正确性。
[1]王兰美,赵继成,秦华东.OpenGL及其在VC++下的开发应用[J].武汉大学学报(工学版),2006,39(4):62-65.
[2]强大再,陆长德,余隋怀,何卫平.基于OpenGL的三维仿真实现[J].机械科学与技术,1999,18(5):846-838.
[3]李丽荣,沈春林,陆宇平,张晶敏.基于Open GL的飞行器超低空追击/拦截三维可视化仿真系统[J].南京航空航天大学学报,2005,37(3):269-273.
[4]吕希奎,周小平,贾晓秋.高速列车运动仿真可视化建模研究[J].图形学报,2013,31(1):87-91.
[5]Bourjault A.Contribution to methodological approach of au tomated assembly:automatic generation of assembly sequen ce[D].Besancon,France:Universityof Franche-Comté,1984.
[6]Lin AC,Chang TC.An integrated approach to automated assembly planning for three dimensional mechanical produ cts[J].International Journal of Production Reseach,1993,31(5):1201-1227.
[7]Shpitalni M,Elber G.Automatic assembly of three dimensio nal structure via connectivity graphs[J].Annals of the CIRP,1989,38(11):21-28.
[8]周江奇,来新民,金隼.基于产品模型数据交换标准的装配连接关系识别和提取[J].计算机集成制造系统,2006,12(8):1203-1210.
[9]杨奇彪,杨志宏,刘长安,付涛.基于面接触特性的装配方向的自动识别与提取[J].山东大学学报(工学版),2010,40(1):73-77.