发布企业信息

基于成组技术的面向对象CAD系统的研究

作者:  信息来源:模具  2006-10-12

字体大小:  网友评论  进入论坛  

关键词成组技术,参数化图库,面向对象CAD 1、引言 近年来,国际标准化组织(ISO)提出了把CAD的图形与非图形数据统一起来的STEP草案。因此,研制统一、集成、高性能的CAD系统已成为CAD领域的一个重要研究方向。面向对象O-O(Object-Oriented)技术在90年代初已成熟地应用于数据库管理系统(DBMS)中...
关键词 成组技术,参数化图库,面向对象CAD

1、引言

  近年来,国际标准化组织(ISO)提出了把CAD的图形与非图形数据统一起来的STEP草案.因此,研制统一、集成、高性能的CAD系统已成为CAD领域的一个重要研究方向.面向对象O-O(Object-Oriented)技术在90年代初已成熟地应用于数据库管理系统(DBMS)中,其强大的可视化特性、类库资源与事件驱动机制使程序员摆脱了手工编程时的高强度、低效率,而其友好美观的界面、全面的数据浏览与灵活的选择功能将操作员带入了真正的桌面时代.在参数化CAD系统中,成组技术GT(Group Technology)的复合零件法是构造虚拟件的有效方法,对虚拟件运用参数驱动技术,能够完成系列化模具零部件的设计.O-O技术在GT的基础上实现图形数据处理,如图形实体、结构与剖面类型、标注实体等的集成;同时完成存放于数据库中的非图形数据处理,如尺寸、加工精度、装配精度、材料类型等的系列化取值向图形数据的传递.

2、基于GT的面向对象CAD系统的关键技术

2.1 虚拟件的生成
  GT赋予同类产品相应零部件间的相似性.但同一系列内各对应零部件构成的结构功能要素不会完全相同.由复合零件法生成的虚拟件集中了同类产品同族零部件的所有结构功能要素,因此它是同类零部件各种图形结构功能信息的组合,反映出相似图形的总体特征.虚拟件对应于GT中的复合零件,是可被重载的图形实体.
  如图1的(a)是定子落圆模模具系列的顶料板零件族的虚拟件,而图1(b)~(e)是其中4个具体的顶料板零件图.

图1 虚拟件参数化示例

2.2 参数驱动技术
  参数驱动的模具CAD系统将虚拟件上可能出现的标注体(Dimension/Note)分为8类:长度系列L、直径系列D、半径系列R、角度系列A、孔系列H、锥度系列TA、公差系列TO和精度系列P.其中L、D、R、A、TA五大系列参数值的取值原则是从大到小;H是由多到少;TO和P分别按公差标准和加工精度要求取.图1的(a)是已经经过参数化描述的虚拟件.参数驱动技术在采用GT的虚拟件描述图形结构的基础上,依据各大系列变参数在进行外部加载时,所读入数据的不同,确定图形结构信息的取舍或变化,从而完成系列化产品的设计.例如:当图1中(a)的L4=0,D6=D7且R1=0时,(a)转化为(b);而当(a)的L1=L2,L4=0,D6=D7,D4=D5且L3=0时,(a)转化为(e);等等.

2.3 数据存储方式
  由于面向对象的CAD系统是图形数据与非图形数据的集成,因此从总体上可以把系统分为3个基本类:图形类CGraphClass、数据库类CDataClass和信息类CInfoClass.
  (1) 图形类CGraphClass. 图形类完成所有图形实体与标注实体的描述,是Visual C [3]设备描述表对象类CDC的派生类.但其许多成员函数均被超越,如线输出函数中的画线、画圆、画弧、画多边形、画Bèzier曲线和文本函数中的文本输出等函数,均被重载为Virtual类型.图形类有与其相关的文档类CGraphDoc和视类CGraphView.文档类用于保存数据,是MFC的文档基类CDocument的派生类,文档通过可重载的虚函数Serialize来读写数据对象.视的基类是CView,一个文档对应于一个或多个视,通过视来修改文档的数据.每个图形实体和标注实体均保存在相应的类对象中,它们是面向对象CAD系统的基本数据结构.现以零件图局部剖视中最复杂的随机曲线图形实体为例来描述其数据结构.当拖动鼠标绘图时,从鼠标左按钮按下之后直到该按钮释放之前,所汇集的随机点集构成随机曲线实体,该点集用类模板数据结构描述如下:
  CArray〈CPoint,CPoint〉m-pointArray; // m-pointArray是点集的一个列表,该列表中的每一项都是CPoint类的一个对象.
  对于存在多条随机曲线的情形,则每一条曲线均保存在CRandomCurve类对象中,该类对象用MFC模板类CTypedPtrArray来生成:
  CTypedPtrList〈CObList,CRandomCurve * 〉m-pCurveList;
