首页> 中国专利> 一种复制式协同CAD系统中的多用户选择Undo和Redo方法

一种复制式协同CAD系统中的多用户选择Undo和Redo方法

摘要

本发明公开了一种复制式协同CAD系统中的多用户选择Undo和Redo方法,方法通过定位Undo/Redo目标操作,基于特征组合图分析操作间的依赖关系并获得依赖操作集,通过边界模型重构以消除目标操作和依赖操作集的执行效果。本发明与已有技术相比较,效果是积极且明显的:首先,本方法填补了现有的undo/redo模型中操作对象不包含三维几何实体的空白;同时,本方法是在多用户协同编辑环境中进行,使得用户可以在与其他用户进行三维协同建模时在保持其操作意愿的前提下通过本方法在任意时刻、针对任意操作开展Undo和Redo操作,以达到将模型从错误的操作中恢复过来,或者在建模过程中探索新的解决方案。

著录项

  • 公开/公告号CN103761407A

    专利类型发明专利

  • 公开/公告日2014-04-30

    原文格式PDF

  • 申请/专利权人 武汉大学;

    申请/专利号CN201410059527.1

  • 申请日2014-02-21

  • 分类号G06F17/50;G06F9/48;

  • 代理机构武汉科皓知识产权代理事务所(特殊普通合伙);

  • 代理人张火春

  • 地址 430072 湖北省武汉市武昌区珞珈山武汉大学

  • 入库时间 2024-02-19 23:32:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-03-13

    未缴年费专利权终止 IPC(主分类):G06F17/50 授权公告日:20160525 终止日期:20170221 申请日:20140221

    专利权的终止

  • 2016-05-25

    授权

    授权

  • 2014-06-04

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20140221

    实质审查的生效

  • 2014-04-30

    公开

    公开

说明书

技术领域

本发明属于CSCW领域,涉及一种复制式协同CAD系统中的多用户选择Undo和Redo方法。

 

背景技术

在复制式协同建模系统中,各个用户之间需要通过协作来完成共同的设计任务,当用户面临一个新的系统时,往往需要通过逐步的尝试性的操作来熟悉系统提供的各项功能,Undo和Redo功能能够让用户放心的进行尝试。同时在多用户环境中,一个用户的错误操作产生的影响范围更大,因此Undo和Redo功能显得犹为重要。关于Undo和Redo 问题的研究主要集中在两个方面,Undo和Redo模型和基于Undo和Redo模型的原型系统的研究。

在CSCW概念被提出来以前,关于Undo和Redo内容的研究主要集中在单用户环境中,也提出了相关的模型,包括:单步Undo和Redo模型、线型Undo和Redo和US&R模型和历史Undo和Redo模型。随着CSCW概念的提出,人们也展开了在多用户环境中Undo和Redo模型的研究,其中选择Undo和Redo是多用户环境下最普遍采用的Undo和Redo模型。

而目前关于三维CAD系统中Undo和Redo的研究主要是在单机环境下进行的,当前流行的三维CAD系统对Undo和Redo功能的支持描述如下:

(1)SolidWorks:只支持当前已经执行所有操作中最后一个操作的Undo,不支持被撤消操作的Redo,实现了不能被Redo的单步Undo模型;

(2)UG:支持“顺序列”的Undo,不能够进行被撤消操作的Redo,实现了不能被Redo的线性Undo模型;

(3)CATIA:在进入Undo和Redo 模式后,可以对操作“顺序列”进行线性Undo和Redo,一旦脱离Undo和Redo 状态Undo和Redo 的操作序列将从系统中删除掉,实现了“限定序列”的线性Undo和Redo 模型;

(4)PRO/E:支持“全部序列”的线性Undo和Redo,用户可以在脱离Undo和Redo 状态后继续进行被Undo 掉的操作的Redo操作,实现了线性Undo和Redo模型。

 

发明内容

本发明的目的是针对上述关于Undo和Redo 模型研究的空白之处,提出了在复制式协同CAD系统中的多用户选择Undo和Redo方法,该方法能够在多用户协同编辑的环境中,在保持用户操作意愿的前提下进行Undo和Redo,并在各站点上保持结果一致。

