引言
CAD技术在机械工业中的一个重要应用就是参数化设计,即对一些具有相似结构但尺寸经常改动的标准零件, 采用参数化设计的方法建立图形库,调出一组参数就能生成一个标准件图形。 本系统中包含一个常用机械设计标准资料库,使设计人员不必翻阅设计手册就可以在计算机上查到所需的信息, 除此之外本系统还提供了机械常用各种设计计算方法(包括校核和优化), 并将零件的设计计算和辅助绘图集成于统一的环境中,从而真正实现了设计与绘图一体化,明显提高了产品的设计效率。
1 标准件参数化设计系统的建模
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/autocad/)参数化CAD所面对的产品绝大多数为定型产品,这些产品的系列化、通用化、标准化程度高。机械标准件具有上述特点, 所以本系统建模根据参数化的建模思想来进行。系统的基本思路为:首先由用户选择所要设计的零件类型,然后选择设计行为(如对于圆柱齿轮设计有结构、校核或优化设计), 并由用户输入原始设计参数,这时零部件CAD子系统根据控制子系统传输过来的原始设计参数和所选设计行为进行相应设计活动, 最后由参数化绘图子系统接收设计结果, 在本系统中绘出相应的零件工作图,机械标准件设计系统软件的逻辑框图见图1。
图1 机械标准件设计标准软件的逻辑框图
2 软件设计中的关键技术
2.1 绘图公用模块的建立
基于程序设计模块化思想,为标准件绘图程序作了一个公用模块Common.arx,该模块对标准件图形环境做了统一规定,并对一些相同功能的程序模块(如参数输入、图形旋转等)进行了统一编制。另外对某类标准件来说,不同标准号对应的标准件结构基本是相同的,只是局部结构的改变, 因此对这些具有相同图形的部分也进行了模块化处理。这样既节省内存又使程序代码易于管理。以下对Common.arx中的初始化实体模式与作图环境子模块进行说明。
公用模块在AutoCAD下建立了三个层stand1(线型continuous,颜色white),stand2(线型center,颜色red),stand3(线型hidden,颜色white)分别放置标准件图形的粗细实线、中心线和虚线。另外在标准件插入图形以前,调用公用模块中的init()初始化作图环境,完成后再调用rest()恢复以前的作图环境。以下是init()程序的代码:
init(){structresbufrBc,rBb,rBu;
ads_getvar(″BLIPMODE″,&rBb);
ads_getvar(″CMDECHO″,&rBc);
rBu.restype=PTSHORT;rBuresval=0;
ads_setvar(″CMDECHO″,&rBu);
ads_setvar(″BLIPMODE″,&rBu);
ads_command(RTSTR,″linetype″,RTSTR,″s″,
RTSTR,″bylayer″,RTSTR,″″,RTNONE);
ads_command(RTSTR,″color″,RTSTR,″bylayer″,RTNONE);}
本系统的参数化绘图子系统程序框架采用的是ARX的基本结构及消息机制,而机械零件的参数化绘图部分采用ADS库函数 (如实体数据库函数、选择集操作函数和选择集构造函数等)来完成。以下介绍ARX的基本结构及消息机制:
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/autocad/)AcRx::AppRetCode
AcrxEntryPoint(AcRx::AppMsgCodemsg,void*ptr)
{if(ptr!=NULL){switch(msg){
caseAcRx::kInitAppMsg://加载应用程序
acrxDynamicLinker〉Un1ockApplication(ptr)
break;
caseAcRx::kLoadDwgMsg;//登记ads_defun()定义的函数
funcload();
break;
caseAcRx::kInvkSubrMsg://执行ads_defun()定义的函数
dofun();
break;
caseAcRX::kUnloadDwgMsg://撤消应用程序所做的初始化工作
funcUnload();
ads_printf(″Unloading″);
break;
caseAcRx::kUnloadAppMsg://彻底清除所有的系统资源
default:
break;
returnAcRx::kRetOK;}(4)
2.2 软件在AutoCAD下的界面设计
本系统菜单采用AutoCADR14新的菜单制定技术制作而成, 对AutoCADR14的菜单文件ACAD.MNU进行了修改,在下拉菜单draw下加入一项标准件,其下一级子菜单是标准件种类,当你选择某类零件时会动态加入有关这类零件的设计计算菜单。举例如下:
***POP7
**draw
ID_MnDraw[&Draw chen]
……
ID_StandardComponent[-〉标准件]
ID_gear[齿轮p(menucmd″p7=+wuhanshejipop1″]
其中,p7为菜单节draw的节号即POP7,chilunshejipop1表明所要加入的菜单节组名为chilunsheji,菜单节号为pop1。然后由设计菜单调用零部件子系统进行设计计算和参数化绘图。
3 软件的数据查询
Visual C++的MFC数据库类提供了强大的数据访问功能,并且可以采取中文界面,所以本系统采用了MFC数据库类中的两种:
CDattulaoShi.comabase类:
CDatabase类用来封装应用程序对一个数据库连接的处理,具体做法如下:
Cdatabase*p
12下一页