一种复制式协同cad系统中的并发控制方法

文档序号:6622596阅读:163来源:国知局
一种复制式协同cad系统中的并发控制方法
【专利摘要】本发明公开了一种复制式协同CAD系统中的并发控制方法,方法通过构建拓扑元素结构树,基于拓扑元素结构树记录了边界模型上拓扑元素的最新状态,拓扑元素被分裂、合并以及删除的历史以及导致拓扑元素被删除的操作集合。通过对拓扑元素引用意图的分析以及获得拓扑元素结构树中记录的拓扑元素状态和变化历史,可以实现协同CAD环境中并发操作情况下造型操作的正确执行以及协同系统的一致性维护。本发明与已有技术相比较,效果是积极且明显的:首先,本方法最大程度地保证了造型操作基于当前边界模型执行;同时,本方法是在多用户协同编辑环境中进行,维护了各协同站点上边界模型在并发操作情况下的一致性。
【专利说明】[0001] -种复制式协同CAD系统中的并发控制方法

【技术领域】
[0002] 本发明属于CSCW领域,涉及一种复制式协同CAD系统中的并发控制方法。
[0003]

【背景技术】
[0004] 在复制式协同CAD系统中,各个用户之间需要通过协作来完成共同的设计任务, 一致性维护和并发控制是CSCW系统中的一个具有挑战性的问题。对于三维协同建模系统, 一致性维护的目的在于采用合适的并发控制机制,保证造型操作在各协同站点的正确执 行。基于历史的参数化特征造型技术已成为了三维CAD系统的主流造型技术。三维模型的 拓扑结构不仅依赖于几何,也依赖于造型历史顺序,这是因为在基于历史的特征设计过程 中,特征的不断添加引起了拓扑元素的不断变化。在三维协同建模系统中,操作的并发产生 使得造型操作命令中引用的拓扑元素在远端站点被改变。这将导致造型操作在远端站点执 行时无法满足拓扑元素引用意图保持这一一致性条件,各协同站点的造型结果不一致情况 无法避免。关键之一在于快速访问并获取CAD的模型信息。在三维协同建模环境中,造型 操作在远端站点上访问拓扑元素信息时,需考虑到拓扑元素被改变时的拓扑元素访问。
[0005] 现有的并发控制方法包括: (1)非静默上下文状态下的拓扑元素对应方法。该方法定义了操作定义上下文DC (Definition Context)与操作执行上下文EC (Execution Context),通过为造型操作附加 状态向量判断操作的DC和EC是否一致。使用Undo/Do/Redo方法直接将模型恢复至操作 的定义上下文以保证上下文敏感型操作在远端站点执行时的拓扑元素引用意图保持;通过 关联引用模型方法保证了非上下文敏感型操作在远端站点执行时的拓扑元素的引用意图 保持。仅凭DC(0) ^EC(O)无法准确地判定操作0中引用的拓扑元素在远端站点被改变, 这是因为远端站点在接收操作0之前执行的0的并发操作不一定会改变0中引用的拓扑元 素。
[0006] (2)拓扑元素名字演化方法。使用名字演化图(Name Propagation Graph)记录建 模过程中拓扑元素在合并、分裂、删除和未改变时的名字演化历史。在拓扑元素原始名字的 基础上附加顺序号seq和序号num分别表示拓扑元素被分裂或者合并的次数以及由同一拓 扑元素分裂后获得拓扑元素的拓扑元素的编号。但是这种方法仅在单机环境下提出,无法 解决协同CAD系统中由并发操作导致的拓扑元素变化时的引用意图保持问题。
[0007] (3)参数模型中拓扑元素变化追踪的方法。方法将模型参数与拓扑元素结构变化 相关联。方法对于平面、圆柱、圆等简单几何形状进行了讨论。不足之处在于只是通过临界 值给出了判断拓扑元素结构变化的可能性,并未对拓扑元素变化结果进行精确的判断和记 录。
[0008] (4)记录拓扑元素父子关系。研究了单机CAD环境中造型操作执行前后的模型拓 扑元素间的父子关系以记录拓扑元素的变化历史和变化结果,并将对应结果存储在一个二 维链表的数据结构中。不足之处在于方法计算量大且仅适用于单机环境。