本发明所采用的技术方案是:一种复制式协同CAD系统中的多用户选择Undo和Redo方法,其特征在于,包括以下步骤:

步骤1:协同站点S发出Undo命令后,将包含造型操作O的Undo 命令逐一发送到各个远端协同站点;

步骤2:协同站点Sj 接收到S发出的Undo命令后,此时i可以与j相等,在站点Sj的操作历史记录中定位要被Undo 的造型操作O,在本站点的特征组合图中定位与造型操作O对应的节点Op_Node,并将该节点状态设为“无效”;

步骤3:基于协同站点Sj 上的特征组合图获得依赖操作集DOS(O);

步骤4:在基于协同站点Sj上的特征组合图中删除DOS(O)中包含操作的对应节点,重构造型操作O所在子结构的边界模型;

步骤5:在造型历史记录中将造型操作O和DOS(O)中包含操作设置为“无效”,并将操作O放入和Sj对应的UndoList[j],重建站点Sj上的边界模型以完成Undo操作;

步骤6:协同站点S发出Redo命令后,将包含造型操作O 的站点号信息、操作顺序号和Redo命令产生站点号信息的Redo 命令发送到远端的各个协同站点;

步骤7:协同站点Sn 接收到Redo命令后,根据包含在Redo命令中的站点号信息和操作顺序号信息在Sn 的操作历史记录中定位造型操作O;

步骤8:将造型操作O从UndoList[n]中删除,在造型历史记录中将造型操作O设置为“有效”,执行造型操作O并重建站点Sn上的边界模型以完成Redo操作;

步骤9:生成造型操作O对应的对象节点,并将节点加入到站点Sn的特征组合图中。

作为优选,步骤1中所述的将包含造型操作O的Undo 命令逐一发送到各个远端协同站点,其具体实现是将包含Undo操作产生站点号、造型操作产生站点号以及造型操作产生顺序号的Undo命令发送至各远端站点。

作为优选,步骤2中所述的在站点Sj的操作历史记录中定位要被Undo 的造型操作O,其具体定位方法为:根据站点号和操作产生顺序号在操作历史记录中由前往后搜索实现协同站点上造型操作的定位。

作为优选,步骤2中所述的特征组合图是一种描述复杂CAD模型的树形结构,其特征组合图的根节点对应协同站点上的复杂CAD模型,中间节点对应于来自于复杂CAD模型并可被继续分解的复杂子结构,叶子节点对应于来自于复杂CAD模型但不能被继续分解的原子结构,每个叶子节点和部分中间节点中保存了创建该原子结构的造型操作;其特征组合图的根节点和每个中间节点使用基对象指针指向代表该复杂子结构的基特征的节点,并且保存了其代表的复杂子结构分解生成的子结构对应的节点集,子节点使用基对象指针指向代表该原子结构的定位特征的节点。

作为优选,步骤2中所述的在本站点的特征组合图中定位与造型操作O对应的节点Op_Node,其具体定位方法为:根据已定位造型操作O在造型操作历史记录中的顺序号,对特征组合图中的各节点进行遍历,满足OpSEQ属性与顺序号相等的节点即为目标节点。

作为优选,步骤3中所述的依赖操作集DOS(O)是指如果特征组合图中存在节点Node’的基对象为Node,则Node’对应的造型操作O’依赖于Node对应的造型操作O,所有依赖于造型操作O的操作构成造型操作O的依赖操作集DOS(O),其具体产生过程包括如下子步骤:

步骤3.1:得到协同站点上的特征组合图的根节点root, root指向的Op_Node所在分支的根节点SubConf;

步骤3.2:判断:

若root的基对象指针指向Op_Node,则将root指向的所有节点放入DOS(O),产生过程结束;否则,继续执行步骤3.3;

步骤3.3:获得SubConf保存的节点集SubConfList,当SubConfList不为空时,对其中的每个节点进行判断:

如果存在节点的基对象指针指向Op_Node,则将该节点对应的造型操作以及以该节点指向的各分支中节点包含的造型操作放入DOS(O),并将节点状态设为“无效”,将节点从SubConfList中删除,并依照相同的方法对下一个节点进行判断;

