复制式协同CAD系统中保持用户意愿的Undo/Redo方法

文档序号:6483240阅读:178来源:国知局
专利名称:复制式协同CAD系统中保持用户意愿的Undo/Redo方法
技术领域
本发明涉及一种在复制式协同CAD系统中保持用户意愿的Undo/Redo方法, 特别是涉及在复制式协同CAD系统中保持用户意愿的Undo/Redo功能的实现,属 于CSCW领域。
背景技术
在复制式协同建模系统中,各个用户之间需要通过协作来完成共同的设计任 务,当用户面临一个新的系统时,往往需要通过逐步的尝试性的操作来熟悉系统 提供的各项功能,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显然是针对各个用户自身操作 历史记录的局部Undo / Redo,即选择Undo / Redo,而不是针对整个协同编辑系 统全局历史记录的全局Undo / Redo。关于选择Undo / Redo模型的研究针对的是 二维对象,包括数据记录、文本、二维图形、位图等,没有涉及到三维实体。其 次,只有部分模型在研究过程中考虑到了操作之间的相关性。
而目前关于三维CAD系统中Undo / Redo的研究主要是在单机环境下进行的, 并且都不支持任意的Undo / Redo操作。当前流行的三维CAD系统对Undo / Redo
功能的支持描述如下
1) SolidWorks:只支持当前己经执行所有操作中最后一个操作的Undo,不 支持被撤消操作的Redo。实现了不能被Redo的单步Undo模型。
52) UG:支持"顺序列"的Undo,不能够进行被撤消操作的Redo。实现了不
能被Redo的线性Undo模型
3) CATIA:在进入Undo/Redo模式后,可以对操作"顺序列"进行线性Undo
/ Redo,—旦脱离Undo/Redo状态Undo / Redo的操作序列将从系统中 删除掉,实现了 "限定序列"的线性Undo / Redo模型。
4) PR0/E:支持"全部序列"的线性Undo / Redo,用户可以在脱离Undo/Redo 状态后继续进行被Undo掉的操作的Redo操作,实现了线性Undo/Redo模 型。

