复制式协同CAD环境下隐式特征数据交换方法研究
2012-01-23胡慧慧
胡慧慧, 赵 韩
(1.南通航运职业技术学院 交通工程系,江苏 南通 226010;2.合肥工业大学 机械与汽车工程学院,安徽 合肥 230009)
良好的交互性是网络协同CAD系统顺利运行的前提条件,因此实时高效的协同数据交换是实现分布式环境下实时协同造型的关键。网络协同造型具有分散性和分布性特点,且数据交换受网络传输能力限制,要保证其实时性,应满足以下要求[1]:① 数据传输量小,即模型描述的数据量尽可能小,这点是关键;② 各协同客户端的模型数据保持几何和拓扑关系的一致性;③模型必须在特征级别上可编辑,用户可对交换后的模型特征进行各种操作。
CAD模型通常采用精确的数学形式表达几何模型,数据量十分庞大,网络通信的带宽和延时成为主要的应用障碍。为此,学者们针对数据模型的4个层次提出了一些专门针对协同设计环境下的CAD模型的数据交换方法:① 早期模型中基于中性文件(STEP等)的方法,该方法未对设计过程进行描述,数据量大,无法满足协同CAD应用的实时、动态要求;② 基于三角网格模型的交换方法[2],该方法实现三维模型的远程实时传输、观察和特征参数修改,传输量较大,且难以对产品模型进行精确的分析和编辑;③ 基于高层语义历史的交换方法[3],数据量小,但相同语义在不同的CAD系统中可能产生不同的执行结果,一致性转换难度大;④ 基于显式表示的特征数据交换方法,特征表示方式有显示和隐式2种,文献[4]采用了该方法,该法只能重构模型的静态表示,且丢失了高层语义信息,无法支持协同用户对模型进行回溯和编辑处理。
在当前网络条件下,现有数据交换方法不能较好地满足协同实时造型的要求。为此,本文根据协同产品开发特点,提出基于隐式特征表达的数据交换(implicit feature representation data exchange,简称IFDE)方法,力图保证功能性并达到良好的反馈速度和用户体验感。
1 IFDE方法
1.1 IFDE数据交换方法概述
IFDE数据交换方法如图1所示。
图1 基于隐式特征表达的协同数据交换方法
(1)IFDE的优势。IFDE的实质是不交换模型的几何拓扑信息,只交换特征的隐式参数信息及特征之间的操作关系,即以结构化特征模型表达为中心信息,仅交换用户某次操作产生的特征信息(如特征结构、定位信息和形状参数等高层信息),模型的几何拓扑重构交由客户端CAD系统调用几何建模引擎实现。以隐式特征为单元进行数据交换,增量式传输协同操作中删、改、增的特征,与几何拓扑信息相比,表达更简洁,数据量更小,因此,该方法可极大减少模型交换的数据量。
(2)IFDE的实现过程。协同数据交换过程包括3个步骤:从CAD模型到协同特征模型的数据交换、协同特征模型数据的网络传输和协同特征模型到CAD模型的数据交换。IFDE具体步骤如下:① 客户端A调用API函数,监听并分析当前网络特征操作;② 识别网络操作特征类型,并提取构建特征的全部隐式表达信息;③ 将隐式特征表达信息进行消息类封装,经序列化后多播发送;④客户端B反序列化网络封装消息后进行解析,识别及提取特征隐式表达参数;⑤ 经转换后调用本地造型引擎中的API函数,进行特征重构。
1.2 特征消息封装
IFDE不交换模型的几何拓扑信息,因此,传输的消息必须包含特征重构所需的所有隐式参数,才能保证各客户端系统产生的模型一致。为此,在协同设计系统中,定义了一种由3层封装机制构成的消息事件为分布式环境信息通讯提供层次性和扩展性封装。该机制利用面向对象技术对特征的隐式表达进行描述,并建立可序列化的网络消息类以便网络传输和特征的正确重构。
如图2所示,第1层为消息基类,定义了协同造型过程中统一的消息事件发送和接收机制。
第2层为操作消息类封装,从消息基类继承并根据需要进行扩充,分成4种类型:
(1)设计特征的造型事件。主要在协同造型过程中由参与设计的客户端产生,用来封装创建新特征或修改特征的隐式参数,并通知接收端对该特征进行相应更新并调用其造型核心用B-rep表示实体。
(2)设计特征的控制事件。此消息事件主要用来封装特征操作时根据角色分配访问权限,用于访问控制过程。
(3)设计零件的同步事件。此消息事件主要用来封装设计零件的状态矢量表和最小矢量信息,用于迟加入或者非正常退出的同步过程。
(4)设计零件的其他事件。此消息主要用于封装设计零件的全生命周期信息,由于本文主要研究协同造型,因此这里只作为预留事件定义。
图2 协同造型消息类封装
第3层为具体特征操作消息类封装,根据不同的通讯目的,从第2层消息类派生,并重写相应的抽象属性、方法和扩展特征参数域,如对某一具体特征操作的不同实现方法进行封装。这样使得在协同造型时不必局限于特征交互方式,并使网络协同过程对用户透明化。
根据C#的定义,为能在网络中正常通讯,所定义的通讯事件基类必须能被“序列化”。因此,在第1层通讯消息基类封装时,必须从可序列化类派生,这样其余2层从基类派生的事件封装能自动地进行序列化。
以面向对象[5]的特征消息类定义方式有利于特征信息的隐式表达,利用网络序列化技术在网络间交换特征操作数据,简化网络传输操作,为异地客户端的特征重构提供可靠的信息。
1.3 特征操作重构
客户端接收到设计组内用户发送的造型消息时,首先进行消息解析,识别并提取当前操作特征的隐式表达参数,然后进行特征坐标转换与重构定位,最后调用本地的特征重构标准表达函数实现协同特征操作的异地重构,重构过程如图3所示。
特征重构的关键是:特征的重构表达、特征的参数坐标转换及特征的重构定位。
图3 特征操作重构过程
(1)特征重构表达。为使协同造型过程对用户透明化,对各特征(如拉伸、旋转等)重构统一参数化驱动表达式,使得特征重构过程与特征构建方式无关。
(2)特征的坐标转换。本设计系统采用笛卡尔坐标系统(Descartes Coordinates),并遵守右手准则,为简化某些局部特征和实体的构造,系统同时使用绝对坐标系(ACS)、工作坐标系(WCS)和局部坐标系(LCS)。在协同几何造型时,特征消息封装中的定形和定位参数均用相对WCS进行描述。但协同客户端当前的WCS与操作发起站点的WCS往往不一致。在特征异地重构时,为保持特征的LCS与WCS相对位置不变,需要在特征重构前计算出当前系统的 WCS位置,再对定形和定位参数进行坐标变换,此问题可转化为求ACS中WCS经一系列几何变换后的新位置,具体求解过程可用矩阵理论完成。
(3)特征的重构定位。在零件造型过程中,通常要引用一些几何元素来辅助实现特征定位,如拉伸特征参考面、圆角特征参考边等,然后再以被引用对象为基准设置特征的位置参数或约束关系。根据被引用对象在特征构建中作用不同,分参照定位对象和操作定位对象2类。重构定位的关键在于高效可靠的对象引用。
1.4 对象引用机制
协同CAD造型采用复制式体系架构,每个协同应用程序维护各本地模型,通过造型操作消息实现模型状态的增量式更新与同步,维护各分布式客户端模型对象的一致性,其难点是让计算机自动引用对象。因此,必须有一种可靠的对象引用机制来实现特征的重构定位。本文针对复制式协同CAD系统的特点,将对象引用分为直接引用和间接引用2种,并针对2类特点采用对象命名映射[6]和几何匹配相结合的方法来解决协同环境下的对象引用问题。
直接引用对象是指在协同造型中对零件或特征进行编辑时的操作对象,主要包括零件对象和特征对象。直接引用对象通过对象标识号来引用,较容易实现,因此采用对象命名映射机制来实现复制模型之间直接对象引用。间接引用对象是指协同造型中特征创建时作为辅助参照或操作对象的拓扑对象,主要包括参照定位对象和操作定位对象。本文在支持八叉树场景管理的CAD系统中采用基于面向对象的动态八叉树几何匹配算法来实现复制模型之间的间接对象引用。
几何匹配算法框架:根据网络消息确定一个被引用对象时,首先给定形状单元的拾取类型、被引用对象的几何特征值及设定特征点;再以特征点为中心,构建一个 AABB层次包围盒[7-8],即特征包围盒,边长可根据当前场景的绘制精度设定,通常取5个单位;最后利用特征包围盒与面向对象动态八叉树各节点碰撞求交确定被引用对象的本地标识号。具体流程如图4所示,包含3个阶段:碰撞检测、类型筛选以及对象判定。
图4 基于面向对象的动态八叉树几何匹配算法
该拾取算法充分利用八叉树的快速搜索特性,对象辨识只需匹配一个特征点,因而使匹配算法响应速度较快。由于算法不依赖拓扑实体的命名、操作顺序和设计初始状态,因此,对“迟加入”客户端同样适用。
2 应用实例
为满足网络化几何建模的特殊需求,本文开发了基于开源内核Open CADCADE的协同CAD基础平台开发框架——复制式协同CAD系统。
2.1 复制式协同CAD环境下协同造型实例
如图5所示,以一个简单的零件为例来说明协同CAD软件基于IFDE的实时协同造型过程。实例零件由拉伸、偏置切除、通孔、圆周阵列等基本特征组成,造型过程同普通CAD系统操作。
以零件的协同特征创建为例分析隐式特征数据交换过程,假设当前设计组内成员完成特征操作步骤④。此时协同用户A拥有系统操作访问控制权并在拉伸基体上创建偏置切除5 mm操作特征,如图6所示,选择XY平面上的一个闭合的草绘轮廓作为切除轮廓,然后使用拉伸切除特征创建工具,在其属性选择器里设置好相关参数,在鼠标或者键盘操作触发该特征的OnDone()函数,本地特征造型请求立即执行,同时,系统根据构建方式调用相应的特征消息类,提取此特征的隐式表达参数,对特征消息类进行实例化并对其赋值,经二进制序列化后利用Socket发送至多播组。
图5 协同零件特征造型过程图
图6 偏置切除网络特征创建
远程客户端B在收到多播消息后反序列化,调用消息解析器进行解析并识别特征操作,提取特征的隐式表达参数,经并发控制机制确认无冲突发生后,网络特征重构模块根据拉伸切除特征的重构表达式对其隐式参数进行标准化处理,调用特征操作重构类进行实例化,然后调用本地的几何建模引擎来重构该特征。若协同用户对操作过程不满意,在取得系统操作访问控制权后,可以对协同特征进行编辑和删除,其过程同上。
2.2 IFDE效果分析
上述过程中每次交换消息只记录隐式特征信息,模型数据交换的数据量很小,经多播数据测试工具MultiCast Test测试一般在10~30 K左右。若采用中间文件STEP文件方式,数据量则在1 M(1 024 k)左右,显式实体特征则要200 k左右。
为更好地测试IFDE性能,进行模拟测试分析,即对复制式协同CAD系统采用基于3种不同表达(中间文件、显式实体特征和隐式特征)的数据交换法引起的初始化延迟时间和网络负荷变化进行近似模拟测试,测试结果数值取模拟测试20次并去掉3个最高和最低数值后的算术平均值。
测试条件为:协同CAD系统成员相对稳定,在设计过程中只有少数成员加入或者退出;测试场景为二维草图设计;场景数据请求策略采用“立即请求策略”;同一用户随机2次操作的时间间隔为0.8~1.0 s;网络延迟20~150 ms,且假设数据不丢失。
图7所示为3种数据传输方法的初始化延迟对比图,用户的初始化延迟采用“最快响应法”,即用户发送请求到接收到响应数据之间的时间间隔来衡量,由图7可知,中间文件和实体特征的方法延迟时间大约为10 000 ms和2 000 ms,延迟较多。而隐式特征方法,请求和响应数据均由专门多播组承担,一开始可能需要进行服务器选择,一旦服务器组形成后,延迟将会逐渐变小,平均延时只有500 ms,响应速度极快。图8所示为测试某一时间段内以上3种数据交换方法在进行相同操作时累计传输的数据对比图。
图7 初始化延时对比图
图8 累计数据传输量对比图
由图8可知,在一段时间内完成相同功能时中间文件需要传输的数据量极大,实体特征方法的累计数据量次之,隐式特征方法数据量最小,因此即使是在用户数较多、操作频繁时也能保证系统的低网络负荷。
由上述测试结果可知,基于隐式特征表达的数据交换方法延迟时间短,网络负荷低,能较好地满足实时性要求。
3 结束语
本文对复制式协同CAD环境下数据交换方法进行了深入的研究,提出了一种基于隐式特征表达的协同数据交换方法(IFDE)。该方法利用面向对象的特征消息类封装、网络序列化传输以及语义特征重构技术,增量式交换协同操作特征的隐式表达信息,而将特征的几何拓扑信息交由接收端系统的建模引擎重构实现。该方法极大地减少了网络数据传输,降低了协同过程中网络传输延时,提高了实时性。
[1]Li W D,Ong S K,Fuh J Y H,et al.Feature-based design in a distributed and collaborative environment[J].Computer-Aided Design,2003,36(9):775-797.
[2]张必强,邢 渊,阮雪榆.分布式同步协同设计中基于三角网格 模 型 的 实 时 传 输 [J].中 国 机 械 工 程,2003,13(4):305-308.
[3]刘云华,陈立平,钟 毅.利用设计历史实现异构CAD系统特 征 信 息 交 换 [J].中 国 机 械 工 程,2003,14(21):1845-1847.
[4]汪慧芬,张友良,曹 健.基于特征的协同设计[J].计算机辅助设计与图形学学报,2001,13(4):367.
[5]黄素英,王周敬.面向对象框架在信息系统开发中的应用[J].合 肥 工 业 大 学 学 报:自 然 科 学 版,2003,26(Z1):896-898.
[6]彭 维.网络化协同CAD系统的关键技术研究[D].西安:西北工业大学,2001.
[7]高玉琴,何云峰,于俊清.改进的基于AABB包围盒的碰撞检测算法[J].计算机工程与设计,2007,28(16):3815-3817.
[8]Bergen G V D.Efficient collision detection of complex deformable models using AABB trees[J].Journals of Graphics Tools,1997,2(4):1-14.