Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
www.jcde.org
A multi-user selective undo/redo approach for collaborative
CAD systems
Yuan Cheng1, Fazhi He1,*, Bin Xu1, Soonhung Han2, Xiantao Cai1 and Yilin Chen1
1
2
School of Computer Science and Technology, Wuhan University, Wuhan, China
Department of Mechanical Engineering, Korea Advanced Institute of Science and Technology, Daejeon, Korea
(Manuscript Received September 16, 2013; Revised October 31, 2013; Accepted November 1, 2013)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Abstract
The engineering design process is a creative process, and the designers must repeatedly apply Undo/Redo operations to modify CAD
models to explore new solutions. Undo/Redo has become one of most important functions in interactive graphics and CAD systems.
Undo/Redo in a collaborative CAD system is also very helpful for collaborative awareness among a group of cooperative designers to
eliminate misunderstanding and to recover from design error. However, Undo/Redo in a collaborative CAD system is much more complicated. This is because a single erroneous operation is propagated to other remote sites, and operations are interleaved at different sites.
This paper presents a multi-user selective Undo/Redo approach in full distributed collaborative CAD systems. We use site ID and State
Vectors to locate the Undo/Redo target at each site. By analyzing the composition of the complex CAD model, a tree-like structure called
Feature Combination Hierarchy is presented to describe the decomposition of a CAD model. Based on this structure, the dependency
relationship among features is clarified. B-Rep re-evaluation is simplified with the assistance of the Feature Combination Hierarchy. It
can be proven that the proposed Undo/Redo approach satisfies the intention preservation and consistency maintenance correctness criteria for collaborative systems.
Keywords: Undo/Redo; Collaborative CAD; Intention preservation; Configuration management
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. Introduction
When exploring a new system for the first time, a user
needs to execute and cancel operations repeatedly to fully
understand each function. The idea that "any system with a
complex interaction interface should offer Undo/Redo support" was proposed in the late 1980s [1]. The fact that “no
one will doubt the importance of offering Undo/Redo function in interactive systems" was also pointed out [2].
Collaborative CAD systems are an important platform for
geographically dispersed designers working together. As an
important feature in collaborative systems, Undo/Redo can
help in reducing errors and eliminating misunderstandings [34]. Several kinds of group Undo/Redo models have been
proposed, and the selective Undo/Redo model is the one most
adopted. Supporting Undo/Redo in a collaborative CAD system is considered to be more complex and technically challenging than in a single-user environment.
Artifacts in collaborative design have a complex structure.
*
Corresponding author. Tel.: +86 18986211761
E-mail address: fzhe@whu.edu.cn
© 2014 Society of CAD/CAM Engineers & Techno-Press
doi: 10.7315/JCDE.2014.011
Features are combined to form the boundary representation of
a CAD model. The creation of a new feature depends on the
existing features. When an operation is chosen as the Undo
target, operations that depend on it must be obtained. In this
circumstance, the structure of the complex design artifacts
should be clearly presented.
Basic correctness criteria for a generic collaborative environment should be satisfied, such as intention preservation
and consistency maintenance. The intention of an Undo and
Redo commands is to eliminate and re-create the feature created by a certain modeling operation. Operations are interleaved at different sites, and an error can be detected after a
number of operations are performed after it. The Undo/Redo
implication should be interpreted unambiguously.
As a continuation of our previous work [5- 7], a multi-user
selective Undo/Redo method for a 3D collaborative CAD
environment is proposed. Within our method, the Undo/Redo
target can be uniquely identified at each site. We also studied
the structure of the complex design artifacts, and a tree-like
structure called a Feature Combination Hierarchy is constructed to present the decomposition of a CAD model. Based
on this structure, the dependency relationship among features
and operations is clarified. The boundary model must be refined each time an Undo or Redo is issued, and this can be
104
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
achieved with the assistance of the proposed structure.
This paper is extended on the basis of our conference work
[8]. In this paper, the construction of the Feature Combination
Hierarchy is presented in more detail (section 3), the Undo/Redo algorithm is optimized against our conference work
(section 4), and; a more detailed example is given (section 5).
The remainder of this article is organized as follows. In
Section 2, the basic concepts of Undo/Redo operations and
research fields are introduced. In section 3, the feature combination hierarchy is introduced. In section 4, our Undo/Redo
method for a 3D collaborative system is introduced. In section 5, test results of the proposed method are presented. Finally, a summary of major contributions are given in section
6.
Different application systems have different characteristics.
There are also different methods in the Operation ID, correlativity analysis and processing.
Operation ID is required in every selective Undo/Redo
model. The symbol "√ " means the operation ID is adopted
by the model, but no implementation method is described.
Detailed implementation methods are given in the literature
[2, 18, 19, 21].
The Multi-user Undo/Redo model from Abowd [2] and
Choudhary [18] do not take correlativity among operations
into consideration, but the Selective Undo model in GINA
[19] and Any Undo Model [4] do. However, in the selective
Undo model, an operation cannot be undone or redone when
it has a relationship with operations executed afterwards. In
the last two models, operation parameters are transferred
when making a Redo operation. When confronting unresolved conflicts, they adopt a multi-version method as a solution. The Multi-level model [20] and cascading selective Undo model [21] are designed for the single-user environment.
The solution for the correlativity among operations is based
on the task ID and task correlativity. That is, when undoing
an operation, all tasks related to it are undone. Edwards's
model supports the Redo, while Cass's model does not.
There has been little research work in collaborative CAD
systems in the field of multi-user Undo/Redo, to the best of
our knowledge. There are still defects in our previous research on multi-user Undo/Redo solutions [7]. At first, when
clarifying the dependency relationship among operations,
every attached feature is checked to see if it references the
topological entities created by the Undo target. This will
cause low efficiency. Secondly, model restoration is done by
storing the model state after the execution of every modeling
operation. The effect of the Undo target is eliminated by obtaining the model state at its execution first and re-executing
all the valid operations. If the Undo target is at the front end
of the history buffer and there are fewer operations that depend on it, the restoration efficiency will be very low.
Yet, there are still two other ways for model restoration
[23]. One is by re-executing all the valid operations in the
2. Related works
An Undo/Redo model determines the number and sequence of the undoable operations. There have been many
efforts in the research field of Undo/Redo models. The initial
research of Undo/Redo models are in single-user environments [9-10]. The Undo/Redo models in single-user environments are classified into 4 categories: 1) the single-step
Undo/Redo model [2], 2) the linear Undo/Redo model [3], 3)
the US&R (Undo, Skip, Redo) model [11], and 4) the history
Undo/Redo model [12]. However, in a multi-user collaborative editing system, operations are interleaved at different
sites. The last operation at the local site is not necessarily the
last executed operation at other sites. Therefore, the selective
Undo/Redo model is the most adopted multi-user Undo/Redo
model. Its flexibility is limited by the Undo/Redo scope;
namely, local Undo/Redo and global Undo/Redo [11, 15- 17].
AnyUndo is a framework which separates an Undo policy
from the Undo mechanism. It allows users to devise a single
Undo algorithm to support both local and global Undo/Redo
and multiple models mentioned above [4, 13]. Moreover, it
allows for undoing any operation at any time. This idea has
been extended in the literature [7, 14].
Table 1 gives a detailed description of the features of the
selective Undo/Redo model and the representative prototype.
Table1. Undo/Redo implementation in multi-user collaborative systems.
Model
Multi-user Undo
Selective Undo
Selective Undo
Any Undo
Multi-level Undo
Cascading
Selective Undo
Literature
[18]
[11, 19]
[15]
[4]
[20]
[21]
Operation
Location
User ID
√
User+
Object ID
√
√
Task ID
Dependency
Process
×
×
√
√
√
√
Object
Data Record
Text
2D Graphic
Text
Strokes
Slides
Prototype
Suite
DistEdit
GINA
Web-based
REDUCE
Flatland Whiteboard
Little-JIL-based
Application
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
history buffer. Despite huge computational workload, it is
still feasible because of hardware speed acceleration. The
second way is by storing interim geometry models or incremental values between neighboring modeling operations.
This method was adopted by Wang from the National CAD
Engineering Center, HUST [22].
3. Feature combination hierarchy in 3D collaborative
CAD systems
In a collaborative CAD system, functions and data are replicated at every site. A modeling operation is executed at the
local site immediately before it is sent to other remote sites. A
CAD model is a complex design artifact combined by features created by collaborative sites. The feature modeling
operations that aid in the designing of complex artifacts consist of geometric operations and Boolean operations. Geometric operations choose topological entities from an existing
solid model as the operation target. An example would be to
choose a topological edge to fillet. There are three types of
Boolean operations, namely Union, Subtraction and Intersection. By executing Boolean operations, a new solid is generated from two existing solids. Typical examples include protrusion and hole-attachment operations. Although the history
buffer can honestly record the arriving sequence of all modeling operations at a collaborative site, it is still inadequate to
represent the structure of the design artifact and interdependency among features. We use the boundary representation of ACIS for representing the shape of the CAD model.
In ACIS, an attribute is attached to entities to describe their
system-defined or user-defined characteristics. Given this,
every entity created by a certain modeling operation is attached with a CREATE_ATTRIB in the form of (Create_SiteID, Create_SEQ) as auxiliary information of its ID.
Therefore, whenever a topological entity is located, its generation operation can be obtained no matter which persistent
naming mechanism is employed. Details of the workflow in a
collaborative CAD system are presented in subsection 4.1. In
105
this section, we study the structure of the complex design
artifact, and the Feature Combination Hierarchy data structure, denoted as FCH for brevity, is introduced.
3.1 A brief view of the feature combination hierarchy
An FCH is a tree-like data structure to represent how 3D
objects are combined and their relations in a CAD model.
Objects, also called sub-configurations, created during the
collaborative design process are categorized as primitive objects and composite objects. A primitive object cannot be
logically decomposed into any primitive objects or constituents. Features created by inter-dependent modeling operations
can be combined into composite objects using Boolean operations. It can also be decomposed into its component parts
which in turn may be decomposed recursively so as to be
addressed separately.
The CAD model created in a collaborative CAD system is
constructed in a manner that a base feature is created firstly
and other features are attaching to it incrementally. Based on
this, a CAD model is decomposed into a primitive object
representing the constructive base feature and several subconfigurations depending on the base feature. The special
primitive object delegating the constructive base feature of a
sub-configuration is called Base Object. There two types of
composite objects: the complex CAD model and subconfigurations built intermediately by combining several
inter-dependent features. Figure 1 illustrates how a CAD
model, called PART in this example, is decomposed into
different sub-configurations. The BaseCylinder feature is the
constructive base feature of the PART model. So, the corresponding BaseCylinder object is noted as the Base Object of
the PART object. The CylinderChamfer sub-configuration is
a primitive object even though it is constructed by two modeling operations. That means a cylinder needs to be created
first, and the edge of the cylinder’s top face is filleted afterwards. The CylinderUnion sub-configuration is a composite
object which can be decomposed further. CylinderBoss1 is
the base object of the CylinderUnion sub-configuration.
Figure 1. An example of complex artifact decomposition.
106
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
sub-configurations SC1 and SC2, The Base Object
of SC is also the Base Object of SC1 and SC2.
6) During the evolving process of a part, the part is
updated after the execution of every modeling operation. Therefore, the corresponding FCH is updated as well. With the consistency maintenance
mechanism of our previous work, the CAD models
at every site are consistent. Therefore, the FCHs at
every site are also consistent.
The tree-like data structure and main characteristics are
summarized as follows:
1) The root of the hierarchy is a composite object delegating the complex design artifact. A class Artifact
is declared to represent the root. The root node has
several branches. Each branch is a decomposed
sub-configuration from the complex design artifact.
The first branch is always the constructive base feature of the part. The other branches are subconfigurations depending on the base feature. The
root owns pointers to its branches. Different
branches are in a non-interacting relationship.
2) The object that an intermediate node in the hierarchy delegates can be divided into three types: a) a
composite object created by a Boolean union operation which can be decomposed further; b) a primitive object created by a Boolean subtraction or intersection operation; and c) a primitive object created by executing geometric operations.
3) The leaf node is an additive feature volumetrically
added onto the complex design artifact, or a subtractive feature volumetrically removed from the artifact.
4) In an FCH, a composite object is always created by
a Boolean Union operation. It should be decomposed in the way the root is decomposed. However,
as far as a primitive object is concerned, its evolving process is also clarified if it is created by a
number of modeling operations. This will be illustrated in subsection 3.2.
5) Given a sub-configuration SC decomposed into
3.2 Basic feature modeling operation representation
Separate classes are declared for the ultimate CAD model
and primitive/composite objects separately, as illustrated
below:
Struct
{
long int BoundaryModelPointer;
// Pointer to the boundary model of the sub// configuration
long int BaseObjectPointer;
// Pointer to the base object of the sub-configuration
int OpSEQ;
// The sequence number of modeling operation
// creating this sub-configuration from its previous
// version
CString
OperationType;
(a)
(b)
Figure 2. Decomposition of the object created by different types of modeling operation: (a) decomposition of the object created by Boolean operations, (b) decomposition of the object created by geometric operations.
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
// A geometric operation or Boolean Union,
// Subtraction or Intersection operation
int SubConf_No;
// The branch the sub-configuration is in
std::list<Sub_Configuration>m_listSubConfPointer;
// Pointers to the decomposed sub-configurations if
// a composite object or empty if a primitive object
Sub_Configuration *next;
// Pointer to the evolved version of this sub// configuration after executing a consequent
// modeling operation
} Sub_Configuration ;
Struct
{
long int BoundaryModelPointer;
// Pointer to the boundary model of the sub// configuration
long int BaseFeaturePointer;
// Pointer to the base feature of the part
std::list<Sub_Configuration> m_listSubConfPointer;
// Pointers to the decomposed sub-configurations
} Artifact;
Based on the two classes, the decomposition of an object
obtained by executing different types of feature modeling
operations are illustrated in Figure 2. The node at the higher
level delegates the renewed sub-configuration with whichever
kind of feature modeling operation is executed. Figure 2(a)
illustrates the decomposition of an object obtained by executing Boolean union, subtraction and intersection. The object
obtained after executing a Boolean union operation is a composite object that is decomposed into a Base Object and an
additive feature. The object obtained after executing a Boolean subtraction or intersection operation is a primitive object.
However, the primitive object obtained is also illustrated. The
grey-shadowed node means the feature is volumetrically removed from the sub-configuration. Figure 2(b) illustrates the
evolving process of a primitive object created by the geometric operation.
4. Undo/Redo method in replicated collaborative
modeling systems
Before the Undo/Redo method is proposed, it is necessary
to discuss the consistency maintenance mechanism we adopted in our collaborative CAD system. A collaborative CAD
system requires the execution of a modeling operation to
satisfy causality preservation and intention preservation. All
replicas reach the state of convergence at the end of a collaborative task. In order to identify the sequencing of simultane-
107
ous operations issued by collaborative sites in a replicated
collaborative CAD system, a timestamp ordering technique
based on the Lamport State Vector [25] is employed. A State
Vector is an N component vector, where N represents the
total number of all the collaborative sites, and each site has a
unique ID ranging from 0 to N-1. Every site keeps a State
Vector where the i-th component indicates how many operations from site i have been executed at the site. Two State
Vectors, SVi and SVj, are compared in a way that: 1) SVi =
SVj iff each element of SVi is equal to the corresponding element in SVj; 2) SVi < SVj iff each element of SVi is equal to
or less than the corresponding element in SVj and at least one
component of SVi is less than that in SVj; 3) SVi > SVj iff
each element of SVi is greater than the corresponding element
in SVj. Whenever a modeling operation is sent to the remote
sites, a State Vector at its generation moment is attached to it.
An operation can only be executed in the causality-ready
condition, such as when its State Vector is not greater than
the State Vector kept at that remote site. The goal of intention
preservation is reached by adopting an optimistic serialization
concurrency control method proposed by our research group
[26, 27].
When a feature is eliminated from a boundary model, features that depend on it are meaningless. The Undo/Redo
method in a collaborative modeling environment needs to
take the dependency relationship among operations into consideration. As illustrated in subsection 3.2, objects in a composite sub-configuration all depend on its Base Object. Even
a primitive object is constructed on the basis of some primitive object. When a modeling operation is chosen as the undo
target, the first step is to check if the corresponding feature is
the Base Object of some sub-configurations. Afterwards, all
executed operations that depend on the undo target should be
undone altogether.
When an undo command is issued, its intention is to eliminate the effects of one or more operations and restore to some
previous state. The requirements include: 1) to correctly locate the undo target operation; and 2) to successfully eliminate the effects of the undo target and the operations that
depend on it without affecting the non-interacting subconfigurations. When a Redo command is issued, its intention
is to undo the most recent undo issued by the same user. In
this section, we propose a local Undo/Redo method where the
user can only undo operations issued by him/her from back to
forth. This is more similar to the single-user environment.
This method has a pre-condition that the collaborative sites
have reached a state of convergence when an Undo command
is invoked.
4.1 Locating Undo/Redo target
In order to satisfy intention preservation requirement 1, the
Undo/Redo target should be correctly located. Due to network latency and the causality preservation based on State
Vectors, the operation history at each collaborative site has
the following characteristics:
108
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
1) Modeling operations from the same site are executed in
the same order at all sites.
2) Modeling operations from different collaborative sites
are interleaved and executed in different order at different sites.
Since the Undo target that a user is aiming at is not necessarily the last operation in the execution list at each site, when
locating the Undo target, there are 2 aspects we should take
into consideration: 1) locating the Undo target at the local site;
and 2) locating the Undo target at remote sites.
A modeling operation is executed immediately at its generation site immediately after it is issued. Thus, the Undo object
merely exists in the execution list at the local site.
Consider a collaborative CAD system CS as an example.
There are N collaborative sites in CS. Ai,j (0≤j≤M-1) means
the modeling operation sent from site Si, and M is the total
number of operations. For Si, all the operations it sends are
put in its execution list ExecuteListi from Ai,0 to Ai,M one by
one.
As soon as Si issues an Undo command, it is easy to search
through its ExecuteListi, and the last operation satisfying
Ai.siteId == i is the Undo target.
Given network latency and the summarized characteristic
(2), the Undo target may exist in two lists at any remote site.
One possible list is the execution list, and the other one is the
waiting list keeping waiting operations that are not causality
ready.
When some random remote site Sj receives the Undo request, the possible identified Undo target may not be the last
executed operation. So, it can only be located in the ExecuteListj or WaitListj. In order to locate the Undo target, the
combination of site ID and operation’s State Vector are
adopted. An operation from Si is sent to Sj in the format of Ai
(SiteId, StateVector). When Ai arrives at Sj, ExecuteListj will
be searched first. If no operation in this list satisfies O.siteId
== i and O.StateVector==Ai.StateVector, then WaitListj will
(a)
(b)
Figure 3. Location of Undo object at remote site: (a) the initial state before applying the undo command, (b) the model state
after applying the undo command.
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
109
Algorithm 1: Obtaining the dependency operation set of the Undo target.
Input: the identified Undo target operation Op, current FCH
Output: DOS(Op)
1: Op_Node = the object node of Op in FCH;
2: DOS(Op) = Empty;
3: i = Op_Node.SubConf_No;
4: root = root node of FCH;
5: SubConf_Node = root.m_listSubConfPointer[i];
6: Temp_Node = Op_Node.next;
7: while (Temp_Node != SubConf_Node)
8:
if (Temp_Node->BaseModelPointer == Op_Node)
9:
Temp_Node is put into DOS(Op);
10:
if (Temp_Node->BaseModelPointer != Op_Node)
11:
Temp_Base_Node = Temp_Node->BaseFeaturePointer;
12:
while (Temp_Base_Node != NULL )
13:
if (Temp_Base_Node->BaseFeaturePointer == Op_Node)
14:
Temp_ Base_Node is put into DOS(Op);
15:
else
16:
Temp_Base_Node=Temp_Base_Node->BaseFeaturePointer;
17:
endif
18:
endwhile
19:
endif
20:
endif
21:
Temp_Node = Temp_Node->next
22: endwhile
be searched in order to locate the Undo target.
Figure 3 shows an example of applying operation ID and
State Vector to the Undo process. In the example, Cubid-
Slot(1) is from site 1 and CubidSlot (2) is from site 2. The
Undo command is issued by site 2.
4.2 Undo targets preservation
Algorithm 2: Undo method at a collaborative sitei.
Input: Undo request, history buffer HBi at sitei, current FCH
Output: Re-evaluated geometry model
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
Op = the identified undo target in history buffer;
DOS(Op) = Op’s dependency operation set;
Op_Node = the object node of Op in the FCH;
//obtaining the re-newed sub-configuration without Op’s effect
i = Op_Node.SubConf_No;
root = root node of FCH;
SubConf_Node = root.m_listSubConfPointer[i];
Base_Ob = the base object of the SubConf_Node;
Temp_Node = Base_Ob->Next;
Temp_SubConf = the boudary model Base_Ob delegates;
while (Temp_Node != SubConf_Node)
if (Temp_Node is in DOS(Op || Temp_Node == Op))
delete Temp_Node from FCH;
else
Temp_SubConf = the re-newed boundary model obtained by executing the feature modeling operation
saved in Temp_Node on Temp_SubConf;
creating a new node according to Temp_SubConf and insert the node into FCH;
endif
Temp_Node = Temp_Node->Next;
endwhile
root.m_listSubConfPointer[i] = Temp_Node;
combine all the existing sub-configurations to obtain the re-evaluated boundary model;
110
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
Algorithm 3: Redo method at a collaborative sitei
Input: Redo request, history buffer HBi at sitei, current FCHi
Output: Re-evaluated geometry model
1: if(Op.ReferenceEntityList == NULL)
2:
Ob_Base = new SubConfiguration();
3:
Ob_Base.BaseModelPointer = NULL;
4:
Ob_Base.BoundaryModelPointer = the physical address of base feature model
5:
Ob_Base.ModelingCommandString = the advanced modeling command of Op;
6:
Ob_Arti = new Artifact(); //creating the root node
7:
Ob_Arti.BaseModelPointer = Ob_Base;
8: endif
9: if (Op.ReferenceEntityList!= NULL)
10:
identify the operation creating the referenced topological entities;
11:
Temp_Node = the object nodes of the operation;
12:
Temp_Command_String = the advanced modeling command of the operation;
13:
Temp_Type_String = the operation type obtained by parsing Temp_Command_String;
14:
Ob_New = new SubConfiguration();
15:
Ob_New.BaseModelPointer = Temp_Node;
16:
Ob_New.BoundaryModelPointer = pointer points to the new subconfiguration;
17:
Ob_New.ModelingCommandString = the advanced modeling command;
18:
Ob_New.OperationType = Temp_Type_String;
19:
if (the topological entities of Op.ReferenceEntityLis are from the base feature)
20:
i = m_listSubConfPointer.count();
21:
Ob_Arti.the_i+1th_Configuration _Pointer = new SubConfiguration();
22:
Ob_Arti. the_i+1th_Configuration _Pointer = Ob_New;
23:
else
24:
Ob_Arti.This_SubConfigurationPointer = Ob.New;
25:
endif
26: endif
The intention of an Undo/Redo command is to eliminate/re-create the effect of a certain feature. This means the
B-Rep re-evaluation is an unavoidable step during the Undo/Redo process. As far as intention preservation requirement
2 is concerned,whenever an Undo or Redo command is
issued, only the branch that the corresponding feature is in is
effected in an FCH, while the rest of the branches remain
unchanged. Based on the preparations made in subsections
4.1 and 4.3, two algorithms are presented to introduce our
Undo and Redo methods separately. Algorithm 2 illustrates
the Undo implementation at a collaborative site and Algorithm 3 describes the Redo implementation at a collaborative
site. The Redo method is proposed with the pre-condition that
an operation undone because of a dependency relationship
cannot be redone.
5. Implementation and test results
To demonstrate the effectiveness and feasibility of the proposed Undo/Redo solution, we have made several experiments within the prototype we built using ACIS 6.0 and Visual C++ 6.0. There are 3 collaborative sites, denoted as Site0,
Site1 and Site2, involved in the experiments. The experiments are initiated with a collaborative modeling process
illustrated in Figure 4.
During the collaborative modeling process, a feature modeling command is executed immediately after its generation
at the local site. It is then sent to the other two remote sites for
execution. How many operations are generated at a site and
the execution sequence of all received operations are illustrated in Table 2.
Three Undo commands are issued and executed in the following way:
(Step 1) Site0 sends an Undo command to Undo the last
operation it issued. The target operation O4 is identified and
the corresponding node denoted as Sub_Configuration4 in the
site’s feature combination hierarchy is obtained. The identified node represents the one object in the 4th subconfiguration, and DOS(O4) is empty. Therefore, the subconfiguration is skipped during the re-evaluation process.
Eventually, the other four sub-configurations are recomposed
as illustrated in Figure 6.
Table 2. Operation generation and execution at each site.
Site
ID
Site0
Site1
Site2
Operation generated at
the site
O0:BaseBlock(0)
O1:Cylinder(0)
O4:PolygonExtrusion(0)
O2:Cylinder(1)
O5:RoundHole(0)
O3:PolygonExtrusion(1)
O6:Extrusion(0)
Execution sequence
of operations at the
site
O0,O1,O4,O2,O5,O3,O6
O0,O1,O2,O5,O4,O3,O6
O0,O2,O1,O3,O4,O5,O6
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
(Step 2) Site1 sends its second Undo command. The target
operation O2 is identified and the corresponding node, Cylinder2, is obtained in the current Feature Combination Hierarchy. Since DOS(O2) = O6, the 5th sub-configuration is
skipped during the re-evaluation process. The result is illutrated in Figure 7.
(Step3) Site2 sends an Undo command to Undo the last
operation it issued. The target operation O3 is identified and
the corresponding node denoted as Sub_Configuration2 is
obtained. The identified node represents the one object in the
2th sub-configuration branch, and DOS(O3) is empty. Therefore, the sub-configuration is skipped during the re-evaluation
process. Eventually, the other two sub-configurations are
recomposed as illustrated in Figure 8.
6. Conclusions
We proposed a selective multi-user Undo/Redo method in
replicated collaborative 3D modeling systems. It identifies the
Undo/Redo target operation uniquely at a local site and remote sites by site ID and a Lamport State Vector so as to
preserve a user’s Undo/Redo intention. With the assistance of
a Feature Combination Hierarchy, the structure of the design
artifact and feature relations are clarified. In this way, operations that depend on the Undo target can be easily obtained
and will be undone altogether as well. Finally, the correctness
of our algorithms was proven with experiments executed
within a prototype that we built.
Acknowledgments
This paper is supported by the National Science Foundation of China (Grant no. 61070078).
References
[1] Yang Y. Undo support models. International Journal of ManMachine Studies.1988; 28(5): 457-481.
[2] Abowd G, Dix AJ. Giving undo attention. Interacting with
Computers.1998; 4(3): 317-342.
[3] Berlage T. A selective undo mechanism for graphical user
interfaces based on command objects. ACM Transactions on
Computer-Human Interaction (TOCHI). 1994; 1(3): 269-294.
[4] Sun CZ. Undo any operation at any time in group editors. In:
Proceedings of the 2000 ACM Conference on Computer Supported Cooperative Work; 2000; Philadelphia, PA; p.191-200.
[5] Jing SX, He FZ, Liu HJ. Collaborative naming for replicated
collaborative solid modeling system. In: ASME International
Design Engineering Technical Conferences & Computers and
Information in Engineering Conference; 2008 Aug 3-6;
NewYork, NY; p. 141-150.
[6] He FZ, Jing SX. A naming and corresponding mechanism of
topological entities for replicated collaborative solid modeling.
2008; P.R.China Patent. Application Number: 200810047976.9.
[7] Cheng Y, He FZ, Cai XT, Zhang DJ. Group undo/redo method
in 3D collaborative modeling systems with performance evaluation. Journal of Network and Computer Applications. 2013;
111
36(6): 1512-1522.
[8] Cheng Y, He FZ. A multi-user selective undo/redo approach
for collaborative CAD systems. In: Proceedings of the 2013
Asian Conference on Design and Digital Engineering (ACDDE
2013); 2013 Aug 12-14; Seoul, Korea; p. 593-603.
[9] Archer Jr JE, Conway R, Schneider FB. User recovery and
reversal in interactive systems. ACM Transactions on Programming Languages and Systems. 1984; 6(1): 1-19.
[10] Kontogiannis T. A systems perspective of managing error
recovery and tactical replanning of operating teams in safety
critical domains. Journal of Safety Research. 2011; 42: 73-85.
[11] Prakash A, Knister MJ. Undoing actions in collaborative work:
Framework and experience. Computer Science and Engineering Division. Dept. of Electrical Engineering and Computer
Science. University of Michigan. 1994.
[12] Lanvin DF, Castnedo RL. Extending object-oriented languages
with backward error recovery integrated support. Computer
Languages, Systems & Structure. 2010; 36: 123-141.
[13] Sun CZ. Undo as concurrent inverse in group editors. ACM
Transactions on Computer-Human Interaction. 2002; 9(4):
309-361.
[14] Weiss S. Logoot-undo: Distributed collaborative editing system on P2P networks. IEEE Transactions on Parallel and Distributed Systems. 2010; 21(8): 1162-1174.
[15] Young R, Whitington J. Using a knowledge analysis to predict
conceptual errors in text-editor usage. In: SIGCHI Conference
on Human Factors in Computing Systems: Empowering People; 1990 Apr 1-5; Seattle, WA; p.91-98.
[16] Prakash A, Knister MJ. Undoing actions in collaborative work.
In: Proceedings of the 1992 ACM Conference on ComputerSupported Cooperative Work (CSCW '92); 1992; p. 273-280.
[17] Ressel M, Gunzenhauser R. Reducing the problems of group
undo. In: International ACM SIGGROUP Conference on Supporting Group Work; 1999 Nov 14-17; Phoenix, AZ; p.131139.
[18] Choudhary R, Dewan P. A general multi-user undo/redo model.
In: Proceedings of European Conference on Computer
Supported Cooperative Work; 1995 Sep 11-15; Stockholm,
Sweden; p.231-246.
[19] Prakash A, Knister MJ. A framework for undoing actions in
collaborative systems. ACM Transactions on ComputerHuman Interaction. 1994; 1(4): 295-330.
[20] Edward WK, Igarashi T. A temporal model for multi-level
undo and redo. In: ACM Symposium on User Interface Software and Technology; 2000 Nov 5-8; San Diego, CA; p. 31-40.
[21] Cass AG, Fernandes CST. Using task models for cascading
selective undo. LNCS. 2007; 4385: 186-198
[22] Wang TY, Wu JJ. Research on undo/redo technology in
CAD/CAM. Engineering Journal of Wuhan University. 1998;
31(3): 65-66.
[23] Bidarra R, Bronsvoort W. Semantic feature modeling. Computer Aided Design. 2000; 32(3): 201-225.
[24] Jing SX, He FZ, Liu HJ. A survey of persistent naming problem for topological entities. Journal of Computer Aided Design
& Computer Graphics. 2007; 19(5): 545-552.
112
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
[25] Lamport L. Time, clocks, and the ordering of events in a distributed system. Communications of the ACM. 1978; 21(7):
558-565.
[26] Jing SX, He FZ, Han SH. A method for topological entity
correspondence in a replicated collaborative CAD system.
Computers in Industry. 2009; 60(7): 467-475.
[27] Cheng Y, He FZ, Cai XT, Cheng Y. A method for object reference in collaborative modeling systems. Journal of Computer
Research and Development. 2011; 48(11): 2031-2038.
Figure 4. An example of the collaborative modeling process.
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
Figure 5. The feature combination hierarchy at each site after the collaborative modeling process.
113
114
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
Figure 6. The Feature combination hierarchy after the first undo command.
Figure 7. The feature combination hierarchy after the second Undo command.
C. Yuan et al. / Journal of Computational Design and Engineering, Vol. 1, No. 2 (2014) 103~115
Figure 8. The feature combination hierarchy after the last Undo command.
115