// m-pCurveList是随机曲线的列表,该列表中的每一项都是CRandomCurve类的一个对象.
  图形中随机曲线的数据存储结构如图2所示.

图2 随机曲线的数据存储结构

  其它实体的数据存储结构可类似地定义.每一图形与标注实体类对象除包含描述该实体的主体数据结构外,还包含一些相应的辅助数据类型,如线型、线宽、颜色、填充模式、绘图笔号、实体ID号、与ID号对应的数据表列名等.如同所有的随机曲线实体均保存在CRandomCurve模板类对象中一样,本文使用模板类来实现虚拟件中同种图形实体的存储,如图1(a)中的所有直线实体便保存在CLine模板类对象中.这种存储方式非常方便于某个具体实体的删除及修改,因为模板类中的类型指针列表类的基类CObList或CPtrList提供了大量的对其所存储的实体进行定位、删除及修改的成员函数,如检取双向链表中下一个实体的GetNext(POSITION& rPosition),设置给定位置处实体的SetAt(POSITION pos, CObject* newElement)和删除指定位置处实体的RemoveAt(POSITION position)等.在对虚拟件进行参数驱动,完成同族各具体零件设计的时候,由于存在图形结构信息的取舍与变化,即图形实体的修改与删除等操作,因此采用模板类存储图形实体,能够使图形的动态存储快速地响应图形结构的变化.实际上,采用模板类存储图形实体,还能够使实体的存储更加有序(双向链表结构),缩小存储的开销并精简程序源代码,从而使程序运行得更快.
  (2) 数据库类CDataClass.该类是数据库基类CDatabase的派生类,CDatabase对象表示到一数据库的连接,通过此连接可以对数据库进行操作.类对象使用Open函数通过一个ODBC驱动器建立与数据库的连接.在确定了数据库之后,将它作为ODBC数据源登录.Windows 95控制面板中的32bit ODBC控件是一个很好的数据源登录工具,通过其中的ODBC Drivers选项可以载入所需的ODBC驱动器.CDataClass类使用记录集合类CRecordSet的派生类CDataSet来操纵数据库中的数据.定义好CDataSet后,可定义数据库文档类如下:
class CDataDoc∷public CDocument     /*数据库文档类同样是CDocument的派生类*/
{
protected:
    CDataDoc();           /*构造函数*/
    DECLARE-DYNCREATE(CDataDoc);
                    /*动态创建类对象*/
public:
    CDataSet m-dataSet;         /*定义记录集合对象*/
    virtual ~CDataDoc();        /*析构函数*/
 …
protected:
    DECLARE-MESSAGE-MAP();
                      /*消息映射宏*/
};
  由上述类定义可知,记录集合对象m-dataSet嵌入在文档对象中,因此当文档在视中修改时,通过该记录集合对象存取数据表中的记录.本文使用Visual FoxPro作为数据库支撑环境,对于图1中的虚拟件(a),其每一个参变量的系列化取值均对应数据表的某一列,表名与虚拟件的ID号相关,表的字段对应各参变量的ID号.在进行系列化模具设计的时候,每个虚拟件均有与其相关的存储参变量系列化取值的数据表,这些数据表(.DBF)由数据库(.DBC)实现其封装,在库中可定义这些表之间的关联以及主辅索引等.
  (3) 信息类CInfoClass. 该类也是CDocument的派生类,主要用于描述同族相似设计图形的技术要求与标题栏信息,它存储的是一般的文本,通过视可以修改文本的内容,其存取均通过串行化操作实现.

