协作支持工具CoCADToolAgent中的远程指针协同感知技术.doc_第1页
协作支持工具CoCADToolAgent中的远程指针协同感知技术.doc_第2页
协作支持工具CoCADToolAgent中的远程指针协同感知技术.doc_第3页
协作支持工具CoCADToolAgent中的远程指针协同感知技术.doc_第4页
协作支持工具CoCADToolAgent中的远程指针协同感知技术.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图1 CoCADToolAgent运行界面协作支持工具CoCADToolAgent中的远程指针协同感知技术何发智*何发智, 博士后, 研究方向: CAD/CG/CSCW. 王少梅, 教授, 博导, 研究方向: CAD/CAM/计算机仿真/物流技术. 孙国正, 教授, 博导, 研究方向: CAD/CAE/智能故障诊断/优化技术, 王少梅, 孙国正 武汉交通科技大学港机CAD/CAE中心 湖北.武汉(430063)摘要 本文以一个基于CSCW的CAD系统协作支持工具CoCADToolAgent的研究和开发为背景,介绍CoCADToolAgent中的远程指针协同感知技术,包括共享光标和动态多光标的实现方法。关键词 计算机支持的协同工作, 计算机支持的协同设计, CAD, 协同感知, 远程指针中图法分类号 TP391.721 引言 CoCADToolAgent是一个面向PC机上主流CAD系统的协作支持工具软件Agent,利用该工具成功地将人机交互的传统通用CAD系统升华成为一个人人交互的协同CAD系统1,完全兼容现有主流CAD系统图形数据库格式,直接支持事实上的工业标准的矢量图形的协同设计,见图1。CoCADToolAgent for AutoCAD V1.0版的开发环境为VC/C+5.0,图形SDK为ObjectARX2.02 for AutoCAD Release 14,网络通讯协议为TCP/IP,其中的关键技术包括:面向CAD系统的新型专用协作框架及其通讯支持,开发了一个基于CAD内核的物理通讯测试软件CoCADPing,研究和实现了Client/Server模式下的CoCADToolAgent for AutoCAD和CoCADToolAgent for SolidWorks的通讯机理;面向对象的图形数据库通讯协议,实现数据抽象和操作抽象,与发言权并发控制方法相结合,非常简练地兼容现有图形CAD系统的数据类型、操作编辑方法(拉伸、剪切、扩展、打断、倒角、圆角等和符合工程应用标准的尺寸标注操作)和各种编辑形式(命令行命令/外部宏命令组、菜单、按钮、夹点操作等);偏复制式体系结构的一致性维护和并发控制,提出了添加操作优先并发控制的改进型整体一致性模型,支持三种并发控制方法(序列化、发言权和对象锁)及其切换;协同感知;多任务及脚色机制。上述各项都是在CoCADToolAgent这种新型协作框架下实现的,因此有着鲜明的技术特色。本文仅就CoCADToolAgent中远程指针协同感知技术开展讨论,包括共享光标和动态多光标的实现方法。2 共享光标CoCADToolAgent的共享光标实现框图见图2。2.1 鼠标移动消息事件的截取对于从头开始通讯协作编程的白板、协同绘图系统,这是一件很轻松、很自然的事情,因为可以在源程序中通过鼠标移动消息函数直接得到鼠标移动的消息事件。但是CoCADToolAgent是得不到所兼容CAD系统的源程序,不能直接得到鼠标移动消息事件。打开发送开关发送端用户移动鼠标 本地光标绘制显示鼠标移动消息事件的截取 共享光标发送端 坐标的转换前处理 通讯网络 打开接受开关 共享光标接受端 坐标的转换后处理 附加协作信息(可选) 接受端用户鼠标移动 焦点抢夺 共享光标绘制显示图2 共享光标实现框图因此CoCADToolAgent定义了一个钩子函数(hook function),并在所兼容的CAD系统的窗口消息循环中成功地登记了该函数。函数原型为void (*WatchWinMsgFn) (const MSG*),函数定义的伪码描述如下:if(pMsg-message=WM_MOUSEMOVE) /鼠标移动消息 /分析消息结构,获取鼠标移动像素点位置坐标 /通过坐标转换获得鼠标移动所在图形空间位置世界坐 /标,前处理 /将坐标数值转换成字符串 /按远程光标的通告通讯协议编码,向网络发送鼠标移动 /消息2.2 图形坐标与界面坐标的转换对于应用共享方式的透明协作框架,由于采用界面协作方式,通过截取输入/输出界面来实现的,各个用户窗口上的界面坐标系统是相同的。但是CoCADToolAgent是一个结合了应用共享系统和从头开始通讯协作编程系统的优点、克服它们缺点的新型体系结构,不仅支持透明协作,而且支持明确协作,所以不能象应用共享方式那样通过截取输入/输出界面来实现界面协作。CoCADToolAgent所兼容的CAD系统图形实体采用视口(View Port)来表示,视口实体是基于世界坐标的,而且要支持视口缩放功能,不能采用界面协作方式来直接传递界面像素点坐标值,必须进行坐标转换的前后处理。前处理 用于远程光标的通告通讯协议编码时,将远程窗口鼠标像素点位置坐标转换成图形空间世界坐标,其坐标转换算法流程如下:根据所截获的鼠标移动消息结构中位置信息获得CAD系统图形窗口的视口号码;同时根据该信息定义一个多文挡的点结构对象localPt,这是一个屏幕坐标;将localPt点屏幕指标转换成CAD系统窗口客户区显示坐标;定义一个CAD系统世界坐标图形点对象dwgPt;根据视口号码,将localPt点转换成dwgPt点,编码发送。后处理 用于远程光标的通告通讯协议解码时,将图形空间世界坐标转换成本地窗口像素点位置坐标,其坐标转换算法流程正号与前处理相反。定义一个CAD系统世界坐标图形点对象ptWorld,将远程鼠标移动消息解码的x、y坐标数值填入;定义一个多文挡的点结构对象ptPixel,这是一个屏幕坐标;根据视口号码,将ptWorld点转换成ptPixel点。2.3 鼠标消息事件的执行简单执行 由于是将远程光标移动消息插入到本地鼠标消息队列,将本地用户和远程用户的鼠标消息进行信息融合,该鼠标具有单一的串行化输入流特征,多个用户通过竞争抢夺对鼠标焦点的操作权:通过坐标转换的后处理,获得鼠标移动所在的屏幕坐标ptPixel;定义一个视图(Cview*)类指针pv;将该指针pv指向所兼容CAD系统的图形输入/输出窗口;通过该指针pv调用视图类的成员函数,向CAD系统图形输入/输出窗口发送鼠标消息,插入远程鼠标移动的执行动作。使用共享光标时用户会发现鼠标有时会“不听话”:如果是在传统人机交互CAD环境的话,这种情况只能解释为系统故障;由于是在人人交互的CSCD环境,用户应该意识这是一种人人交互方式,表明有其他远程用户也正在操作该鼠标,通过抢夺执行来体现操作时的“人感”。在此基础上可以实现共享拖动关联感知。附加一些动态协作信息 简单执行对其他用户的信息不太明确,可以附加一些动态协作信息,来克服简单执行方式协同感知不够明确的缺点。但是附加信息不宜过多,否则会产生干扰,反而不利于协同感知。考虑到本文的上下文环境,CoCADToolAgent的共享光标附加以下三类信息,就能比较好地支持协同工作:改变鼠标形状,有效地感知到是本地用户,还是远程用户的操作;带用户名字标识,不仅可以感知到本地用户和远程用户之间的区别,而且可以感知到具体是哪一个远程用户;带用户脚色信息,可以增强协作者的群体意识。所附加的这些动态信息要涉及到模拟光标问题,见下小节多光标中有关介绍。 发送端 发送端用户1移动鼠标 发送端用户n移动鼠标 本地绘制 本地绘制截取、发送鼠标移动消息事件 截取、发送鼠标移动消息事件 通讯网络 多光标消息队列 主动刷新接受端用户移动鼠标 界面耦合 模拟多光标绘制显示接受端 焦点光标绘制显示图3 动态多光标实现框图3 动态多光标 CoCADToolAgent的动态多光标实现框图见图3。除了同上小节共享光标一样存在鼠标消息事件的截取、坐标转换、消息执行等问题之外,作为多光标,必须解决一些自身的问题。3.1 光标资源多光标可以采用静态光标资源,也可以采用动态模拟方法。一般来说动态模拟方法能更好地反映CSCW系统人人交互特点,故动态多光标基本上采用模拟方法形成。但是目前这类动态多光标的实现是基于从头开始通讯协作编程的协作框架,可以简单地在源程序中直接调用设备上下文成员函数就能实现动态光标的绘制,从而解决模拟光标资源问题23。而CoCADToolAgent是得不到商业化CAD系统的源程序的,因此,这种方法不适合CoCADToolAgent。CoCADToolAgent可以直接操作CAD系统的图形数据库,可以很自然地联想到用CAD系统的图形字符实体对象来表达多光标。但是这种方法存在明显的缺点:要经过CAD图形数据库的管理,显示速度慢,且有种种限制;CoCADToolAgent的图形与字符实体的大小是根据视图窗口比例而变化的,而光标应该在所有比例的视图窗口上具有统一的大小,所以要进行光标图形的自适应大小调整;不可避免地与图形数据库的操作产生并发操作冲突;在图形数据库中添加与编辑设计内容无关的实体会产生一些负面效应,不利于系统的开放性和兼容性。本文曾经试用并实现过这种方法,觉得还是难以适应动态多光标的要求,后来放弃了。考虑到模拟光标只不过是界面提示,没有必要进入数据库,关键是要在用户视图中加以体现即可。因此,CoCADToolAgent采用界面耦合的方法来实现动态多光标绘制,完全不影响内存中图形数据库的操作,不会同图形数据库操作产生并发冲突。动态多光标资源由两部分组成:一个焦点光标和多个模拟光标。焦点光标直接利用系统原有的光标资源,由接受端本地用户操纵。对于多个模拟光标,由于得不到所兼容的商业化CAD系统的源程序,CoCADToolAgent是这样来建立动态光标资源的:定义一个视图(Cview*)类指针pv;将该指针pv指向所兼容的CAD的主图形窗口;以该指针pv为参数构造一个客户设备上下文类(CclientDC,注意不是设备上下文类,而是客户设备上下文类)对象dc;调用该客户设备上下文对象dc的成员函数实现模拟光标的绘制显示。定义静态变量X,Y, 定义区域(Crect)类对象cRect鼠标消息以X,X,为基准参数设置cRect的区域,正好包围模拟光标根据中pv指针,使cRect区域无效,更新窗口,抹去重影执行,绘制新位置光标用当前位置坐标更新变量X,Y本次刷新结束图4 模拟光标的主动刷新算法3.2 模拟光标的主动刷新算法上述方法解决了模拟光标绘制显示问题,但是在光标移动过程中,没有实现视图更新,这会造成严重的重影问题。即便是在CAD系统更新图形数据库文挡时,也只对部分更新的实体区域进行刷新,重影问题依然严重。因此需要在执行上述第步骤绘制新位置光标的同时,对上次光标位置进行主动刷新,该算法框图见图4。3.3 多光标隐藏/屏蔽功能发送端隐藏 CoCADToolAgent定义了一个鼠标消息发送开关,该站点协作者可以选择打开/关闭鼠标消息的发送开关,以便在所兼容的CAD系统的窗口消息循环中登记/移去截取鼠标消息的钩子函数。发送端阀值 在基于多光标的协同感知过程中,发送端鼠标任何微小的变化(一个界面像素单位),都会产生发送消息,这会造成通讯资源的严重不足。CoCADToolAgent设置了一个发送鼠标移动消息的阀值(阀值大小为X、Y方向移动量绝对值之和要大于510个像素单位),根据该阀值决定是否发送鼠标移动事件。接受端屏蔽 在接受端的动作反应器中对远程鼠标消息进行滤掉,可以屏蔽掉所有远程站点鼠标消息,也可以有选择性地屏蔽掉部分站点的鼠标消息。4 结束语CoCADToolAgent的远程指针技术的实现对通讯资源要求是很高的,目前采用多个点到点通讯转发方法有待改进。此外,协同感知技术在很大程度上是一个人人界面问题,本文仅从纯技术角度

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论