【发明内容】
[0009]
[0010] 本发明的目的是针对上述关于复制式协同CAD系统中并发控制方法研究的空白 之处,提出了在复制式协同CAD系统中的并发控制方法,该方法能够在多用户协同编辑的 环境中各协同站点上边界模型状态的一致性。
[0011] 本发明所采用的技术方案是:一种复制式协同CAD系统中的并发控制方法,其特 征在于,包括以下步骤: 步骤1:协同站ASi发出造型操作ο后,依据本地站点保存的拓扑元素结构树获得被引 用拓扑元素的ID信息,将造型操作0逐一发送到各个远端协同站点; 步骤2 :协同站点S]接收到Si发出的造型操作0后,对造型操作0对应的高级造型命 令文本进行解析,分别获得几何引用的拓扑元素集GeoRefEntityList和拓扑引用的拓扑 兀素集 TopRefEntityList ; 步骤3 :在站点S]的拓扑元素结构树中逐一定位被几何引用的拓扑元素,判断被几何 引用拓扑元素在协同站点S]上是否被分裂、合并或者删除,获得拓扑元素分裂后的任一新 拓扑元素及合并后拓扑元素,获得导致拓扑元素被删除的造型操作,放入造型操作0的影 响操作集E0S (0)中; 步骤4 :在站点Sj的拓扑元素结构树中逐一定位被拓扑引用的拓扑元素,判断被拓扑 引用拓扑元素在协同站点S]上是否被分裂、合并或者删除,获得拓扑元素分裂后生成的所 有拓扑元素,放入分裂拓扑元素集SplitEntityList (0)中,获得导致拓扑元素被删除或合 并的影响操作集E0S (0); 步骤5 :当E0S (0)不为空时,交换造型操作0和影响操作集E0S (0)的执行顺序,并将 每一步的造型结果记录到模型状态流中,完成造型操作的执行;当SplitEntityList (0)不 为空时,对其中的每一个拓扑元素执行造型操作,并在针对最后一个拓扑元素的造型操作 执行完毕后,将造型结果记录到模型状态流中,造型操作0执行完毕。
[0012] 作为优选,步骤1中所述的拓扑元素结构树是一种记录边界模型上拓扑元素状 态及变化历史的层次化结构,拓扑元素结构树的根节点为空,所有原始拓扑元素节点都位 于第二层,同一层的拓扑元素节点为兄弟节点并通过NEXT指针连接,对任意节点P,若其 Split指针不为空,则表示该节点对应的拓扑元素被分裂;若其状态为INACTIVE且Merge_ Next指针不为空,则节点P对应的拓扑元素合并入Merge_NeXt指向节点对应的拓扑元 素;若其状态为MERGED且Merge_Next指针为空但Merge_Prev指针不为空,则节点P对应 于合并后拓扑元素,随着各协同站点对边界模型的连续修改,拓扑元素的状态也在不断发 生变化,拓扑兀素结构树在各协同站点上不一定是一致的。
[0013] 作为优选,步骤1中所述的依据本地站点保存的拓扑元素结构树获得被引用拓扑 元素的ID信息,其具体实现包括如下子步骤: 步骤1. 1 :根据用户交互过程中获得引用拓扑元素在本站点地址空间的指针信息,对 拓扑元素结构树进行遍历,满足节点的pointer分量值与指针值相等的节点即为拓扑元素 对应节点; 步骤1. 2 :对节点状态进行判断; 若节点状态为ACTIVE,且Merge_Prev指针为空,则被引用拓扑元素的ID信息即为节点 的ID分量值; 若节点状态为ACTIVE,且Merge_Prev指针不为空,则执行步骤1. 3被引用拓扑元素的 ID /[目息; 步骤1. 3 :将节点的ID分量值放入被引用拓扑元素的ID信息中,Merge_Prev指针指向 节点为CurrentNode,并将其ID分量值放入被引用拓扑元素的ID信息中,若CurrentNode 的Merge_Prev指针不为空,则回转执行步骤1. 3继续遍历;若为空,则结束遍历。
[0014] 作为优选,步骤1中所述的将造型操作0逐一发送到各个远端协同站点,其具体实 现是:将造型操作0的站点标识、操作在站点产生的顺序号、以字符串的形式记录造型操作 名称、被几何引用的拓扑元素的ID信息列表、几何引用参数列表、被拓扑引用的拓扑元素 的ID信息列表、拓扑引用参数列表、造型操作到达任一协同站点的顺序号以及造型操作在 任一协同站点执行的顺序号的造型操作发送至各远端站点。
[0015] 作为优选,步骤3中所述的在站点S]的拓扑元素结构树中逐一定位被几何引用的 拓扑元素,其具体实现过程包括如下子步骤: 步骤3. 1. 1 :得到GeoRefEntityList中包含的第一个拓扑元素的ID信息; 步骤3. 1. 2 :对ID字符串进行解析,并判断 若ID长度为1,则直接根据ID信息直接在拓扑元素结构树中定位对应节点; 若ID长度大于1,则根据ID信息中的第一个分量在拓扑兀素结构树中定位节点。
[0016] 作为优选,步骤3中所述判断被引用拓扑元素在协同站点S]上是否被分裂、合并 或者删除,其具体实现过程包括如下子步骤: 步骤3. 2. 1 :若定位节点的Split指针为空,则被引用拓扑元素在协同站点S]上被分 裂; 步骤3. 2. 2 :若定位节点的Merge_Next指针不为空,则被引用拓扑元素在协同站点S」 上与其它拓扑元素合并; 步骤3. 2. 3 :若定位节点的状态为INACTIVE且Merge_Next和Merge_Prev指针均不为 空,则被引用拓扑元素在协同站点Sj上被删除。
[0017] 作为优选,步骤3中所述获得拓扑元素分裂后的任一新拓扑元素,其具体实现过 程包括如下步骤: 步骤3. 3. 1 :获得定位节点的Split指针所指向的节点; 步骤3. 3. 2 :若节点状态为INACTIVE,则获得其当前状态为ACTIVE的兄弟节点,并转至 步骤3. 3. 3继续判断; 步骤3. 3. 3 :若节点的Split指针为空,则根据节点的pointer分量获得分裂后的任一 拓扑元素; 步骤3. 3. 4 :若节点的Split指针不空,则回转执行步骤3. 3. 1继续判断。
[0018] 作为优选,步骤3中所述获得拓扑元素合并后生成的新拓扑元素,其具体实现过 程为: 步骤3. 4. 1 :获得节点的Merge_Next指向的节点; 步骤3. 4. 2 :若节点的Merge_Next指针为空,则根据节点的Pointer分量获得合并后 的拓扑元素;若节点的Merge_Next不为空,则回转执行步骤3. 4. 1继续判断。
[0019] 作为优选,步骤3中所述 获得导致拓扑元素被删除的造型操作,其具体实现过程为:根据节点的DelOpIndex在 造型操作历史记录中定位ARR_SEQ分量值与其相等的造型操作。
[0020] 作为优选,步骤4中所述获得拓扑元素分裂后生成的所有拓扑元素,其具体实现 过程分为如下子步骤: 步骤4. 1. 1 :获得定位节点的Split指针所指向的节点; 步骤4. 1. 2 :若节点的Split指针为空,则将节点的pointer分量指向的拓扑元素放入 SplitEntityList(O)中;若节点的Next指针为空,贝U结束判断;若Next指针指向节点不为 空,则根据步骤4. 1.2继续判断; 步骤4. 1. 3 :若节点的Split指针不空,则回转执行步骤4. 1. 1继续判断。
[0021] 作为优选,步骤4中所述获得导致拓扑元素合并的影响操作集E0S (0),其具体实 现过程分为如下子步骤: 步骤4. 2. 1 :若节点的Merge_Prev指针不为空,则将Merge_Prev指针指向的节点设为 当前节点,并根据节点的Oplndex分量在造型操作历史记录中定位ARR_SEQ分量值与其相 等的造型操作放入E0S(0)中;若当前节点的Merge_Prev指针指向为空,贝U结束判断;若不 为空,则回转执行步骤4. 2. 1继续判断; 步骤4. 2. 2 :若节点的Merge_Next指针不为空,则将Merge_Next指针指向的节点设为 当前节点,并根据节点的Oplndex分量在造型操作历史记录中定位ARR_SEQ分量值与其相 等的造型操作放入E0S (0)中;若当前节点的Merge_Next指针指向为空,则结束判断;若不 为空,则回转执行步骤4. 2. 2继续判断。
[0022] 作为优选,步骤5所述的模型状态流是一个记录边界模型进化历史的线性结构, 模型状态流由状态节点连接而成,节点和节点之间通过指针关联,每个普通状态节点保存 特定造型操作执行完毕以后的边界模型状态,每一个状态节点都被赋予一个状态号,能够 根据状态号直接获得任意时刻的边界模型状态。
[0023] 作为优选,步骤5所述的交换操作0和E0S (0)的执行顺序,其具体实现过程分为 如下子步骤: 步骤5. 1 :根据E0S(0)中包含各操作的N0DE_SEQ分量的最小值N0DE_SEQmin,在模型状 态流中定位状态号为N0DE_SEQmin-l的状态节点,获得状态节点记录的边界模型状态; 步骤5. 2 :基于获得的边界模型状态执行造型操作0 ; 步骤5. 3 :对造型历史记录中的造型操作进行判断: 若存在节点N0DE_SEQ分量值与N0DE_SEQmin相等,则执行该造型操作并结束; 步骤5. 4 :将N0DE_SEQmin的值增加 1,回转执行步骤5. 3继续判断。
[0024] 本发明与已有技术相比较,效果是积极且明显的:首先,本方法最大可能地保证了 造型操作能基于当前边界模型执行;同时,本方法是在多用户协同编辑环境中进行,保证了 并发操作情况下造型操作的意愿,以及协同CAD系统中各站点上边界模型最终状态的一致 性。
[0025]

