1. 引言
随着传统CAD系统在破碎机设备的应用普及以及现代设计问题的复杂化、智能化,人们不再仅仅满足于用计算机取代人进行手工绘图。所幸随着计算机图形学、人工智能、计算机网络等基础技术的发展和计算机集成制造、并行工程、协同设计等现代设计理论和方法的研究,使得CAD系统也由单纯二维绘图向三维智能设计、物性分析、动态仿真方向发展,参数化设计向变量化和VGX(超变量化)方向发展,几何造型、曲面造型、实体造型向特征造型以及语义特征造型等方向发展;另一方面,伴随着CAD软件复杂程度的增加和各个不同应用系统间互操作的现实需要,人们希望CAD系统具有极佳的开放性同时又能“搭积木”似的自由拼装形成不同的功能配置,软件工程技术特别是组件开发技术的研究应用和逐渐成熟为解决这一问题提供了坚实的基础。
组件技术使得各CAD系统开发商们不必再完全遵从“一切从零开始”的开发模式,他们可根据自己的技术优势在满足组件接口规范要求下开发不同的构件,然后在得到许可的情况下便可以自由使用这些构件来搭建用户所需要的CAD系统。这种方式因其开发周期短、见效快、系统柔性高、开放性好、以及容易“即插即用”和进行并行开发等优势而倍受亲赖。
本文主要讨论采用组件技术开发国产商品化CAD/CAM系统——“金银花” 系统的一些关键技术。
2. 系统框架
“金银花”是在ACIS几何建模平台上,采用变量化特征造型技术,基于STEP标准——遵循AP214和AP203协议而研制开发出来的商品化三维CAD系统。该系统基本框架结构如图一所示,大体分为三个层次——数据层、功能层、接口层:
数据层包括物理数据文件、数据库和逻辑数据模型两部分,它是CAD系统的设计结果,也是CIMS信息集成的主模型,由于本系统是符合STEP标准的,故可以通过标准数据存取接口(SDAI)进行操作,数据是用户利用系统功能实现的。
功能层是主体部分,主要有三维零件设计、装配设计、二维工程图设计三大模块,由于有主模型的支持,三块之间相互关联:即任一部分的改变都将引起其它部分相关的自动更新。在零件设计中采用特征造型和实体造型相结合、特征模型与实体模型共存,大大方便了后续工艺分析和加工对特征信息的需求又满足了显示、变换、物性计算、干涉检查等操作对实体信息的要求。变量化VGX技术主要在草图设计、特征造型、装配设计等部分应用,极大的方便了用户对设计的编辑和修改。
接口层是提供系统的对外接口,分为功能接口与数据接口。功能接口便于用户进行二次开发,组件重用等;而数据接口为其它环节如CAPPCAMCAEPDM等提供一致性的数据访问方式。
3. 组件结构
系统的组件结构设计是基于组件技术开发CAD系统的关键,主要内容是根据应用系统的功能需求列出所有构成组件、各个组件间的依赖关系和接口,并确定哪些组件自己开发而哪些可直接从组件供应商处购买以缩短开发周期。而本系统就是通过从美国STI公司(Spatial Technology Inc.)购买三维CAD系统所需几何造型、文件管理、内存管理等基本功能组件,而集中精力开发支持特征造型、VGX约束求解、装配设计、关联绘图、用户接口等组件。
由于ACIS是完全基于组件技术开发的,其所有基础功能均通过不同的组件(表现为动态联接库DLL)实现。在ACIS6.0中大约有五十多个DLL,所有这些DLL实际可划归为两部分:ACIS 3D Toolkit(核心模块)和Optional Husks(可选模块)。其中核心组件提供构造系统所需的基本功能(如:基本几何和拓扑、内存管理、模型管理、显示管理、图形交互等),这部分是ACIS几何建模的核心,类似于飞机的发动机,其中包括许多开发商的必选构件;而另一部分可选组件则提供一些更专业化和更高级的功能(如:高级过渡、高级渲染、可变形曲面、精确消影、拔模、抽壳、与CATIA和Pro/E等系统的数据接口等),这部分作为可选组件由用户根据实际开发的系统需要自由挑选、搭配和组合,当然用户也可用自己开发的组件取代ACIS的部分组件。ACIS的各组件之间存在一定的依赖关系,其中核心组件详情可参见ACIS6.0核心组件依赖关系图。
金银花系统组件结构是在对系统功能需求和总体框架结构分析基础上得出的,同时也参照了ACIS的组件划分思想。图二给出了系统组件依赖关系简图(为节省篇幅,主要表示了三维零件设计部分的组件,而没有详细表示关联绘图和装配部分的组件),为方便组件的集中管理和调用系统采用了层次结构,主要分为核心组件、功能组件、接口组件三层,上层组件可任意调用下层组件提供的所有服务。以下对图二作一些介绍:
◆ 核心组件层:该层包含了系统较重要和较基本的组件,是三维特征造型、二维关联绘图、部件装配、动态仿真等模块的共享部分。ACIS核心组件也位于其中,为系统提供ACIS几何造型基本功能;LM_GI是提供底层显示支持,如:对OpenGL的调用、对屏幕刷新的操作、基本几何元素的绘制;LM_PUBFUN中提供通用数学运算以及公用链表、队列、堆栈的类定义;LM_RUB包容了各种几何元素的橡皮条——rubberband,该部分是支持VGX动态拖放造型(drag-and-drop)、动态约束添加以及装配模块中的动态干涉检查等的基本组件;LM_KERN包括本系统特征造型功能和ACIS几何造型引擎连接相关的类LmSuperElement(详见4),以及为上层提供的管理类、约束类、特征类等提供超类。
◆ 功能组件层:该层建于核心层之上,系统面向应用的主要功能部件均在这一层实现。用户的不同需求会希望配置不同功能的软件系统,从该层选折所需组件集进行不同配置即可。图二所示为三维部分的核心组件LM_KERNPART、特征造型组件LM_FEATURE、VGX约束管理器组件LM_VGX、处理选折对象的组件LM_PICK、和负责总体协调管理的组件LM_MANAGE等。而其中特征造型和VGX组件中又分别进一步细化为:草图特征、高级特征、自定义特征和VGX约束操作、约束管理约束求解等组件。
◆ 接口组件层:是系统的较高层,也是与用户直接进行交互操作管理的组件层,所以主要有处理鼠标事件MouseTool的LM_MT和管理系统界面中涉及到的对话框、菜单、工具条等资源的组件。
可见,这种组件设计结构不仅极大的方便了不同用户需求系统的配置,而且将系统的用户接口与功能的具体实现分开,便于针对不同语种、不同操作系统平台、不同使用习惯开发丰富多彩的界面,也从技术角度实现了与ACIS几何引擎的无缝集成。
4. 关键技术实现
采用软件组件技术建立组件依赖关系为三维CAD系统架设了总体结构,但具体实现还需解决许多关键性技术,以下主要以特征造型技术为例说明系统的设计思路。
由于ACIS本质上一个几何实体造型的平台,通过B-rep表示提供实体几何、拓扑结构的完整描述,但它并不直接支持特征造型。因此,如图三所示系统在实体模型和特征模型之间通过引入构造点、边、面的机制建立一种映射关系。每个特征中不仅包含工艺制造信息还包含其具体构造点、边、面信息,这些构造元素再与实体模型中的点、边、面建立联系。
其中LmFeature较终派生于ACIS的ENTITY,以便于进行内存管理、文件存储和模型操作管理。m_Construction属性记录该特征的所有构造点LmSuperPoint、边LmSuperEdge、面LmSuperFace(三者均派生于LmSuperElement),它们又分别记录ACIS的VERTEX,EDGE,FACE和部分几何参数以及特定的语义信息;同时在每个ACIS拓扑元素(FACE,EDGE,VERTEX)中通过属性ATTRIB机制又嵌入其对应的LmSuperElement。这种双向链表结构方式不仅便于实现特征造型和实体造型间的无缝链接和快速查找,而且也为系统重建时维护拓扑关系奠定了基础。因为仅记录ACIS拓扑元素(FACE,EDGE,VERTEX)是不可能保证拓扑关系一致的。m_OtherInfo属性主要用于存放特征语义、工艺信息等,另外还为用户提供了手工添加特征语义的接口, 为真正支持CIMS环境下信息集成奠定了基础。
在特征创建删除\修改或模型重建过程中,为维护设计者的设计意图关键在于维护模型修改前后拓扑结构的对应关系即:拓扑一致性,因此必须考虑拓扑编码的问题。系统通过为每个从ENTITY派生的实体引入索引标志的方法解决,该索引标志不仅记录全局**标志符,而且通过充分利用ACIS ENTITY中的ATTRIB 和ANNOTATION 类对模型操作的具体变化做了详细的记录:操作前有那些面、边、点,操作后又产生了那些新的面、边、点等等。操作后系统自动重新整理,保证了拓扑结构的对应关系。
要支持特征造型,还必需维护特征之间的依赖关系,以便修改特征参数后重建所有依赖特征,这些关系一般形成树形结构,又称特征树。 特征树方便了对特征的管理,但这种关系往往也限制了设计人员的设计思路,并且还可能出现:父特征的删除导致所有子特征的删除,如果某特证的参数依赖于其后续特征的参数导致系统重建时的崩溃等现象。于是系统采用双重坐标方法: 即对每个特征既记录其相对父特征的坐标,也记录其在全局坐标系下的坐标。这样,当父特征不存在时,子特征可在全局坐标系下"生存";另外, 采用VGX技术,将约束关系从几何关系中独立出来,建立全局约束链,相对独立的约束求解器, 结合代数方法和数值求解方法对约束整体联立求解,既增加了系统的动态导航、动态约束添加和动态修改机制又保证了模型的修改可以超越设计历史树的限制,使得设计人员随时、随地、随意修改成为现实。
5. 结论
软件组件技术的发展为大型复杂的三维CAD/CAM系统的开发提供了极好的解决之道,它完全改变了传统CAD/CAD系统开发的低效率模式,使得该类复杂系统也可以“搭积式”的快速构建。本文深入研究了基于组件技术开发三维CAD系统的相关技术,介绍了具体实现方法,同时给出了系统组件层次结构,可为开发该类系统提供一定的参考。