否则,继续执行步骤3.4,对节点进一步判断;

步骤3.4:如果节点的基对象指针不指向Op_Node,则获得节点保存的节点集,并依照步骤3.3对节点集中包含的节点逐个进行判断,直到到达叶子节点或者节点集为空。

作为优选,步骤4中所述的在基于协同站点Sj 上的特征组合图中删除DOS(O)中包含操作的对应节点,重构造型操作O所在子结构的边界模型,其具体实现包括如下子步骤:

步骤4.1:获得特征组合图的根节点root指向的Op_Node所在分支的根节点SubConf;

步骤4.2:若DOS(O)为空,获得 Op_Node的父节点Op_ Parent,获得Op_ Parent指向的基对象的边界模型Op_Parent_BaseModel,获得Op_ Parent指向的子结构集Op_ Parent_SubConfList,对Op_ Parent_SubConfList中的每个“有效”节点进行判断:获得节点指向的对应子结构的边界模型,并依据包含在该节点中的造型操作命令,完成节点对应的子结构在Op_Parent_BaseModel上的定位,从Op_Parent_SubConfList中删除节点,当Op_ Parent_SubConfList为空时完成重构;将Op_Parent指向的边界模型更新为本次重构后的边界模型,获得Op_ Parent的父节点Parent_Node;

步骤4.3:当Parent_Node不为空时,依照步骤4.2所述的方法对Parent_Node指向的每个“有效”节点进行判断并重构Parent_Node指向边界模型;

步骤4.4:若DOS(O)不为空,对特征组合图进行遍历,若节点状态为“无效”,则获得该节点的父节点Parent,将Parent中指向该“无效”节点的指针指向Op_Node,并从特征组合图中删除以该“无效”节点以及其指向分支中的所有节点,从DOS(O)中删除这些节点对应的造型操作;

步骤4.5:获得Parent的基对象对应的边界模型以及Parent指向的节点集,对节点集中的每个节点进行判断:获得节点保存的该子结构对应的边界模型,并依据包含在该节点中的造型操作命令,完成子结构在基对象对应边界模型上的定位,并从节点集中删除节点;  

步骤4.6:当DOS(O)为空时,流程结束。

作为优选,步骤5中所述的重建站点Sj上的边界模型,其具体实现包括如下子步骤:

步骤5.1:判断:

若特征组合图的根节点root的基对象为“无效”,则重构后边界模型为空;

若特征组合图的根节点root的基对象不为“无效”,则获得基对象对应的边界模型以及root指向的节点集SubConfList;  

步骤5.2:判断:

当SubConfList不为空时,对SubConfList中的每个节点进行如下判断:首先获得节点保存的该子结构对应的边界模型,并依据包含在该节点中的造型操作命令,完成子结构在基对象上的定位,并从SubConfList中删除该节点;

当SubConfList为空时,流程结束。

作为优选,步骤9中所述的生成造型操作O对应的对象节点,并将节点加入到站点Sn的特征组合图中,其具体实现包括如下子步骤:

步骤9.1:获得节点在特征组合图中对应的节点Op_Node,将节点状态设置为“有效”;

步骤9.2:获得Op_ Parent_Node的父节点Parent_Node,当Parent_Node不为空时,获得节点的基对象指向的边界模型,获得节点指向的子结构集Parent_SubConfList,对Parent_SubConfList中的每个节点进行判断:获得节点保存的对应子结构的边界模型,并依据包含在该节点中的造型操作命令,完成子结构在基对象上的定位后从Parent_SubConfList中删除节点,当Parent_SubConfList为空时完成重构;获得Parent_Node的父节点,并依照相同的方法对Parent_Node的父节点进行判断。

本发明中协同站点是否能发出Redo命令通过判断该站点上的Undolist是否为空来完成的。

本发明中操作的“有效/无效性”以及节点的“有效/无效性”是通过对其有效性标志进行设置来完成的, Undo和Redo的实现实际上是借助对操作状态设置“无效”和“有效”来完成的。