【专利附图】

【附图说明】
[0026] 图1 :为本发明实施例中的并发操作情况下的一致性维护方法过程图。
[0027]

【具体实施方式】
[0028] 为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发 明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不 用于限定本发明。
[0029] 本发明所采用的技术方案是:一种复制式协同CAD系统中的并发控制方法,包括 以下步骤: 步骤1:协同站ASi发出造型操作ο后,依据本地站点保存的拓扑元素结构树获得被引 用拓扑元素的ID信息,将造型操作0逐一发送到各个远端协同站点; 其中拓扑元素结构树是一种记录边界模型上拓扑元素状态及变化历史的层次化结构, 拓扑元素结构树的根节点为空,所有原始拓扑元素节点都位于第二层,同一层的拓扑元素 节点为兄弟节点并通过NEXT指针连接,对任意节点P,若其Split指针不为空,则表示该节 点对应的拓扑元素被分裂;若其状态为INACTIVE且Merge_Next指针不为空,则节点P对 应的拓扑元素合并入Merge_Next指向节点对应的拓扑元素;若其状态为MERGED且Merge_ Next指针为空但Merge_Prev指针不为空,则节点P对应于合并后拓扑元素,随着各协同站 点对边界模型的连续修改,拓扑元素的状态也在不断发生变化。
[0030] 其中依据本地站点保存的拓扑元素结构树获得被引用拓扑元素的ID信息,其具 体实现包括如下子步骤: 步骤1.1:根据用户交互过程中获得引用拓扑元素在本站点地址空间的指针信息,对 拓扑元素结构树进行遍历,满足节点的pointer分量值与指针值相等的节点即为拓扑元素 对应节点; 步骤1. 2 :对节点状态进行判断; 若节点状态为ACTIVE,且Merge_Prev指针为空,则被引用拓扑元素的ID信息即为节点 的ID分量值; 若节点状态为ACTIVE,且Merge_Prev指针不为空,则执行步骤1. 3被引用拓扑元素的 ID /[目息; 步骤1. 3 :将节点的ID分量值放入被引用拓扑元素的ID信息中,Merge_Prev指针指向 节点为CurrentNode,并将其ID分量值放入被引用拓扑元素的ID信息中,若CurrentNode 的Merge_Prev指针不为空,则回转执行步骤1. 3继续遍历;若为空,则结束遍历。
[0031] 其中将造型操作0逐一发送到各个远端协同站点,其具体实现是:将造型操作0的 站点标识、操作在站点产生的顺序号、以字符串的形式记录造型操作名称、被几何引用的拓 扑兀素的ID信息列表、几何引用参数列表、被拓扑引用的拓扑兀素的ID信息列表、拓扑引 用参数列表、造型操作到达任一协同站点的顺序号以及造型操作在任一协同站点执行的顺 序号的造型操作发送至各远端站点。
[0032] 其中将造型操作0逐一发送到各个远端协同站点,其具体实现是:将造型操作0的 站点标识、操作在站点产生的顺序号、以字符串的形式记录造型操作名称、被几何引用的拓 扑兀素的ID信息列表、几何引用参数列表、被拓扑引用的拓扑兀素的ID信息列表、拓扑引 用参数列表、造型操作到达任一协同站点的顺序号以及造型操作在任一协同站点执行的顺 序号的造型操作发送至各远端站点。
[0033] 步骤2 :协同站点S]接收到Si发出的造型操作0后,对造型操作0对应的高级造 型命令文本进行解析,分别获得几何引用的拓扑元素集GeoRefEntityList和拓扑引用的 拓扑元素集 TopRefEntityList ; 步骤3 :在站点S]的拓扑元素结构树中逐一定位被几何引用的拓扑元素,判断被几何 引用拓扑元素在协同站点S]上是否被分裂、合并或者删除,获得拓扑元素分裂后的任一新 拓扑元素及合并后拓扑元素,获得导致拓扑元素被删除的造型操作,放入造型操作0的影 响操作集E0S (0)中; 其中在站点Sj的拓扑元素结构树中逐一定位被几何引用的拓扑元素,其具体实现过程 包括如下子步骤: 步骤3. 1. 1 :得到GeoRefEntityList中包含的第一个拓扑元素的ID信息; 步骤3. 1. 2 :对ID字符串进行解析,并判断 若ID长度为1,则直接根据ID信息直接在拓扑元素结构树中定位对应节点; 若ID长度大于1,则根据ID信息中的第一个分量在拓扑兀素结构树中定位节点。
[0034] 其中判断被引用拓扑元素在协同站点S]上是否被分裂、合并或者删除,其具体实 现过程包括如下子步骤: 步骤3. 2. 1 :若定位节点的Split指针为空,则被引用拓扑元素在协同站点S]上被分 裂; 步骤3. 2. 2 :若定位节点的Merge_Next指针不为空,则被引用拓扑元素在协同站点S」 上与其它拓扑元素合并; 步骤3. 2. 3 :若定位节点的状态为INACTIVE且Merge_Next和Merge_Prev指针均不为 空,则被引用拓扑元素在协同站点Sj上被删除。
[0035] 其中获得拓扑元素分裂后的任一新拓扑元素,其具体实现过程包括如下步骤: 步骤3. 3. 1 :获得定位节点的Split指针所指向的节点; 步骤3. 3. 2 :若节点状态为INACTIVE,则获得其当前状态为ACTIVE的兄弟节点,并转至 步骤3. 3. 3继续判断; 步骤3. 3. 3 :若节点的Split指针为空,则根据节点的pointer分量获得分裂后的任一 拓扑元素; 步骤3. 3. 4 :若节点的Split指针不空,则回转执行步骤3. 3. 1继续判断。
[0036] 其中获得拓扑元素合并后生成的新拓扑元素,其具体实现过程为: 步骤3. 4. 1 :获得节点的Merge_Next指向的节点; 步骤3. 4. 2 :若节点的Merge_Next指针为空,则根据节点的Pointer分量获得合并后 的拓扑元素;若节点的Merge_Next不为空,则回转执行步骤3. 4. 1继续判断。
[0037] 其中获得导致拓扑元素被删除的造型操作,其具体实现过程为:根据节点的 DelOpIndex在造型操作历史记录中定位ARR_SEQ分量值与其相等的造型操作。
[0038] 步骤4 :在站点S]的拓扑元素结构树中逐一定位被拓扑引用的拓扑元素,判断被 拓扑引用拓扑元素在协同站点S]上是否被分裂、合并或者删除,获得拓扑元素分裂后生成 的所有拓扑元素,放入分裂拓扑元素集SplitEntityList(O)中,获得导致拓扑元素被删除 或合并的影响操作集EOS (0); 其中获得拓扑元素分裂后生成的所有拓扑元素,其具体实现过程分为如下子步骤: 步骤4. 1. 1 :获得定位节点的Split指针所指向的节点; 步骤4. 1. 2 :若节点的Split指针为空,则将节点的pointer分量指向的拓扑元素放入 SplitEntityList(O)中;若节点的Next指针为空,贝U结束判断;若Next指针指向节点不为 空,则根据步骤4. 1.2继续判断; 步骤4. 1. 3 :若节点的Split指针不空,则回转执行步骤4. 1. 1继续判断。
[0039] 其中获得导致拓扑元素合并的影响操作集E0S (0),其具体实现过程分为如下子步 骤: 步骤4. 2. 1 :若节点的Merge_Prev指针不为空,则将Merge_Prev指针指向的节点设为 当前节点,并根据节点的Oplndex分量在造型操作历史记录中定位ARR_SEQ分量值与其相 等的造型操作放入E0S(0)中;若当前节点的Merge_Prev指针指向为空,贝U结束判断;若不 为空,则回转执行步骤4. 2. 1继续判断; 步骤4. 2. 2 :若节点的Merge_Next指针不为空,则将Merge_Next指针指向的节点设为 当前节点,并根据节点的Oplndex分量在造型操作历史记录中定位ARR_SEQ分量值与其相 等的造型操作放入E0S (0)中;若当前节点的Merge_Next指针指向为空,则结束判断;若不 为空,则回转执行步骤4. 2. 2继续判断。
[0040] 步骤5 :当E0S(0)不为空时,交换造型操作0和影响操作集E0S(0)的执行顺序,并 将每一步的造型结果记录到模型状态流中,完成造型操作的执行;当SplitEntityList(O) 不为空时,对其中的每一个拓扑元素执行造型操作,并在针对最后一个拓扑元素的造型操 作执行完毕后,将造型结果记录到模型状态流中,造型操作0执行完毕。
[0041] 其中模型状态流是一个记录边界模型进化历史的线性结构,模型状态流由状态节 点连接而成,节点和节点之间通过指针关联,每个普通状态节点保存特定造型操作执行完 毕以后的边界模型状态,每一个状态节点都被赋予一个状态号,能够根据状态号直接获得 任意时刻的边界模型状态。
[0042] 其中交换操作0和E0S (0)的执行顺序,其具体实现过程分为如下子步骤: 步骤5. 1 :根据E0S(0)中包含各操作的N0DE_SEQ分量的最小值N0DE_SEQmin,在模型状 态流中定位状态号为N0DE_SEQmin-l的状态节点,获得状态节点记录的边界模型状态; 步骤5. 2 :基于获得的边界模型状态执行造型操作0 ; 步骤5. 3 :对造型历史记录中的造型操作进行判断: 若存在节点N0DE_SEQ分量值与N0DE_SEQmin相等,则执行该造型操作并结束; 步骤5. 4 :将N0DE_SEQmin的值增加 1,回转执行步骤5. 3继续判断。
[0043] 请见图1,本实施例采用三个站点协同建模,以VC6. 0、ACIS 6. 0作为开发平台进 行实施,本实施例中,造型操作产生顺序如下:0^0, 0,BaseBlock, 20, 30,40)由SiteO生成 创建基体特征。02,03 和 04 在 SiteO,Sitel 和 Site2 并发产生。02 : (0, 1,EXTRUSION, ON (E^ , ON ( E3), 10, 10, Sketch, ExtrusionPath)在基体特征上创建一个拉伸特征,特 征的定位需要引用拓扑边Ei和E3的几何信息,Skech表示创建的拉伸轮廓,ExtrusionPath 指定拉伸路径。03:(1,0,ARRAY,ON(E1),ON( E3), HOLE, 3,35,0, 10, 20,35,20)在 基体特征上创建一个圆孔的阵列。这需要生成一个圆孔并以圆孔为操作对象完成阵列操 作,圆孔的定位需要引用民和^的几何信息。阵列操作将生成另外3个圆孔。04(2,0, ROUNDEDGE, 0N(F1), 3)选择基体特征的顶面Fi添加倒圆角特征,这实际上是选择顶面的 4条边界拓扑边作为操作对象。操作在其产生站点执行后被发送至远端站点执行。
[0044] 在SiteO上,并发操作的到达顺序为:02,03,04。02的执行并没有引起边界模型上 的拓扑元素发生变化。03执行完毕后,基体特征顶面的拓扑边Ei和E2分别被分裂称为三条 新拓扑边。为保证04的正确执行,分别获得Ei和E2的分裂拓扑元素集,并针对集合中包含 的分裂后拓扑元素完成倒圆角操作。
[0045] 在Sitel上,并发操作的到达顺序为:03,02,04。03执行结束后,顶面Fi的拓扑边 Ei和E2被分裂。为保证02到达后的正确执行,可以使用Ei分裂后的任一拓扑边作为定位 信息。04到达后,分别获得E1和E2的分裂拓扑元素集,并针对集合中包含的分裂后拓扑元 素完成倒圆角操作。
[0046] 在Site2上,并发操作的到达顺序为:04,03,02。04执行结束后,基体顶面的4条 边界边{E1; E2,E3,E4}全部被删除。操作03到达时,作为定位信息被引用的拓扑边Ei和E 2 被删除。因此需要交换03和04的执行次序。同理,02到达时,作为定位信息被引用的拓扑 边Ei和E2被删除,则交换02和04的执行次序。
[0047] 应当理解的是,本说明书未详细阐述的部分均属于现有技术。
[0048] 应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本 发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权 利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发 明的请求保护范围应以所附权利要求为准。
【权利要求】
1. 一种复制式协同CAD系统中的并发控制方法,其特征在于,包括以下步骤: 步骤1:协同站ASi发出造型操作ο后,依据本地站点保存的拓扑元素结构树获得被引 用拓扑元素的ID信息,将造型操作0逐一发送到各个远端协同站点; 步骤2 :协同站点S]接收到Si发出的造型操作0后,对造型操作0对应的高级造型命 令文本进行解析,分别获得几何引用的拓扑元素集GeoRefEntityList和拓扑引用的拓扑 兀素集 TopRefEntityList ; 步骤3 :在站点S]的拓扑元素结构树中逐一定位被几何引用的拓扑元素,判断被几何 引用拓扑元素在协同站点S]上是否被分裂、合并或者删除,获得拓扑元素分裂后的任一新 拓扑元素及合并后拓扑元素,获得导致拓扑元素被删除的造型操作,放入造型操作0的影 响操作集EOS (0)中; 步骤4 :在站点Sj的拓扑元素结构树中逐一定位被拓扑引用的拓扑元素,判断被拓扑 引用拓扑元素在协同站点S]上是否被分裂、合并或者删除,获得拓扑元素分裂后生成的所 有拓扑元素,放入分裂拓扑元素集SplitEntityList (0)中,获得导致拓扑元素被删除或合 并的影响操作集E0S (0); 步骤5 :当E0S (0)不为空时,交换造型操作0和影响操作集E0S (0)的执行顺序,并将 每一步的造型结果记录到模型状态流中,完成造型操作的执行;当SplitEntityList (0)不 为空时,对其中的每一个拓扑元素执行造型操作,并在针对最后一个拓扑元素的造型操作 执行完毕后,将造型结果记录到模型状态流中,造型操作0执行完毕。
2.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤1 中所述的拓扑元素结构树是一种记录边界模型上拓扑元素状态及变化历史的层次化结构, 拓扑元素结构树的根节点为空,所有原始拓扑元素节点都位于第二层,同一层的拓扑元素 节点为兄弟节点并通过NEXT指针连接,对任意节点P,若其Split指针不为空,则表示该节 点对应的拓扑元素被分裂;若其状态为INACTIVE且Merge_Next指针不为空,则节点P对 应的拓扑元素合并入Merge_Next指向节点对应的拓扑元素;若其状态为MERGED且Merge_ Next指针为空但Merge_Prev指针不为空,则节点P对应于合并后拓扑元素,随着各协同站 点对边界模型的连续修改,拓扑元素的状态也在不断发生变化。
3.根据权利要求1或2所述的复制式协同CAD系统中的并发控制方法,其特征在于: 步骤1中所述的依据本地站点保存的拓扑元素结构树获得被引用拓扑元素的ID信息,其具 体实现包括如下子步骤: 步骤1. 1 :根据用户交互过程中获得引用拓扑元素在本站点地址空间的指针信息,对 拓扑元素结构树进行遍历,满足节点的pointer分量值与指针值相等的节点即为拓扑元素 对应节点; 步骤1. 2 :对节点状态进行判断; 若节点状态为ACTIVE,且Merge_Prev指针为空,则被引用拓扑元素的ID信息即为节点 的ID分量值; 若节点状态为ACTIVE,且Merge_Prev指针不为空,则执行步骤1. 3被引用拓扑元素的 ID /[目息; 步骤1. 3 :将节点的ID分量值放入被引用拓扑元素的ID信息中,Merge_Prev指针指向 节点为CurrentNode,并将其ID分量值放入被引用拓扑元素的ID信息中,若CurrentNode 的Merge_Prev指针不为空,则回转执行步骤1. 3继续遍历;若为空,则结束遍历。
4.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤 1中所述的将造型操作0逐一发送到各个远端协同站点,其具体实现是:将造型操作0的站 点标识、操作在站点产生的顺序号、以字符串的形式记录造型操作名称、被几何引用的拓扑 兀素的ID信息列表、几何引用参数列表、被拓扑引用的拓扑兀素的ID信息列表、拓扑引用 参数列表、造型操作到达任一协同站点的顺序号以及造型操作在任一协同站点执行的顺序 号的造型操作发送至各远端站点。
5.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤3 中所述的在站点S]的拓扑元素结构树中逐一定位被几何引用的拓扑元素,其具体实现过程 包括如下子步骤: 步骤3. 1. 1 :得到GeoRefEntityList中包含的第一个拓扑元素的ID信息; 步骤3. 1. 2 :对ID字符串进行解析,并判断 若ID长度为1,则直接根据ID信息直接在拓扑元素结构树中定位对应节点; 若ID长度大于1,则根据ID信息中的第一个分量在拓扑兀素结构树中定位节点。
6.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤 3中所述判断被引用拓扑元素在协同站点S]上是否被分裂、合并或者删除,其具体实现过程 包括如下子步骤: 步骤3. 2. 1 :若定位节点的Split指针为空,则被引用拓扑元素在协同站点S]上被分 裂; 步骤3. 2. 2 :若定位节点的Merge_Next指针不为空,则被引用拓扑元素在协同站点S」 上与其它拓扑元素合并; 步骤3. 2. 3 :若定位节点的状态为INACTIVE且Merge_Next和Merge_Prev指针均不为 空,则被引用拓扑元素在协同站点Sj上被删除。
7.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤3 中所述获得拓扑元素分裂后的任一新拓扑元素,其具体实现过程包括如下步骤: 步骤3. 3. 1 :获得定位节点的Split指针所指向的节点; 步骤3. 3. 2 :若节点状态为INACTIVE,则获得其当前状态为ACTIVE的兄弟节点,并转至 步骤3. 3. 3继续判断; 步骤3. 3. 3 :若节点的Split指针为空,则根据节点的pointer分量获得分裂后的任一 拓扑元素; 步骤3. 3. 4 :若节点的Split指针不空,则回转执行步骤3. 3. 1继续判断。
8.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤3 中所述获得拓扑元素合并后生成的新拓扑元素,其具体实现过程为: 步骤3. 4. 1 :获得节点的Merge_Next指向的节点; 步骤3. 4. 2 :若节点的Merge_Next指针为空,则根据节点的Pointer分量获得合并后 的拓扑元素;若节点的Merge_Next不为空,则回转执行步骤3. 4. 1继续判断。
9.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤3 中所述 获得导致拓扑元素被删除的造型操作,其具体实现过程为:根据节点的DelOpIndex在 造型操作历史记录中定位ARR_SEQ分量值与其相等的造型操作。
10.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤 4中所述获得拓扑元素分裂后生成的所有拓扑元素,其具体实现过程分为如下子步骤: 步骤4. 1. 1 :获得定位节点的Split指针所指向的节点; 步骤4. 1. 2 :若节点的Split指针为空,则将节点的pointer分量指向的拓扑元素放入 SplitEntityList(O)中;若节点的Next指针为空,贝U结束判断;若Next指针指向节点不为 空,则根据步骤4. 1.2继续判断; 步骤4. 1. 3 :若节点的Split指针不空,则回转执行步骤4. 1. 1继续判断。
11.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤 4中所述获得导致拓扑元素合并的影响操作集EOS (0),其具体实现过程分为如下子步骤: 步骤4. 2. 1 :若节点的Merge_Prev指针不为空,则将Merge_Prev指针指向的节点设为 当前节点,并根据节点的Oplndex分量在造型操作历史记录中定位ARR_SEQ分量值与其相 等的造型操作放入E0S(0)中;若当前节点的Merge_Prev指针指向为空,贝U结束判断;若不 为空,则回转执行步骤4. 2. 1继续判断; 步骤4. 2. 2 :若节点的Merge_Next指针不为空,则将Merge_Next指针指向的节点设为 当前节点,并根据节点的Oplndex分量在造型操作历史记录中定位ARR_SEQ分量值与其相 等的造型操作放入E0S (0)中;若当前节点的Merge_Next指针指向为空,则结束判断;若不 为空,则回转执行步骤4. 2. 2继续判断。
12.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤 5所述的模型状态流是一个记录边界模型进化历史的线性结构,模型状态流由状态节点连 接而成,节点和节点之间通过指针关联,每个普通状态节点保存特定造型操作执行完毕以 后的边界模型状态,每一个状态节点都被赋予一个状态号,能够根据状态号直接获得任意 时刻的边界模型状态。
13.根据权利要求1所述的复制式协同CAD系统中的并发控制方法,其特征在于:步骤 5所述的交换操作0和E0S (0)的执行顺序,其具体实现过程分为如下子步骤: 步骤5. 1 :根据E0S(0)中包含各操作的N0DE_SEQ分量的最小值N0DE_SEQmin,在模型状 态流中定位状态号为N0DE_SEQmin-l的状态节点,获得状态节点记录的边界模型状态; 步骤5. 2 :基于获得的边界模型状态执行造型操作0 ; 步骤5. 3 :对造型历史记录中的造型操作进行判断: 若存在节点N0DE_SEQ分量值与N0DE_SEQmin相等,则执行该造型操作并结束; 步骤5. 4 :将N0DE_SEQmin的值增加 1,回转执行步骤5. 3继续判断。
【文档编号】G06F9/38GK104142813SQ201410383044
【公开日】2014年11月12日 申请日期:2014年8月6日 优先权日:2014年8月6日
【发明者】何发智, 程媛, 吴亦奇, 蔡维纬 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1