基于ProEngineer的工艺数据库开发 第四章 系统的设计与实现
磨床工艺参数=磨削长度+磨削直径 刀具工艺参数=导热系数+线膨胀系数 外圆柱参数=零件直径
内孔参数=工件基本尺寸+孔长度 轴端面参数=工件长度+端面最大直径
输入参数1=工件直径+车削深度+进给量+工件直径 输入参数2=工件直径+中心孔锥度号+底面至台面高度值 输入参数3=工件直径+磨削长度+磨削直径+中心高 输入参数4=刀具牌号+含量成分 输入参数5=加工条件+工件直径 输入参数6=工件尺寸+刮孔长度 输入参数7=工件尺寸+拉孔长度 其二:文件条目 文件名:系统工艺数据库
组成:{机床工艺数据库+刀具工艺数据库+加工余量工艺数据库} 组织:按“组成”中所列的次序排列 文件名:机床工艺数据库
组成:{工件直径+车削深度+进给量+工件直径+中心孔锥度号+底面至台面高度值+磨削长度+磨削直径+中心高+刀具牌号+含量成分+拉孔长度+刮孔长度+端面直径}
组织:按“组成”中所列的次序排列 文件名:刀具工艺数据库 组成:{导热系数+线膨胀系数} 组织:按“组成”中所列的次序排列 文件名:加工余量数据库
组成:{零件直径工件基本尺寸+孔长度工件长度+端面最大直径} 组织:按“组成”中所列的次序排列 其三:小说明 变换编号:1 变换名:机床
变换逻辑:根据输入的机床型号和工件直径确定机床工艺数据 变换编号:1.1
变换名: 确定车床类型
变换逻辑:根据输入的车床型号确定车床类型 变换编号:1.2
24
基于ProEngineer的工艺数据库开发 第四章 系统的设计与实现
变换名:确定查询有关参数
变换逻辑:根据输入的工件直径、进给量、车削深度值确定工艺参数 ……
4.2系统的设计
结构化设计是以分析阶段获得的数据流图及描述说明书作为基础,进行模块结构设计。根据数据流图的两种典型的结构类型,变换型结构和事务处理型结构,导出的初始结构图也有两种。变换型问题数据流图的分析,主要是找到其中心变换,这是从数据流图导出变换型结构图的关键;事务处理型问题导出结构图需从分析数据流图开始,自顶向下地设计结构图。
在本课题设计中,应用系统是变换型和事务型的结合。采用模块化结构,使系统的结构清晰,层次分明。以降低系统的复杂性,使系统易于调试、链接、移植和修改;也便于功能的扩充,且模块可并行开发,从而提高了软件的生产效率。图4.3是该系统的系统模块总图,图4.4是系统结构图。
图4.3 系统模块总图
机床 刀具 加工余量 基于Pro/E的工艺数据库 车床铣床 磨床 刀具 外圆柱 内孔 轴端面
25
基于ProEngineer的工艺数据库开发 第四章 系统的设计与实现
数据输入 数据输入 数据库输入模块 初始输入 初始输入 读输入 确定数据 确定结果 用 查询结果1 预格 式化1 格式化1 显示结果 查询数据 机床工艺数据输出 预格式化1 查询结果2 预格 式化2 格式化2 显示结果 加工余量数据输出 预格式化2 查询结果1 查询结果2 基于ProEngineerProEngineer的工基于的工艺数据库开发 艺数据库系统数据调 图4.4 系统结构图
从图4.3可知,该系统分为三大模块即:机床、刀具、加工余量。
机床模块主要负责几种主流机床的相关工艺参数的查询功能。因此,在该模块下又分为三个模块:车床、铣床、磨床。其中车床模块主要实现加工一定直径的工件时的车刀刀杆尺寸、车削深度、加工材料和进给量等工艺参数的查询,当前常用车床特征的查询等功能;铣床模块主要实现铣刀的加工范围参数查询,铣床工作台参数查询和X62W型万能铣床的技术参数查询等功能;磨床模块主要实现外圆磨床、内圆磨床和平面磨床的工艺参数查询,MY820型磨床、M618A型磨床的技术参数查询功能。
刀具模块主要负责刀具参数的查询、刀具的机械物理性能参数的查询等功能。 加工余量分为外圆柱、内孔、轴端面的加工余量。外圆柱模块主要实现粗车及半精车、半粗车后磨外圆和无心磨的加工余量查询;内孔模块主要实现研磨孔、刮孔和拉孔的加工余量查询;轴端面模块主要实现半精车轴端面、磨轴端面加工余量查询功能。
4.3 系统的实现
4.3.1 开发和运行环境
1. 应用程序接口
在Pro/E和应用程序之间主要是通过特定的数据结构来传递信息,对应用程序来说这种数据结构并不是直接访问的,而只能通过Pro/TOOLKIT提供的函数即应用
26
基于ProEngineer的工艺数据库开发 第四章 系统的设计与实现
程序接口来访问。
user_initialize()是Pro/TOOLKIT应用程序的初始化函数,主要用来对同步模式的Pro/TOOLKIT应用程序进行初始化,任何同步模式的应用程序要在Pro/E系统中加载都必须包含该函数,其作用相当于C程序中的main()函数。在该函数中设置用户的交互接口,如设置菜单、调用对话框或直接调用所需的函数等。在Pro/E环境加载Pro/TOOLKIT应用程序时,首先调用user_initialize()函数。
user_terminate()函数在Pro/E终止同步模式的Pro/TOOLKIT应用程序时调用(如退出Pro/E将终止应用程序的运行),该函数由用户定义,其中可以不执行任何动作。
user_initialize()和user_terminate()函数应放在与工程文件名同名的CPP文件中,其格式固定不变。
在Pro/E中运行Pro/TOOLKIT应用程序,还必须得进行注册,注册界面如图4.5。注册文件(registry file)的作用是向Pro/E系统传递应用程序的信息。本设计中,注册文件Ex1_protk放在C:\\ee\\Test 目录下。可用Pro/E的功能\\辅助应用程序菜单按钮注册应用程序。
图4.5 应用程序注册
2. 数据库接口
Visual C++提供了多种多样的数据库访问技术——ODBC API、MFC ODBC、DAO、OLE DB、ADO等。这些技术各有自己的特点,它们提供了简单、灵活、访问速度快、可扩展性强的开发技术,而这些正是Visual C++开发和其他开发工具相比的优势所在。本设计中采用的是DAO数据库类,在MFC中有5个DAO数据库类,它们分别是:CDaoWorkspace、CDaoDatabase、CDaoRecordset、CDaoTableDef、CDaoQuerydef,这些类在应用程序中专用于与数据库进行数据交换,实现数据库与应用程序的接口。DAO作为数据库访问的对象,提供了一种通过程序代码创建和操作数据库的机制。Access97数据库工具通过Microsoft Jet引擎访问数据库中的数据
27
基于ProEngineer的工艺数据库开发 第四章 系统的设计与实现
和数据库结构定义。DAO通过Microsoft Jet数据引擎提供了一套对象,包括:数据库对象(Database)、表定义(TableDef)、查询定义对象(QueryDef)和记录集对象(Recordset)等。Access97数据库是Microsoft Jet数据引擎能够读取的数据库中,通过DAO访问效率最高的数据库(.mdb)之一。访问Access97数据库的方法最简单,只要Open()函数给出第一个参数,其他三个参数都缺省就表示打开一个Access97数据库。例如,要打开车床的数据库,其代码如下:
CDaoDatabase *BoxDb; //指向DAO数据库对象的指针。 CDaoTableDef *BoxTd; //指向表定义对象的DAO接口指针。 CDaoRecordset *BoxRs; //指向记录对象的DAO接口指针。
BoxDb=new CDaoDatabase();//构造一个CDaoDatabase对象,并分配存储空间。 BoxDb->Open(\打开Box.mdb数据库。
BoxTd=new CDaoTableDef(BoxDb); BoxTd->Open(\车床\
BoxRs=new CDaoRecordset();
BoxRs->Open(BoxTd,dbOpenTable,dbForwardOnly); BoxRs->MoveFirst();
ch1=(LPSTR)(LPCTSTR)m_zhijing; if(strcmp(ch1,\小于等于40\if(strcmp(ch1,\到60\if(strcmp(ch1,\到100\if(strcmp(ch1,\到400\if(strcmp(ch1,\等于400\
for(;i;i--) {
BoxRs->MoveNext(); }
ch2=(LPSTR)(LPCTSTR)m_xiangmu;
ch3=(LPSTR)(LPCTSTR)BoxRs->GetFieldValue(ch2).bstrVal; m_canshu=ch3;
28