本发明与已有技术相比较,效果是积极且明显的:首先,本方法填补了现有的undo/redo模型中操作对象不包含三维几何实体的空白;同时,本方法是在多用户协同编辑环境中进行,使得用户可以在与其他用户进行三维协同建模时在保持其操作意愿的前提下通过本方法在任意时刻、针对任意操作开展Undo和Redo操作,以达到将模型从错误的操作中恢复过来,或者在建模过程中探索新的解决方案。

 

附图说明

图1-1:为本发明实施例中的当被Undo目标操作无相关操作时,在3个协同站点的第一个协同站点的建模流程图。

图1-2:为本发明实施例中的当被Undo目标操作无相关操作时,在3个协同站点的第二个协同站点的建模流程图。

图1-3:为本发明实施例中的当被Undo目标操作无相关操作时,在3个协同站点的第三个协同站点的建模流程图。

图2:为本发明实施例中的当被Undo目标操作无相关操作时,协同建模过程中各站点特征组合图的更新过程。

图3-1:为本发明实施例中的被Undo目标操作存在相关操作时,在3个协同站点的第一个协同站点的建模流程图。

图3-2:为本发明实施例中的被Undo目标操作存在相关操作时,在3个协同站点的第二个协同站点的建模流程图。

图3-3:为本发明实施例中的被Undo目标操作存在相关操作时,在3个协同站点的第三个协同站点的建模流程图。

图4:为本发明实施例中的被Undo目标操作存在相关操作时,协同建模过程中各站点特征组合图的更新过程。

 

具体实施方式

下面结合具体实施例和附图对本发明作进一步说明,但不限定本发明。

请见图1-1、图1-2、图1-3和图2,本实施例采用三个站点协同建模,以VC6.0、ACIS 6.0作为开发平台进行实施,本发明所采用的技术方案是:一种复制式协同CAD系统中的多用户选择Undo和Redo方法,包括以下步骤:

步骤1. 3个协同站点的初始状态为:由站点site0 生成一个立方体基体特征实例,该造型操作以block 表示,在本地站点立即执行后向site1, site2 发送;站点site1 和site2 并发生成给立方体基体添加方台特征和倒圆角特征的造型操作,分别以cubicprotrusion(1)(由站点site1 生成)和fillet(1)(由站点site2生成)表示,造型操作在本地站点立即执行后向其他站点发送;在执行完3个造型操作后3个协同站点上的边界模型状态相同。依照在3个站点上的执行顺序,操作被放入各站点的操作历史记录HBi(i=0,1,2)中。此时3个协同站点都生成了1 个造型操作,均可以进行Undo操作。由于3 个站点都没有执行过Undo 操作,UndoList i(i=0,1,2)为空,无法发出Redo操作。

步骤2. 站点site2 发出Undo 命令,撤销由site2 发出的造型操作fillet(1) 的执行效果。首先在站点site2上对Undo造型操作进行定位,得到造型操作后在特征组合图中定位操作对应的节点Fillet_Node,并将Fillet_Node状态设置为“无效”。对特征组合图进行判断后,得到DOS(fillet(1))为空。

步骤3. 由于DOS(fillet(1))长度为0,获得Fillet_Node的父节点Fillet_Node_Parent,得到该父节点指向的基对象节点Base_Node以及其指向的“有效”节点集{Cubic_Node}, 完成Cubic_Node对应子结构在Base_Node对应边界模型上的定位,并将Fillet_Node_Parent指向的边界模型替换为重构后的边界模型。 由于Fillet_Node_Parent同时也是特征组合图的根节点,因此边界模型重构过程结束。

步骤4. 在站点site2上将其执行队列HB2中操作fillet(1)和对应于DOS(fillet(1))中的操作设置为“无效”,并将操作fillet(1)放入UndoList 2中。 

步骤5. 站点site2将包含站点标识、操作顺序号和Undo站点号的Undo操作发送至远端站点site1和site0。

步骤6. 站点site1和site0接收到Undo命令后,在本地站点上搜索操作历史记录,结合所接收操作的站点号、操作顺序号以及Undo站点号进行比较,同时满足两者相等的操作即为目标操作。