发明内容
本发明的目的是针对上述关于Undo/Redo模型研究的空白之处,提出了在 复制式协同CAD系统中的保持用户意愿的Undo/Redo方法,该方法能够在多用户 协同编辑的环境中,在保持用户操作意愿的前提下使其能够对所做操作进行 Undo和Redo,并在各站点上保持结果一致。
为了实现本发明目的,本发明提供一种在复制式协同CAD系统中的保持用户
意愿的Undo/Redo方法,包括以下步骤
(1)某个特定的站点Si发出Undo命令后,首先在本地站点定位要被Undo
的目标操作0,并在Si站点上得到依赖操作集DS(O)。
其中所描述的在本地站点定位目标操作,对于任何一个特定的协同站点,
其发出的造型操作在本地站点都是被立即执行的。因此在本地站点上,被Undo的
目标操作只可能存在于本地站点上的已经执行队列中。定位过程如下根据站点
标识号在执行队列中由后向前搜索,队列中满足站点号与本地站点号相等的最后
一个操作即为所定位的操作。
上述依赖操作集DS(0)是指任意操作0所产生的特征实例的名字为FIN(包含
站点号、特征类型、特征标识)。如果站点上已执行操作集中的操作O'中包含
该特征实例的名字信息,则造型操作0'依赖于造型操作0。所有依赖于O的操作
构成O的依赖操作集DS(O),其产生过程如下
(a) 得到造型操作0,已经执行操作集合EOS,被Undo掉的操作集合UOS,等 待被执行的操作集合WOS, O所产生特征实例的名字FIN(O)。将DS(O) , FINS, TFINS 设置为空。
(b) 将FIN(O)添加到FINS和TFINS中,FINS为特征实例名字集合,TFINS为临时FINS。
(c) 当FINS不为空且EOS、 U0S、 WOS其中任一不为空时,获得FINS中第一个 元素。
(d) 对E0S、 U0S、 WOS中每一个操作Oi进行判断,如果操作中包含了FIN(O), 将0i添加到DS(O)中,并将其从对应集合中删除。
(e) 得到0i所产生特征实例的FIN(0i)。
(f) 如果TFINS不包含FIN(Oi),则将FIN(Oi)添加到TFINS和FINS中。
(g) 将当前FIN(O)从FINS中删除,同时指针指向FINS中的下一个元素,跳至 步骤(d)继续执行。
(2) 将EOS中对应于DS(O)中的操作设置为"无效"并将0放入和Si对应的 UndoList[i],然后重建S,站点上的边界模型以完成本地的Undo操作,即将E0S 中标志为有效的操作全部重新执行一遍,来达到重建边界模型的效果。对于存在 于UndoList[i]中的相关操作(UndoList中与操作O存在相关性的一些操作,或 者因为O的撤消而同时被撤消的一些操作),则将其UndoList[i]中删除。
(3) 将包含0 (0中含有产生0的站点号O.siteId和完整的状态向量信息 O.StateVector)的Undo命令逐一发送到各个远端协同站点。发送目标操作的方 法为本地站点定位目标操作后,将操作以站点标识和状态向量的形式发送到远 端站点。
(4) 当某个远端站点S」接收到来自S,发出Undo命令后,得到Sj站点上的对 应于Undo命令中的0的目标操作0'。在Sj站点上得到得到DS(O')。在远端站 点定位目标操作时,考虑到网络的延迟和操作的生成顺序与起在远端站点的到达 顺序不一致,被Undo的目标操作在远端站点上存在的位置有两个远端站点的已 执行队列ExecuteList和等待队列WaitList中。目标操作的定位过程如下
(4-a)搜索执行队列,将其中操作的站点号与状态向量分别和所接受到的向 量和站点号进行比较,同时满足两者相等的操作即为所定位的操作。无满足条件 时,执行步骤(4-b)。
(4-b)搜索等待队列,将其中操作的站点号与状态向量分别和所接收到操作 的站点号与状态向量进行比较,满足两者同时相等的操作即为所定位的操作。
(5) 将E0S中对应于DS(0')中的操作设置为"无效"并将0'放入和Si对 应的UndoList[i]中并重建S」上的边界模型以完成Sj站点上的Undo操作,对于存在于UndoList[i]中的相关操作则将其从UndoList[i]中删除。
(6) 某个特定的站点Si发出Redo命令后,在Si站点对应的被Undo操作队 列UndoList[i]中获得最后一个被Undo的造型操作0,根据0的站点号信息
0. siteld和状态向量信息O. StateVector在Si的执行队列ExecuteListi中査 找相应的操作并将其设置为"有效",之后重建Si上的边界模型完成本地站点 上的Redo操作,将0从UndoList[i]中删除。
(7) 最后将包含0的站点号和状态向量信息的Redo命令发送到远端的各个 协同站点。
(8) 当某个远端站点Sj接收到来自Si发出Redo命令后,得到Sj站点上的执 行队列ExecuteList中的对应于Redo命令中的O的目标操作O',将其设置为
"有效",之后重建Sj上的边界模型完成本地站点上的Redo操作,将0从 UndoList[i]中删除。
所述的某一站点上Redo命令是否能执行是通过对该站点保存的UndoList是 否为空进行判断来决定的。
本发明中操作的"有效/无效性"是通过对其有效性标志进行设置来完成的, 这种方法可以保证操作在执行队列和等待队列中的位置不发生变化,从而维护特 征实例中拓扑元素名字的一致性。Undo和Redo的实现实际上是借助对操作状态设 置"无效"和"有效"来完成的。
本发明与已有技术相比较,效果是积极且明显的首先,本方法填补了现有 的undo/redo模型中操作对象不包含三维几何实体的空白;同时,本方法是在多 用户协同编辑环境中进行,使得用户可以在与其他用户进行三维协同建模时在保 持其操作意愿的前提下通过本方法Undo和Redo操作,以达到将模型从错误的操 作中恢复过来,或者在建模过程中探索新的解决方案。


图1为当被Urulo目标操作无相关操作时,本发明实施例在3个协同站点的 建模流程图。
图2为被Undo目标操作存在相关操作时,本发明实施例在3个协同站点的 建模流程图。
具体实施例方式
下面结合具体实施例对本发明作进一步说明,但不限定本发明。本实施例采用三个站点协同建模,以VC6.0、 ACIS 6.0作为开发平台进行实
施,以下为图1中本发明实施例的具体步骤
1) 3个协同站点的初始状态为由站点siteO生成一个立方体基体特征实例, 该造型操作以block表示,在本地站点立即执行后向sitel, site2发送;站点 sitel和site2并发生成给立方体基体添加圆柱槽特征实例的造型操作,分别以 slot(l)(由站点sitel生成)和slot(2)(由站点site2生成)表示,造型操作 在本地站点立即执行后向其他站点发送;在执行完3个造型操作后3个协同站点上 的边界模型状态相同。依照在3个站点上的执行顺序,操作被放入各站点的执行 列表ExecuteListi (i=l, 2, 3)中。此时3个协同站点都生成了 1个造型操作, 均可以进行Undo操作。由于3个站点都没有执行过Undo操作,UndoListi
2, 3)为空,无法执行Redo操作。
2) 站点site2发出Undo命令,撤销由site2发出的造型操作slot (2)的执 行效果。首先在站点site2上对Undo目标操作进行定位,得到目标操作后经判断 得到该操作的依赖操作集DS (slot (2))为空。
3) 在站点site2上将其执行队列ExecuteList2中slot(2)和对应于 DS(slot(2))中的操作设置为"无效",并将操作slot(2)放入UndoList2中。并 根据操作的"有效/无效性"重建站点site2上的边界模型。
4) 站点site2将包含站点标识和操作状态向量的操作发送至远端站点sitel 和site0。在site2站点上,由于执行了一次Undo操作,可以进行Redo操作,同 时在已经执行队列中已经没有site2站点发出的有效操作可以被UrKlo ,不能进 行Undo操作。
5) 站点sitel和siteO接收到Undo命令后,在本地站点上首先搜索执行队列, 结合所接收操作的站点号和状态向量进行比较,同时满足两者相等的操作即为目 标操作;如果搜索不到,按照同样的方法在等待队列中搜索。得到Undo目标操作 后,将其放入对应的UndoList中。同时得到目标操作的依赖操作集DS。
6) 分别在站点sitel和siteO上的执行队列ExecuteListi和ExecuteList。中 将目标操作和对应操作依赖集中的操作设置为"无效"。根据操作的"有效/无 效性"分别在各自站点上重建模型。经过上述过程,3个协同站点上的边界模型 保持一致。在所有协同站点都保证了site2站点的Undo操作的"意愿"。7) site2发出Redo命令,在UndoList2中获得最后一个被Undo的操作,并在 其执行队列ExecuteList2中根据操作的站点号和状态向量找到对应的操作,并将 其状态设置为"有效",根据操作的"有效/无效性"分别在本站点上重建模型, 并将本操作从UndoList2中删除。
8) 将包含0的站点号和状态向量信息的Redo命令发送到远端的协同站点 sitel禾卩site0。
9) 站点sitel和siteO接收到Redo命令后,分别在各自执行队列中定位目标 操作,并在执行队列中将该操作的状态设置为"有效"。根据操作的"有效/无 效性"分别在本站点上重建模型,并将操作从Undo列表中删除。
10)经过上述步骤后,各协同站点上模型的状态保持一致,并与步骤l)执行 后的效果一致。
下面结合图2,对本发明被Undo目标操作存在相关操作时做详细说明
1) 站点site0发出Undo命令,撤销由siteO发出的造型操作block的执行效 果。首先在站点siteO上对Undo目标操作进行定位,得到目标操作并放入UndoList 。同时计算其依赖操作集DS(block)。经过操作之间的相关性分析得知,由sitel 发出的造型操作slot(l)和block之间存在依赖关系block —slot(l),由site2 发出的造型操作slot(2)和block之间也存在依赖关系block—slot(2)。
2) 在站点siteO上将其执行队列ExecuteList。中对应于DS (block)中的操作 设置为"无效",并根据操作的"有效/无效性"重建站点site2上的边界模型。 slot(l)、 slot(2)首先被Undo掉,接着block也被Undo掉。
3) 站点siteO将包含站点标识和操作状态向量的操作发送至远端站点sitel和 site2。
4) 站点sitel和site2接收到Undo命令后,分别在本地站点上定位对应的Undo 目标,,并放入其对应的UndoList中同时得到依赖操作集DS。
5) 分别在站点sitel和site2上的执行队列ExecuteList,和ExecuteList2中将 对应操作依赖集中的操作设置为"无效"。根据操作的"有效/无效性"分别在 各自站点上重建模型。经过上述过程,3个协同站点上的边界模型保持一致。在 所有协同站点都保证了site0站点的Undo操作的"意愿"。
权利要求
1.一种复制式协同CAD系统中保持用户意愿的Undo/Redo方法,其特征包括以下步骤(1)某个特定的站点Si发出Undo命令后,在本地站点定位要被Undo的目标操作O,并在Si站点上得到依赖操作集DS(O);(2)将已经执行操作集合EOS中对应于DS(O)中的操作设置为“无效”并将O放入和Si对应的UndoList[i],然后重建Si站点上的边界模型以完成本地的Undo操作,对存在于UndoList[i]中的相关操作则将其从UndoList[i]中删除;(3)将包含O的Undo命令逐一发送到各个远端协同站点;(4)当某个远端站点Sj接收到来自Si发出Undo命令后,得到Sj站点上的对应于Undo命令中的O的目标操作O′,在Sj站点上得到DS(O′);(5)将EOS中对应于DS(O′)中的操作设置为“无效”并将O′放入和Si对应的UndoList[i]中并重建Sj上的边界模型以完成Sj站点上的Undo操作,对于存在于UndoList[i]中的相关操作则将其从UndoList[i]中删除;(6)某个特定的站点Si发出Redo命令后,在Si站点对应的被Undo操作队列UndoList[i]中获得最后一个被Undo的造型操作O,根据O的站点号信息O.siteId和状态向量信息O.StateVector在Si的执行队列ExecuteListi中查找相应的操作并将其设置为“有效”,之后重建Si上的边界模型完成本地站点上的Redo操作,将O从UndoList[i]中删除;(7)将包含O的站点号信息和状态向量信息的Redo命令发送到远端的各个协同站点;(8)当某个远端站点Sj接收到来自Si发出Redo命令后,得到Sj站点上的执行队列ExecuteList中的对应于Redo命令中的O的目标操作O′,将其设置为“有效”,之后重建Sj上的边界模型完成本地站点上的Redo操作,将O从UndoList[i]中删除。
2. 根据权利要求l所述复制式协同CAD系统中保持用户意愿的Undo/Redo方 法,其特征是在于步骤(1)中根据站点标识号在执行队列中由后向前搜索实 现本地站点定位目标操作。
3. 根据权利要求l所述复制式协同CAD系统中保持用户意愿的Undo/Redo方法,其特征在于步骤(1)中依赖操作集DS(O)是指任意操作O所产生的特征 实例的名字为FIN,如果站点上已执行操作集中的操作O'中包含该特征实例的名 字信息,则造型操作0'依赖于造型操作O,所有依赖于0的操作构成0的依赖操作集DS(O),其产生过程如下(3-l)得到造型操作0,已经执行操作集合EOS,被Undo掉的操作集合UOS, 等待被执行的操作集合WOS, O所产生特征实例的名字FIN(O),将DS(O), FINS, TFINS设置为空;(3-2)将FIN(O)添加到FINS和TFINS中;(3-3)当FINS不为空且EOS、 U0S、 WOS其中任一不为空时,获得FINS中第一 个元素;(3-4)对E0S、U0S、W0S中每一个操作0,进行判断,如果操作中包含了FIN(0), 将Oi添加到DS(O)中,并将其从对应集合中删除 (3-5)得到(X所产生特征实例的FIN(Oi);(3-6)如果TFINS不包含FIN(Oi),则将FIN(O》添加到TFINS和FINS中; (3-7)将当前FIN(O)从FINS中删除,同时指针指向FINS中的下一个元素,跳至(4)继续执行;上述的FIN包含站点号、特征类型、特征标识,FINS为特征实例名字集合,TFINS为临时FINS。
4. 根据权利要求l所述复制式协同CAD系统中保持用户意愿的lindo/Redo方 法,其特征在于步骤(3)中发送目标操作的方法为本地站点定位目标操作后, 将操作以站点标识和状态向量的形式发送到远端站点。
5. 根据权利要求l所述复制式协同CAD系统中保持用户意愿的Undo/Redo方 法,其特征在于,步骤(4)中所描述的在远端站点定位目标操作时,被Undo的 目标操作在远端站点上存在的位置为远端站点的已执行队列ExecuteList和等待 队列WaitList中,目标操作的定位过程如下(5-1)搜索执行队列,将其中操作的站点号与状态向量分别和所接受到向 量的站点号进行比较,同时满足两者相等的操作即为所定位的操作,无满足条件 时,执行步骤(5-2);(5-2)搜索等待队列,将其中操作的站点号与状态向量分别和所接受到向 量的站点号进行比较,同时满足两者相等的操作即为所定位的操作。
6.根据权利要求l所述复制式协同CAD系统中保持用户意愿的Undo/Redo方 法,其特征在于某一站点上Redo命令是否能执行是通过对该站点保存的 UndoList是否为空进行判断。
全文摘要
本发明公开了一种复制式协同CAD系统中保持用户意愿的undo/redo方法,该方法是针对复制式协同建模系统中造型操作历史的特点以及操作间的依赖性,通过给各站点建立执行队列、等待队列、UndoList,结合操作本身的状态向量和站点号,实现定位本地站点和远端站点Undo/Redo的目标操作,同时结合各特征实例的名字来对操作间的依赖关系进行判断,最后通过模型重建实现全部操作。本发明通过操作“有效/无效性”设置,保证造型过程中特征实例中拓扑元素名字的一致性。
文档编号G06F17/50GK101539960SQ20091006183
公开日2009年9月23日 申请日期2009年4月27日 优先权日2009年4月27日
发明者何发智, 李晓霞, 媛 程, 蔡贤涛 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1