2.4 事件驱动机制
  存储在图形类、数据库类以及信息类文档中的数据都通过视来修改,在视中处理各种Windows消息,如WM-LBUTTONDOWN, WM-RBUTTONDOWN, WM-MOUSEMOVE,WM-LBUTTONDBLCLK,WM-PAINT等.视使用消息映射来确定是否有一个与此消息名相关的成员函数,即事件来处理该消息.当在主框架窗口显示虚拟件图形的视中双击鼠标的左键时,WM-LBUTTONDBLCLK将触发OnLButtonDblClk(UINT nFlags,CPoint point)事件.在构造存储图形与标注实体的类对象时,类中都定义了一个public类型成员函数GetEntityBounding(CRect m-rectBounding),该成员函数返回包容实体或成员实体(当同种实体由模板类存储时)的边界矩形.OnLButtonDblClk事件调用CRect类的成员函数BOOL PtInRect(POINT point)const判定鼠标在哪个实体的边界矩形内,如果鼠标在多个矩形的交集中,则以边界矩形与该交集的差值最小者为鼠标所在的边界矩形.鼠标捕捉该边界矩形内的实体为当前对象,以对象的ID号为指针弹出实体的属性列表子窗口,该窗口中的每一个控件也有其相应的ID号.以图1(a)中的直线实体为例,其属性项主要有端点坐标、长度、线型、线宽、颜色、笔号等.图3是与L1图形实体相关的属性表.当长度有系列化取值的时候,长度控件是一个Combo Box,该控件显示的是某相关数据表某一列的值.如果在控件的可编辑部分输入一个新值,该值将被插入数据表的相应列中,并在下次修改该直线实体的时候以可选值显示出来.在确认各属性项的改变后,存储图形类的文档CGraphDoc将发生变化,这里使用CDocument类的成员函数UpdateAllViews来确保与文档相连的所有视在文档发生改变时,视也随着改变.函数UpdateAllViews对每个视均调用CView类的成员函数OnUpdate来让视响应文档中发生的变化,从而使视客户区中显示的图形被重画.

图3 与L1实体相关的属性表

  当捕捉视中的图形或标注实体用于修改时,显然只有该实体将被重画,而其它实体以及其它视,如显示技术要求与标题栏的视没有必要重画.这里重载OnUpdate来快速地实现实体的重画,其方法如下:
  (1) 重新确定包容该实体的边界矩形,并调用CWnd的成员函数InvalidateRect将该边界矩形区域置为无效.
  (2) 该区域被设为无效后,Windows会发出一条WM-PAINT消息,使用CView中的虚函数OnDraw来处理这条消息.OnDraw首先调用CDC的成员函数GetClipBox获取无效区域,然后重画区域中的实体.
  (3) 重画后,将该区域置为有效.
  视中其它的事件,如鼠标的移动、左键或右键的单击、实体对象的拖放等事件可类似地定义.通过这些事件,用户可以在视中修改每一个图形与标注实体,也可以修改技术要求与标题栏等信息,从而所见即所得地完成同族相似零部件的设计.

3、系统总体结构与特点

3.1 系统总体结构
  基于GT的面向对象CAD系统的总体结构如图4所示.

图4 系统的总体结构

3.2 系统特点
  (1) 采用GT的复合零件法生成虚拟件,能够完成同族相似零部件的系列化设计.
  (2) 参数驱动技术采用尺寸分类描述的原则,实现虚拟件结构形状与尺寸的抽象,能够通过对参数加载不同的数据,实现图形结构的变化或取舍.
  (3) 分别采用图形类、数据库类和信息类描述图形中的实体、参数系列化取值和技术要求与标题栏信息,实现了图形与非图形信息的集成.
  (4) 采用文档模板类存储图形与标注实体,不但能够充分利用类库强大的资源,使图形的动态存储快速地响应图形结构的变化,而且使实体的储存更加有序,便于数据存取的串行化操作及绘图仪驱动程序的开发.
  (5) 全面的事件驱动机制,使设计过程所见即所得,实现了较好的面向对象功能.

分页:
Google


推荐图文

广告

机械热点图文

  • 数控车床加工编程典型实例分析2
  • 内螺纹车削加工——数控车床编程实例42
  • 子程序编程方法-数控车床编程实例36
  • 塑料模具动画演示

机械风云人物

Copyright © 2004 51base.com Inc. All rights reserved.

无忧基地 版权所有│粤ICP备06098418号│XHTML | CSS

客服:+86-755-2212 2202 工作时间:周1~5 10点~16点

感谢中国网络提供带宽支持

《网络营销技巧》