步骤7. 在站点site1和site0的特征组合图中分别定位操作对应的节点Fillet_Node,并将Fillet_Node状态设置为“无效”。对特征组合图进行判断后,得到DOS(fillet(1))为空。获得Fillet_Node的父节点,得到该父节点指向的基对象节点以及其指向的节点集,完成节点集中“有效”节点对应子结构在基对象对应边界模型上的定位,并将父节点指向的边界模型替换为重构后的边界模型。由于父节点同时也是特征组合图的根节点,因此边界模型重构过程结束。

步骤8. 分别在站点site1和site0上的造型历史记录HB1和HB0中将目标操作和对应操作依赖集中的操作设置为“无效”。经过上述过程,3个协同站点上的边界模型保持一致。

步骤9.  site2发出Redo命令,根据Redo命令中包含的站点号以及操作顺序号,并在其操作历史记录HB2中找到对应的操作O,将操作O的状态设置为“有效”。在特征组合图中定位操作O对应的节点Fillet_Node,将节点状态设置为“有效”。获得Fillet_Node的父节点Fillet_Node_Parent,得到该父节点指向的基对象节点Base_Node以及其指向的“有效”节点集{Cubic_Node,Fillet_Node}, 分别完成Fillet_Node 和Cubic_Node对应子结构在Base_Node对应边界模型上的定位,并将Fillet_Node_Parent指向的边界模型替换为重构后的边界模型。 由于Fillet_Node_Parent同时也是特征组合图的根节点,因此边界模型重构过程结束。

步骤10. 将包含O 的站点号、操作顺序号和Redo站点号的Redo 命令发送到远端的协同站点site1和site0。

步骤11. 站点site1和site0接收到Redo命令后,分别在各自操作历史记录中定位目标操作,并将操作状态设置为“有效”。在站点site1和site0的特征组合图中分别定位操作对应的节点Fillet_Node,并将Fillet_Node状态设置为“有效”。获得Fillet_Node的父节点,得到该父节点指向的基对象节点以及其指向的节点集,完成节点集中“有效”节点对应子结构在基对象对应边界模型上的定位,并将父节点指向的边界模型替换为重构后的边界模型。  由于父节点同时也是特征组合图的根节点,因此边界模型重构过程结束。

步骤12. 经过上述步骤后,各协同站点上模型的状态保持一致,并与步骤1执行后的效果一致。

下面结合图3-1、图3-2、图3-3和图4,对本发明被Undo目标操作存在相关操作时做详细说明:

1)  站点site0 发出Undo命令,撤销由site0 发出的造型操作block的执行效果。首先在站点site0上的操作历史记录HB0中定位目标操作block,并将操作设置为“无效”。在特征组合图中获得该操作对应的节点 Base_Node。经判断可知,Base_Node为特征组合图根节点root的基对象节点,则将root指向的所有节点设为“无效”,并将节点对应操作放入DOS(block)中:{Fillet(1), CubicProtrusion(1)}。 将操作block(0)放入UndoList 0中。

2) 遍历特征组合图并定位“无效”节点Fillet(1),获得Fillet(1)的父节点Fillet_Node_Parent,将Fillet_Node_Parent中指向Fillet_Node的指针指向Base_Node。删除Cubic_Node和Fillet_Node。此时,由于特征组合图根节点指向的基对象节点为“无效”节点,因此,Undo操作执行结束后的边界模型为空。

3) 站点site0将包含站点标识、操作顺序号和Undo站点号的操作发送至远端站点site1和site2。

4) 站点site1和site2接收到Undo命令后,分别在本地站点上定位对应的Undo目标操作。在特征组合图中获得该操作对应的节点 Base_Node。经判断可知,Base_Node为特征组合图根节点root的基对象节点,则将root指向的所有节点设为“无效”,并将节点对应操作放入DOS(block)中:{Fillet(1), CubicProtrusion(1)}。 将操作block(0)放入两个站点的UndoList中。

5) 在站点site1和site2上遍历特征组合图并定位“无效”节点Fillet(1),获得Fillet(1)的父节点,将父节点指向Fillet_Node的指针指向Base_Node。删除Cubic_Node和Fillet_Node。此时,由于特征组合图根节点指向的基对象节点为“无效”节点,因此,Undo操作执行结束后的边界模型为空。

6) 经过上述步骤后,各协同站点上模型的状态保持一致。

以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,因此,凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号