基于特征的轴参数化绘图系统
2014-03-23孙志学
孙志学, 张 扬
(陕西理工学院 机械工程学院, 陕西 汉中 723000)
计算机辅助设计在各行业的应用已经十分广泛,绝大部分的CAD软件常常是一种通用的绘图设计软件,它们适应的行业比较广泛,但专业性不强,无法在特定领域或行业很好地发挥辅助设计作用。为了使CAD软件能在某些特定的专业领域得到更好的应用,对CAD软件进行有目的、有方向、专业化的二次开发是很必要的。下面主要对机械设计中的轴零件的参数化绘图系统进行研究。
1 轴的概述
1.1 轴的分类
图1 轴的分类
轴是组成机械的主要零件之一。按照轴线形状的不同,轴可分为两大类:直轴和曲轴。直轴按照所受载荷性质的不同,可分为三种:心轴、传动轴和转轴。直轴根据外形的不同,可分为两种:光轴和阶梯轴。光轴具有下列特点:形状简单,加工容易,应力集中源少,光轴主要用于传动轴;阶梯轴与光轴相反,阶梯轴常用于转轴。轴的分类情况可以用图1清晰表示。此外,还有一些特殊用途的轴,如凸轮轴和钢丝软轴等。
1.2 轴的特征分析
在特征的基础上可以考虑建立轴的信息模型。通常一个机械零部件包含有众多的特征,其中形状特征是这些特征中最重要的,它是其它信息的载体。可以把形状特征进行分解研究,认为若干辅助特征和主特征组合而成了轴的形状特征,主特征间的空间相互位置关系是邻接关系;辅助特征附属于一个主特征,辅助特征可依附于主特征的轮廓表面或端面[1]。
根据这种思想,本系统设计中采用了复合形状特征,即由至少一个主形状特征和若干个辅助形状特征以一定的结合方式组合成具有特定功能的形状特征。可以考虑建立多种不同复合形状特征的特征库,供设计者选择。
结合本系统的实际情况,对常用直轴类零件进行特征分析,得到如表1所示的形状特征划分结果。
表1 直轴类零件形状特征分类
2 系统开发相关技术简介
2.1 参数化设计技术
当前CAD技术重要的研究领域之一是参数化技术。它是指对结构形状有一定规律的设计对象,可以把对象的结构尺寸用一组参数来表示,当参数取值不同时则可以生成不同的设计对象,即设计结果受尺寸驱动的影响,所以又称为参数化尺寸驱动[1]。
2.2 ObjectARX
ObjectARX是一个软件开发包,它包含一组动态链接库,这些库能利用AutoCAD核心数据库结构与代码。库中包含一组通用工具,使得二次开发者可以直接访问AutoCAD数据库结构、图形系统及CAD几何造型核心,以便能在运行期间实时扩展AutoCAD具有的类似其功能以及创建全面享受AutoCAD固有命令之特权的新命令[2]。
2.3 相关接口技术
ObjectARX应用程序主要包含头文件部分、函数声明部分、接口函数部分和用户函数主体部分[2]。其中接口函数部分使用initApp( )、acrxEntryPoint( )和unloadApp()三个关键函数。当应用程序被加载时,AutoCAD调用initApp( );当应用程序被卸载时,AutoCAD调用unloadApp( )。这两个函数均是通过acrxEntryPoint( )函数来实现AutoCAD调用的。
ObjectARX是一个用C++编写的软件开发包,在Visual C++的下拉菜单“Project”中设置其具体物理路径就可以使用它。 具体操作为:“Project”→“Setting”→“C/C++”→“Preprocessor” →“Additional include directories”,在其后的编辑框中输入ObjectARX中的文件夹inc的具体物理路径;同理按照操作路径:“Project”→“Setting”→“Link”→“Input” →“Additional library path”,在其后的编辑框中输入ObjectARX中的文件夹lib的具体物理路径。这样就可以在Visual C++程序中使用ObjectARX中的函数。
本研究以AutoCAD 2006为开发平台,并采用Visual C++6.0、ObjectARX等开发工具开发基于特征的轴参数化绘图系统。
3 系统菜单设计
本设计是基于AutoCAD平台来进行开发的,设计了轴CAD系统子菜单,并把它添加到AutoCAD的标准菜单文件ACAD.mnu中。同时还开发了图像块菜单,这样将会大大增强用户界面的效果。新的菜单文件ACAD.mnu被加载、编译后就可以使用[3]。当用鼠标点击用户自定义菜单“轴CAD系统”时,出现下拉菜单。下拉菜单中内容有:设置、轴的分类等;其中菜单项“设置”有子菜单:图幅、层和线型、文字样式和标注样式,“图幅”可以用来绘制出图的图幅,其它几个菜单项在绘图时起辅助作用;菜单项“轴的分类”有子菜单:直轴和曲轴,系统子菜单设计效果(部分截图)如图2所示。
图2 系统子菜单
用户自定义菜单中某些菜单项含有图像控件菜单[4],如“直轴”。当用鼠标单击菜单项“直轴”时,系统弹出图像块菜单“直轴特征分类”对话框,如图3所示。对话框中展示了各种直轴的原型及其对应的图形,图中左侧的列表框中显示的是直轴的名称,右侧显示了直轴的预览图形。例如当在“直轴特征分类”中选择“圆柱面+倒角”时,右侧预览区显示对应的图形预览(预览图形底色变黑),其中“圆柱面”是此直轴的主特征,“倒角”是它的辅助特征。选中类型后,单击按钮“确定”,就可以打开此直轴的设计对话框。
图3 图像块菜单
图4 直轴结构设计对话框
4 轴参数化绘图系统的实现
4.1 对话框设计
以“圆柱面+圆角+倒角(逆向)”为例。当用户在图3中选择“圆柱面+圆角+倒角(逆向)”时系统自动显示对应幻灯片,此时用鼠标单击该对话框中的按钮“确定”,便可以关掉图3的对话框,弹出“圆柱面+圆角+倒角(逆向)”的设计对话框如图4所示。
在图4所示的直轴结构设计对话框中输入直轴的绘制图形的定位点参数和设计参数[5]:R、B、D、L、a(各长度参数单位为mm,角度单位为度,各参数的意义如图中左侧图形预览中尺寸标注所示)。其中“图形定位点P0”既可以在对应编辑框中输入点的坐标也可以在绘图区域拾取点的坐标。
4.2 轴零件工作图的绘制
设计参数输入后,单击图4中的按钮“确定”,系统弹出子对话框“选择绘图比例”。当用户选择了需要的比例,然后单击子对话框中的按钮“绘制零件工作图”,系统可自动绘制出与设计参数相对应的轴零件工作图,并对图形进行自动尺寸标注。
取一组合理的数据:插入点X=50,Y=50;R=50,a=45,B=50,D=200,L=300,则绘制出直轴的零件工作图如图5所示。为方便起见零件工作图绘图中比例都选择为1∶1。另外设计过程中如果输入的设计参数不合理,则点击图4中“确定”按钮时系统有相应的提示信息,要求用户输入合理的参数。
如果再次改变参数的值,则可得到类似的零件工作图,此处不再赘述。当用户选择其它类型的轴时,系统绘图过程和结果与上边类似,如系统可生成带有双圆头平键的直轴(见图6)。
图5 简单直轴的零件工作图 图6 带有双圆头平键的直轴
4.3 部分关键绘图程序
在VC中编程实现ObjectARX的应用程序[6],首先需要在本系统中构造直轴类零件特征库,具体是采用面向对象的方法来描述复合特征信息模型。首先定义特征基类,然后通过特征基类派生出其它特征类。
轴的零件工作图的绘制代码可以添加到选择比例的对话框中的“确定”按钮对应的消息处理函数中,以“圆柱面+倒角+圆角(逆向)”直轴的零件工作图的绘制为例,其核心代码如下:
……
//定义一系列三维点
//定义俯视图上的可见点,即实线点
ads_point pt0,pt1,pt2,pt3,pt4,pt5,pt6,pt7, pt8,pt9, pt10,pt12, pt13;
//下面点用于画中心线
ads_point pt11,pt14;
//求一系列点的坐标
pt0[X]=XPT; pt0[Y]=YPT; pt1[X]=pt0[X]; pt1[Y]=pt0[Y]+0.5*L0-B*tan(a);
pt2[X]=pt0[X]+B; pt2[Y]=pt0[Y]+0.5*L0; pt3[X]=pt0[X]+L-R; pt3[Y]=pt2[Y];
pt4[X]=pt0[X]+L; pt4[Y]=pt2[Y]; pt5[X]=pt4[X]; pt5[Y]=pt4[Y]+R;
pt6[X]=pt4[X]; pt6[Y]=pt4[Y]-L0; pt7[X]=pt4[X]; pt7[Y]=pt6[Y]-R;
pt8[X]=pt4[X]-R; pt8[Y]=pt3[Y]-L0; pt9[X]=pt2[X]; pt9[Y]=pt2[Y]-L0;
pt10[X]=pt0[X]〗; pt10[Y]=pt9[Y]+B*tan(a); pt11[X]=pt4[X]+10; pt11[Y]=pt0[Y];
pt12[X]=pt3[X]; pt12[Y]=pt5[Y]; pt13[X]=pt8[X]; pt13[Y]=pt7[Y];
pt14[X]=pt0[X]-10; pt14[Y]=pt0[Y];
//清屏
acedCommand(RTSTR,"Erase",RTSTR,"All",RTSTR,"",RTNONE);
//绘制图中直线
acedCommand(RTSTR,"Line",RTPOINT,pt0,RTPOINT,pt1,RTSTR,"",RTNONE);
acedCommand(RTSTR,"Line",RTPOINT,pt1,RTPOINT,pt2,RTSTR,"",RTNONE);
acedCommand(RTSTR,"Line",RTPOINT,pt2,RTPOINT,pt3,RTSTR,"",RTNONE);
acedCommand(RTSTR,"Line",RTPOINT,pt4,RTPOINT,pt5,RTSTR,"",RTNONE);
acedCommand(RTSTR,"arc",RTSTR,"C",RTPOINT,pt12,RTPOINT,pt3,RTPOINT,pt5,RTNONE);
acedCommand(RTSTR,"Line",RTPOINT,pt4,RTPOINT,pt6,RTSTR,"",RTNONE);
acedCommand(RTSTR,"Line",RTPOINT,pt6,RTPOINT,pt7,RTSTR,"",RTNONE);
acedCommand(RTSTR,"arc",RTSTR,"C",RTPOINT,pt13,RTPOINT,pt7,RTPOINT,pt8,RTNONE);
acedCommand(RTSTR,"Line",RTPOINT,pt8,RTPOINT,pt9,RTSTR,"",RTNONE);
acedCommand(RTSTR,"Line",RTPOINT,pt9,RTPOINT,pt10,RTSTR,"",RTNONE);
acedCommand(RTSTR,"Line",RTPOINT,pt10,RTPOINT,pt0,RTSTR,"",RTNONE);
acedCommand(RTSTR,"Line",RTPOINT,pt2,RTPOINT,pt9,RTSTR,"",RTNONE);
//画中心线
//创建一个新层:1层,用于画中心线且此层的颜色选择红色
acedCommand(RTSTR,"Layer",RTSTR,"M",RTSTR,"1",RTSTR,"C",RTSTR,"Red",RTSTR,"",
//加载并设置中心线
acedCommand(RTSTR,"Linetype",RTSTR,"Load",RTSTR,"CENTER",RTSTR,"",RTSTR,"Y",
//画中心线
acedCommand(RTSTR,"Line",RTPOINT,pt14,RTPOINT,pt11,RTSTR,"",RTNONE);
//设置当前层为"实体"层acedCommand(RTSTR,"layer",RTSTR,"S",RTSTR,"0",RTSTR,"",RTNONE);
……
其它轴零件工作图的绘制核心代码与上边的代码类似,不再赘述。
5 结 语
轴是机械中一种常用的零件,它的种类繁多,结构较复杂,这些都给设计工作带来了许多困难。本研究中通过轴的特征分析,在Visual C++中采用面向对象的方法建立若干基类和基类的派生类等,并编程实现了轴参数化绘图系统。研究发现:特征分析技术可以大大提高CAD系统的描述能力,从而提高CAD系统的建模能力。在机械设计中,轴的设计还涉及一些扭矩、弯矩、轴径等参数的计算以及强度、刚度等的校核[7-9]。在以后的工作中,应对系统功能进一步扩充,可以考虑在系统添加这些计算、校核等功能,从而增强系统的集成化、智能化。
[参考文献]
[1] 李玉峰.基于特征与数据库的轴CAD系统(SHAFTCAD)开发与研究[D].西安:西安建筑科技大学,2002:7-19.
[2] 王福军,张志民,张师伟.AutoCAD2000环境下C/Visual C++应用程序开发教程[M].北京:北京希望电子出版社,2008:3-4.
[3] 梁雪春,宋德明.AutoCAD2002二次开发技术指南[M].北京:清华大学出版社,2001:111-116.
[4] 葛敬侠,崔洪斌.塔设备CAD参数化绘图系统研究与开发[J].机械设计与制造,2006(1):75-77.
[5] 杨可桢,程光蕴.机械设计基础[M].5版.北京:高等教育出版社,2011:244-251.
[6] 陈海霞,高广德.基于ObjectARX和Visual C++开发工具的格栅参数化设计[J].三峡大学学报:自然科学版,2006,28(1):61-64.
[7] 周慧兰,周新建.轴强度设计及自动修改CAD系统研究与实现[J].华东交通大学学报,2007,24(5):53-56.
[8] 易慧君,钟经农.减速器轴系部件CAD系统的研制[J].湖南大学学报:自然科学版,2003,30(3):41-43,61.
[9] 潘秀石,倪俊芳.基于Solid Edge轴参数化设计系统研究[J].苏州大学学报:工科版,2012,32(3):21-25.