亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種復(fù)制式協(xié)同cad系統(tǒng)中的并發(fā)控制方法

文檔序號:6622596閱讀:193來源:國知局
一種復(fù)制式協(xié)同cad系統(tǒng)中的并發(fā)控制方法
【專利摘要】本發(fā)明公開了一種復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,方法通過構(gòu)建拓?fù)湓亟Y(jié)構(gòu)樹,基于拓?fù)湓亟Y(jié)構(gòu)樹記錄了邊界模型上拓?fù)湓氐淖钚聽顟B(tài),拓?fù)湓乇环至?、合并以及刪除的歷史以及導(dǎo)致拓?fù)湓乇粍h除的操作集合。通過對拓?fù)湓匾靡鈭D的分析以及獲得拓?fù)湓亟Y(jié)構(gòu)樹中記錄的拓?fù)湓貭顟B(tài)和變化歷史,可以實(shí)現(xiàn)協(xié)同CAD環(huán)境中并發(fā)操作情況下造型操作的正確執(zhí)行以及協(xié)同系統(tǒng)的一致性維護(hù)。本發(fā)明與已有技術(shù)相比較,效果是積極且明顯的:首先,本方法最大程度地保證了造型操作基于當(dāng)前邊界模型執(zhí)行;同時,本方法是在多用戶協(xié)同編輯環(huán)境中進(jìn)行,維護(hù)了各協(xié)同站點(diǎn)上邊界模型在并發(fā)操作情況下的一致性。
【專利說明】[0001] -種復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法

【技術(shù)領(lǐng)域】
[0002] 本發(fā)明屬于CSCW領(lǐng)域,涉及一種復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法。
[0003]

【背景技術(shù)】
[0004] 在復(fù)制式協(xié)同CAD系統(tǒng)中,各個用戶之間需要通過協(xié)作來完成共同的設(shè)計(jì)任務(wù), 一致性維護(hù)和并發(fā)控制是CSCW系統(tǒng)中的一個具有挑戰(zhàn)性的問題。對于三維協(xié)同建模系統(tǒng), 一致性維護(hù)的目的在于采用合適的并發(fā)控制機(jī)制,保證造型操作在各協(xié)同站點(diǎn)的正確執(zhí) 行?;跉v史的參數(shù)化特征造型技術(shù)已成為了三維CAD系統(tǒng)的主流造型技術(shù)。三維模型的 拓?fù)浣Y(jié)構(gòu)不僅依賴于幾何,也依賴于造型歷史順序,這是因?yàn)樵诨跉v史的特征設(shè)計(jì)過程 中,特征的不斷添加引起了拓?fù)湓氐牟粩嘧兓T谌S協(xié)同建模系統(tǒng)中,操作的并發(fā)產(chǎn)生 使得造型操作命令中引用的拓?fù)湓卦谶h(yuǎn)端站點(diǎn)被改變。這將導(dǎo)致造型操作在遠(yuǎn)端站點(diǎn)執(zhí) 行時無法滿足拓?fù)湓匾靡鈭D保持這一一致性條件,各協(xié)同站點(diǎn)的造型結(jié)果不一致情況 無法避免。關(guān)鍵之一在于快速訪問并獲取CAD的模型信息。在三維協(xié)同建模環(huán)境中,造型 操作在遠(yuǎn)端站點(diǎn)上訪問拓?fù)湓匦畔r,需考慮到拓?fù)湓乇桓淖儠r的拓?fù)湓卦L問。
[0005] 現(xiàn)有的并發(fā)控制方法包括: (1)非靜默上下文狀態(tài)下的拓?fù)湓貙?yīng)方法。該方法定義了操作定義上下文DC (Definition Context)與操作執(zhí)行上下文EC (Execution Context),通過為造型操作附加 狀態(tài)向量判斷操作的DC和EC是否一致。使用Undo/Do/Redo方法直接將模型恢復(fù)至操作 的定義上下文以保證上下文敏感型操作在遠(yuǎn)端站點(diǎn)執(zhí)行時的拓?fù)湓匾靡鈭D保持;通過 關(guān)聯(lián)引用模型方法保證了非上下文敏感型操作在遠(yuǎn)端站點(diǎn)執(zhí)行時的拓?fù)湓氐囊靡鈭D 保持。僅憑DC(0) ^EC(O)無法準(zhǔn)確地判定操作0中引用的拓?fù)湓卦谶h(yuǎn)端站點(diǎn)被改變, 這是因?yàn)檫h(yuǎn)端站點(diǎn)在接收操作0之前執(zhí)行的0的并發(fā)操作不一定會改變0中引用的拓?fù)湓?素。
[0006] (2)拓?fù)湓孛盅莼椒?。使用名字演化圖(Name Propagation Graph)記錄建 模過程中拓?fù)湓卦诤喜?、分裂、刪除和未改變時的名字演化歷史。在拓?fù)湓卦济值?基礎(chǔ)上附加順序號seq和序號num分別表示拓?fù)湓乇环至鸦蛘吆喜⒌拇螖?shù)以及由同一拓 撲元素分裂后獲得拓?fù)湓氐耐負(fù)湓氐木幪?。但是這種方法僅在單機(jī)環(huán)境下提出,無法 解決協(xié)同CAD系統(tǒng)中由并發(fā)操作導(dǎo)致的拓?fù)湓刈兓瘯r的引用意圖保持問題。
[0007] (3)參數(shù)模型中拓?fù)湓刈兓粉櫟姆椒?。方法將模型參?shù)與拓?fù)湓亟Y(jié)構(gòu)變化 相關(guān)聯(lián)。方法對于平面、圓柱、圓等簡單幾何形狀進(jìn)行了討論。不足之處在于只是通過臨界 值給出了判斷拓?fù)湓亟Y(jié)構(gòu)變化的可能性,并未對拓?fù)湓刈兓Y(jié)果進(jìn)行精確的判斷和記 錄。
[0008] (4)記錄拓?fù)湓馗缸雨P(guān)系。研究了單機(jī)CAD環(huán)境中造型操作執(zhí)行前后的模型拓 撲元素間的父子關(guān)系以記錄拓?fù)湓氐淖兓瘹v史和變化結(jié)果,并將對應(yīng)結(jié)果存儲在一個二 維鏈表的數(shù)據(jù)結(jié)構(gòu)中。不足之處在于方法計(jì)算量大且僅適用于單機(jī)環(huán)境。


【發(fā)明內(nèi)容】
[0009]
[0010] 本發(fā)明的目的是針對上述關(guān)于復(fù)制式協(xié)同CAD系統(tǒng)中并發(fā)控制方法研究的空白 之處,提出了在復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,該方法能夠在多用戶協(xié)同編輯的 環(huán)境中各協(xié)同站點(diǎn)上邊界模型狀態(tài)的一致性。
[0011] 本發(fā)明所采用的技術(shù)方案是:一種復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特 征在于,包括以下步驟: 步驟1:協(xié)同站ASi發(fā)出造型操作ο后,依據(jù)本地站點(diǎn)保存的拓?fù)湓亟Y(jié)構(gòu)樹獲得被引 用拓?fù)湓氐腎D信息,將造型操作0逐一發(fā)送到各個遠(yuǎn)端協(xié)同站點(diǎn); 步驟2 :協(xié)同站點(diǎn)S]接收到Si發(fā)出的造型操作0后,對造型操作0對應(yīng)的高級造型命 令文本進(jìn)行解析,分別獲得幾何引用的拓?fù)湓丶疓eoRefEntityList和拓?fù)湟玫耐負(fù)?兀素集 TopRefEntityList ; 步驟3 :在站點(diǎn)S]的拓?fù)湓亟Y(jié)構(gòu)樹中逐一定位被幾何引用的拓?fù)湓?,判斷被幾?引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上是否被分裂、合并或者刪除,獲得拓?fù)湓胤至押蟮娜我恍?拓?fù)湓丶昂喜⒑笸負(fù)湓?,獲得導(dǎo)致拓?fù)湓乇粍h除的造型操作,放入造型操作0的影 響操作集E0S (0)中; 步驟4 :在站點(diǎn)Sj的拓?fù)湓亟Y(jié)構(gòu)樹中逐一定位被拓?fù)湟玫耐負(fù)湓兀袛啾煌負(fù)?引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上是否被分裂、合并或者刪除,獲得拓?fù)湓胤至押笊傻乃?有拓?fù)湓兀湃敕至淹負(fù)湓丶疭plitEntityList (0)中,獲得導(dǎo)致拓?fù)湓乇粍h除或合 并的影響操作集E0S (0); 步驟5 :當(dāng)E0S (0)不為空時,交換造型操作0和影響操作集E0S (0)的執(zhí)行順序,并將 每一步的造型結(jié)果記錄到模型狀態(tài)流中,完成造型操作的執(zhí)行;當(dāng)SplitEntityList (0)不 為空時,對其中的每一個拓?fù)湓貓?zhí)行造型操作,并在針對最后一個拓?fù)湓氐脑煨筒僮?執(zhí)行完畢后,將造型結(jié)果記錄到模型狀態(tài)流中,造型操作0執(zhí)行完畢。
[0012] 作為優(yōu)選,步驟1中所述的拓?fù)湓亟Y(jié)構(gòu)樹是一種記錄邊界模型上拓?fù)湓貭?態(tài)及變化歷史的層次化結(jié)構(gòu),拓?fù)湓亟Y(jié)構(gòu)樹的根節(jié)點(diǎn)為空,所有原始拓?fù)湓毓?jié)點(diǎn)都位 于第二層,同一層的拓?fù)湓毓?jié)點(diǎn)為兄弟節(jié)點(diǎn)并通過NEXT指針連接,對任意節(jié)點(diǎn)P,若其 Split指針不為空,則表示該節(jié)點(diǎn)對應(yīng)的拓?fù)湓乇环至?;若其狀態(tài)為INACTIVE且Merge_ Next指針不為空,則節(jié)點(diǎn)P對應(yīng)的拓?fù)湓睾喜⑷隡erge_NeXt指向節(jié)點(diǎn)對應(yīng)的拓?fù)湓?素;若其狀態(tài)為MERGED且Merge_Next指針為空但Merge_Prev指針不為空,則節(jié)點(diǎn)P對應(yīng) 于合并后拓?fù)湓兀S著各協(xié)同站點(diǎn)對邊界模型的連續(xù)修改,拓?fù)湓氐臓顟B(tài)也在不斷發(fā) 生變化,拓?fù)湄K亟Y(jié)構(gòu)樹在各協(xié)同站點(diǎn)上不一定是一致的。
[0013] 作為優(yōu)選,步驟1中所述的依據(jù)本地站點(diǎn)保存的拓?fù)湓亟Y(jié)構(gòu)樹獲得被引用拓?fù)?元素的ID信息,其具體實(shí)現(xiàn)包括如下子步驟: 步驟1. 1 :根據(jù)用戶交互過程中獲得引用拓?fù)湓卦诒菊军c(diǎn)地址空間的指針信息,對 拓?fù)湓亟Y(jié)構(gòu)樹進(jìn)行遍歷,滿足節(jié)點(diǎn)的pointer分量值與指針值相等的節(jié)點(diǎn)即為拓?fù)湓?對應(yīng)節(jié)點(diǎn); 步驟1. 2 :對節(jié)點(diǎn)狀態(tài)進(jìn)行判斷; 若節(jié)點(diǎn)狀態(tài)為ACTIVE,且Merge_Prev指針為空,則被引用拓?fù)湓氐腎D信息即為節(jié)點(diǎn) 的ID分量值; 若節(jié)點(diǎn)狀態(tài)為ACTIVE,且Merge_Prev指針不為空,則執(zhí)行步驟1. 3被引用拓?fù)湓氐?ID /[目息; 步驟1. 3 :將節(jié)點(diǎn)的ID分量值放入被引用拓?fù)湓氐腎D信息中,Merge_Prev指針指向 節(jié)點(diǎn)為CurrentNode,并將其ID分量值放入被引用拓?fù)湓氐腎D信息中,若CurrentNode 的Merge_Prev指針不為空,則回轉(zhuǎn)執(zhí)行步驟1. 3繼續(xù)遍歷;若為空,則結(jié)束遍歷。
[0014] 作為優(yōu)選,步驟1中所述的將造型操作0逐一發(fā)送到各個遠(yuǎn)端協(xié)同站點(diǎn),其具體實(shí) 現(xiàn)是:將造型操作0的站點(diǎn)標(biāo)識、操作在站點(diǎn)產(chǎn)生的順序號、以字符串的形式記錄造型操作 名稱、被幾何引用的拓?fù)湓氐腎D信息列表、幾何引用參數(shù)列表、被拓?fù)湟玫耐負(fù)湓?的ID信息列表、拓?fù)湟脜?shù)列表、造型操作到達(dá)任一協(xié)同站點(diǎn)的順序號以及造型操作在 任一協(xié)同站點(diǎn)執(zhí)行的順序號的造型操作發(fā)送至各遠(yuǎn)端站點(diǎn)。
[0015] 作為優(yōu)選,步驟3中所述的在站點(diǎn)S]的拓?fù)湓亟Y(jié)構(gòu)樹中逐一定位被幾何引用的 拓?fù)湓?,其具體實(shí)現(xiàn)過程包括如下子步驟: 步驟3. 1. 1 :得到GeoRefEntityList中包含的第一個拓?fù)湓氐腎D信息; 步驟3. 1. 2 :對ID字符串進(jìn)行解析,并判斷 若ID長度為1,則直接根據(jù)ID信息直接在拓?fù)湓亟Y(jié)構(gòu)樹中定位對應(yīng)節(jié)點(diǎn); 若ID長度大于1,則根據(jù)ID信息中的第一個分量在拓?fù)湄K亟Y(jié)構(gòu)樹中定位節(jié)點(diǎn)。
[0016] 作為優(yōu)選,步驟3中所述判斷被引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上是否被分裂、合并 或者刪除,其具體實(shí)現(xiàn)過程包括如下子步驟: 步驟3. 2. 1 :若定位節(jié)點(diǎn)的Split指針為空,則被引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上被分 裂; 步驟3. 2. 2 :若定位節(jié)點(diǎn)的Merge_Next指針不為空,則被引用拓?fù)湓卦趨f(xié)同站點(diǎn)S」 上與其它拓?fù)湓睾喜ⅲ?步驟3. 2. 3 :若定位節(jié)點(diǎn)的狀態(tài)為INACTIVE且Merge_Next和Merge_Prev指針均不為 空,則被引用拓?fù)湓卦趨f(xié)同站點(diǎn)Sj上被刪除。
[0017] 作為優(yōu)選,步驟3中所述獲得拓?fù)湓胤至押蟮娜我恍峦負(fù)湓?,其具體實(shí)現(xiàn)過 程包括如下步驟: 步驟3. 3. 1 :獲得定位節(jié)點(diǎn)的Split指針?biāo)赶虻墓?jié)點(diǎn); 步驟3. 3. 2 :若節(jié)點(diǎn)狀態(tài)為INACTIVE,則獲得其當(dāng)前狀態(tài)為ACTIVE的兄弟節(jié)點(diǎn),并轉(zhuǎn)至 步驟3. 3. 3繼續(xù)判斷; 步驟3. 3. 3 :若節(jié)點(diǎn)的Split指針為空,則根據(jù)節(jié)點(diǎn)的pointer分量獲得分裂后的任一 拓?fù)湓兀?步驟3. 3. 4 :若節(jié)點(diǎn)的Split指針不空,則回轉(zhuǎn)執(zhí)行步驟3. 3. 1繼續(xù)判斷。
[0018] 作為優(yōu)選,步驟3中所述獲得拓?fù)湓睾喜⒑笊傻男峦負(fù)湓?,其具體實(shí)現(xiàn)過 程為: 步驟3. 4. 1 :獲得節(jié)點(diǎn)的Merge_Next指向的節(jié)點(diǎn); 步驟3. 4. 2 :若節(jié)點(diǎn)的Merge_Next指針為空,則根據(jù)節(jié)點(diǎn)的Pointer分量獲得合并后 的拓?fù)湓兀蝗艄?jié)點(diǎn)的Merge_Next不為空,則回轉(zhuǎn)執(zhí)行步驟3. 4. 1繼續(xù)判斷。
[0019] 作為優(yōu)選,步驟3中所述 獲得導(dǎo)致拓?fù)湓乇粍h除的造型操作,其具體實(shí)現(xiàn)過程為:根據(jù)節(jié)點(diǎn)的DelOpIndex在 造型操作歷史記錄中定位ARR_SEQ分量值與其相等的造型操作。
[0020] 作為優(yōu)選,步驟4中所述獲得拓?fù)湓胤至押笊傻乃型負(fù)湓?,其具體實(shí)現(xiàn) 過程分為如下子步驟: 步驟4. 1. 1 :獲得定位節(jié)點(diǎn)的Split指針?biāo)赶虻墓?jié)點(diǎn); 步驟4. 1. 2 :若節(jié)點(diǎn)的Split指針為空,則將節(jié)點(diǎn)的pointer分量指向的拓?fù)湓胤湃?SplitEntityList(O)中;若節(jié)點(diǎn)的Next指針為空,貝U結(jié)束判斷;若Next指針指向節(jié)點(diǎn)不為 空,則根據(jù)步驟4. 1.2繼續(xù)判斷; 步驟4. 1. 3 :若節(jié)點(diǎn)的Split指針不空,則回轉(zhuǎn)執(zhí)行步驟4. 1. 1繼續(xù)判斷。
[0021] 作為優(yōu)選,步驟4中所述獲得導(dǎo)致拓?fù)湓睾喜⒌挠绊懖僮骷疎0S (0),其具體實(shí) 現(xiàn)過程分為如下子步驟: 步驟4. 2. 1 :若節(jié)點(diǎn)的Merge_Prev指針不為空,則將Merge_Prev指針指向的節(jié)點(diǎn)設(shè)為 當(dāng)前節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)的Oplndex分量在造型操作歷史記錄中定位ARR_SEQ分量值與其相 等的造型操作放入E0S(0)中;若當(dāng)前節(jié)點(diǎn)的Merge_Prev指針指向?yàn)榭?,貝U結(jié)束判斷;若不 為空,則回轉(zhuǎn)執(zhí)行步驟4. 2. 1繼續(xù)判斷; 步驟4. 2. 2 :若節(jié)點(diǎn)的Merge_Next指針不為空,則將Merge_Next指針指向的節(jié)點(diǎn)設(shè)為 當(dāng)前節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)的Oplndex分量在造型操作歷史記錄中定位ARR_SEQ分量值與其相 等的造型操作放入E0S (0)中;若當(dāng)前節(jié)點(diǎn)的Merge_Next指針指向?yàn)榭?則結(jié)束判斷;若不 為空,則回轉(zhuǎn)執(zhí)行步驟4. 2. 2繼續(xù)判斷。
[0022] 作為優(yōu)選,步驟5所述的模型狀態(tài)流是一個記錄邊界模型進(jìn)化歷史的線性結(jié)構(gòu), 模型狀態(tài)流由狀態(tài)節(jié)點(diǎn)連接而成,節(jié)點(diǎn)和節(jié)點(diǎn)之間通過指針關(guān)聯(lián),每個普通狀態(tài)節(jié)點(diǎn)保存 特定造型操作執(zhí)行完畢以后的邊界模型狀態(tài),每一個狀態(tài)節(jié)點(diǎn)都被賦予一個狀態(tài)號,能夠 根據(jù)狀態(tài)號直接獲得任意時刻的邊界模型狀態(tài)。
[0023] 作為優(yōu)選,步驟5所述的交換操作0和E0S (0)的執(zhí)行順序,其具體實(shí)現(xiàn)過程分為 如下子步驟: 步驟5. 1 :根據(jù)E0S(0)中包含各操作的N0DE_SEQ分量的最小值N0DE_SEQmin,在模型狀 態(tài)流中定位狀態(tài)號為N0DE_SEQmin-l的狀態(tài)節(jié)點(diǎn),獲得狀態(tài)節(jié)點(diǎn)記錄的邊界模型狀態(tài); 步驟5. 2 :基于獲得的邊界模型狀態(tài)執(zhí)行造型操作0 ; 步驟5. 3 :對造型歷史記錄中的造型操作進(jìn)行判斷: 若存在節(jié)點(diǎn)N0DE_SEQ分量值與N0DE_SEQmin相等,則執(zhí)行該造型操作并結(jié)束; 步驟5. 4 :將N0DE_SEQmin的值增加 1,回轉(zhuǎn)執(zhí)行步驟5. 3繼續(xù)判斷。
[0024] 本發(fā)明與已有技術(shù)相比較,效果是積極且明顯的:首先,本方法最大可能地保證了 造型操作能基于當(dāng)前邊界模型執(zhí)行;同時,本方法是在多用戶協(xié)同編輯環(huán)境中進(jìn)行,保證了 并發(fā)操作情況下造型操作的意愿,以及協(xié)同CAD系統(tǒng)中各站點(diǎn)上邊界模型最終狀態(tài)的一致 性。
[0025]

【專利附圖】

【附圖說明】
[0026] 圖1 :為本發(fā)明實(shí)施例中的并發(fā)操作情況下的一致性維護(hù)方法過程圖。
[0027]

【具體實(shí)施方式】
[0028] 為了便于本領(lǐng)域普通技術(shù)人員理解和實(shí)施本發(fā)明,下面結(jié)合附圖及實(shí)施例對本發(fā) 明作進(jìn)一步的詳細(xì)描述,應(yīng)當(dāng)理解,此處所描述的實(shí)施示例僅用于說明和解釋本發(fā)明,并不 用于限定本發(fā)明。
[0029] 本發(fā)明所采用的技術(shù)方案是:一種復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,包括 以下步驟: 步驟1:協(xié)同站ASi發(fā)出造型操作ο后,依據(jù)本地站點(diǎn)保存的拓?fù)湓亟Y(jié)構(gòu)樹獲得被引 用拓?fù)湓氐腎D信息,將造型操作0逐一發(fā)送到各個遠(yuǎn)端協(xié)同站點(diǎn); 其中拓?fù)湓亟Y(jié)構(gòu)樹是一種記錄邊界模型上拓?fù)湓貭顟B(tài)及變化歷史的層次化結(jié)構(gòu), 拓?fù)湓亟Y(jié)構(gòu)樹的根節(jié)點(diǎn)為空,所有原始拓?fù)湓毓?jié)點(diǎn)都位于第二層,同一層的拓?fù)湓?節(jié)點(diǎn)為兄弟節(jié)點(diǎn)并通過NEXT指針連接,對任意節(jié)點(diǎn)P,若其Split指針不為空,則表示該節(jié) 點(diǎn)對應(yīng)的拓?fù)湓乇环至?;若其狀態(tài)為INACTIVE且Merge_Next指針不為空,則節(jié)點(diǎn)P對 應(yīng)的拓?fù)湓睾喜⑷隡erge_Next指向節(jié)點(diǎn)對應(yīng)的拓?fù)湓?;若其狀態(tài)為MERGED且Merge_ Next指針為空但Merge_Prev指針不為空,則節(jié)點(diǎn)P對應(yīng)于合并后拓?fù)湓?,隨著各協(xié)同站 點(diǎn)對邊界模型的連續(xù)修改,拓?fù)湓氐臓顟B(tài)也在不斷發(fā)生變化。
[0030] 其中依據(jù)本地站點(diǎn)保存的拓?fù)湓亟Y(jié)構(gòu)樹獲得被引用拓?fù)湓氐腎D信息,其具 體實(shí)現(xiàn)包括如下子步驟: 步驟1.1:根據(jù)用戶交互過程中獲得引用拓?fù)湓卦诒菊军c(diǎn)地址空間的指針信息,對 拓?fù)湓亟Y(jié)構(gòu)樹進(jìn)行遍歷,滿足節(jié)點(diǎn)的pointer分量值與指針值相等的節(jié)點(diǎn)即為拓?fù)湓?對應(yīng)節(jié)點(diǎn); 步驟1. 2 :對節(jié)點(diǎn)狀態(tài)進(jìn)行判斷; 若節(jié)點(diǎn)狀態(tài)為ACTIVE,且Merge_Prev指針為空,則被引用拓?fù)湓氐腎D信息即為節(jié)點(diǎn) 的ID分量值; 若節(jié)點(diǎn)狀態(tài)為ACTIVE,且Merge_Prev指針不為空,則執(zhí)行步驟1. 3被引用拓?fù)湓氐?ID /[目息; 步驟1. 3 :將節(jié)點(diǎn)的ID分量值放入被引用拓?fù)湓氐腎D信息中,Merge_Prev指針指向 節(jié)點(diǎn)為CurrentNode,并將其ID分量值放入被引用拓?fù)湓氐腎D信息中,若CurrentNode 的Merge_Prev指針不為空,則回轉(zhuǎn)執(zhí)行步驟1. 3繼續(xù)遍歷;若為空,則結(jié)束遍歷。
[0031] 其中將造型操作0逐一發(fā)送到各個遠(yuǎn)端協(xié)同站點(diǎn),其具體實(shí)現(xiàn)是:將造型操作0的 站點(diǎn)標(biāo)識、操作在站點(diǎn)產(chǎn)生的順序號、以字符串的形式記錄造型操作名稱、被幾何引用的拓 撲兀素的ID信息列表、幾何引用參數(shù)列表、被拓?fù)湟玫耐負(fù)湄K氐腎D信息列表、拓?fù)湟?用參數(shù)列表、造型操作到達(dá)任一協(xié)同站點(diǎn)的順序號以及造型操作在任一協(xié)同站點(diǎn)執(zhí)行的順 序號的造型操作發(fā)送至各遠(yuǎn)端站點(diǎn)。
[0032] 其中將造型操作0逐一發(fā)送到各個遠(yuǎn)端協(xié)同站點(diǎn),其具體實(shí)現(xiàn)是:將造型操作0的 站點(diǎn)標(biāo)識、操作在站點(diǎn)產(chǎn)生的順序號、以字符串的形式記錄造型操作名稱、被幾何引用的拓 撲兀素的ID信息列表、幾何引用參數(shù)列表、被拓?fù)湟玫耐負(fù)湄K氐腎D信息列表、拓?fù)湟?用參數(shù)列表、造型操作到達(dá)任一協(xié)同站點(diǎn)的順序號以及造型操作在任一協(xié)同站點(diǎn)執(zhí)行的順 序號的造型操作發(fā)送至各遠(yuǎn)端站點(diǎn)。
[0033] 步驟2 :協(xié)同站點(diǎn)S]接收到Si發(fā)出的造型操作0后,對造型操作0對應(yīng)的高級造 型命令文本進(jìn)行解析,分別獲得幾何引用的拓?fù)湓丶疓eoRefEntityList和拓?fù)湟玫?拓?fù)湓丶?TopRefEntityList ; 步驟3 :在站點(diǎn)S]的拓?fù)湓亟Y(jié)構(gòu)樹中逐一定位被幾何引用的拓?fù)湓?,判斷被幾?引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上是否被分裂、合并或者刪除,獲得拓?fù)湓胤至押蟮娜我恍?拓?fù)湓丶昂喜⒑笸負(fù)湓兀@得導(dǎo)致拓?fù)湓乇粍h除的造型操作,放入造型操作0的影 響操作集E0S (0)中; 其中在站點(diǎn)Sj的拓?fù)湓亟Y(jié)構(gòu)樹中逐一定位被幾何引用的拓?fù)湓?,其具體實(shí)現(xiàn)過程 包括如下子步驟: 步驟3. 1. 1 :得到GeoRefEntityList中包含的第一個拓?fù)湓氐腎D信息; 步驟3. 1. 2 :對ID字符串進(jìn)行解析,并判斷 若ID長度為1,則直接根據(jù)ID信息直接在拓?fù)湓亟Y(jié)構(gòu)樹中定位對應(yīng)節(jié)點(diǎn); 若ID長度大于1,則根據(jù)ID信息中的第一個分量在拓?fù)湄K亟Y(jié)構(gòu)樹中定位節(jié)點(diǎn)。
[0034] 其中判斷被引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上是否被分裂、合并或者刪除,其具體實(shí) 現(xiàn)過程包括如下子步驟: 步驟3. 2. 1 :若定位節(jié)點(diǎn)的Split指針為空,則被引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上被分 裂; 步驟3. 2. 2 :若定位節(jié)點(diǎn)的Merge_Next指針不為空,則被引用拓?fù)湓卦趨f(xié)同站點(diǎn)S」 上與其它拓?fù)湓睾喜ⅲ?步驟3. 2. 3 :若定位節(jié)點(diǎn)的狀態(tài)為INACTIVE且Merge_Next和Merge_Prev指針均不為 空,則被引用拓?fù)湓卦趨f(xié)同站點(diǎn)Sj上被刪除。
[0035] 其中獲得拓?fù)湓胤至押蟮娜我恍峦負(fù)湓?,其具體實(shí)現(xiàn)過程包括如下步驟: 步驟3. 3. 1 :獲得定位節(jié)點(diǎn)的Split指針?biāo)赶虻墓?jié)點(diǎn); 步驟3. 3. 2 :若節(jié)點(diǎn)狀態(tài)為INACTIVE,則獲得其當(dāng)前狀態(tài)為ACTIVE的兄弟節(jié)點(diǎn),并轉(zhuǎn)至 步驟3. 3. 3繼續(xù)判斷; 步驟3. 3. 3 :若節(jié)點(diǎn)的Split指針為空,則根據(jù)節(jié)點(diǎn)的pointer分量獲得分裂后的任一 拓?fù)湓兀?步驟3. 3. 4 :若節(jié)點(diǎn)的Split指針不空,則回轉(zhuǎn)執(zhí)行步驟3. 3. 1繼續(xù)判斷。
[0036] 其中獲得拓?fù)湓睾喜⒑笊傻男峦負(fù)湓?,其具體實(shí)現(xiàn)過程為: 步驟3. 4. 1 :獲得節(jié)點(diǎn)的Merge_Next指向的節(jié)點(diǎn); 步驟3. 4. 2 :若節(jié)點(diǎn)的Merge_Next指針為空,則根據(jù)節(jié)點(diǎn)的Pointer分量獲得合并后 的拓?fù)湓?;若?jié)點(diǎn)的Merge_Next不為空,則回轉(zhuǎn)執(zhí)行步驟3. 4. 1繼續(xù)判斷。
[0037] 其中獲得導(dǎo)致拓?fù)湓乇粍h除的造型操作,其具體實(shí)現(xiàn)過程為:根據(jù)節(jié)點(diǎn)的 DelOpIndex在造型操作歷史記錄中定位ARR_SEQ分量值與其相等的造型操作。
[0038] 步驟4 :在站點(diǎn)S]的拓?fù)湓亟Y(jié)構(gòu)樹中逐一定位被拓?fù)湟玫耐負(fù)湓?,判斷?拓?fù)湟猛負(fù)湓卦趨f(xié)同站點(diǎn)S]上是否被分裂、合并或者刪除,獲得拓?fù)湓胤至押笊?的所有拓?fù)湓兀湃敕至淹負(fù)湓丶疭plitEntityList(O)中,獲得導(dǎo)致拓?fù)湓乇粍h除 或合并的影響操作集EOS (0); 其中獲得拓?fù)湓胤至押笊傻乃型負(fù)湓?,其具體實(shí)現(xiàn)過程分為如下子步驟: 步驟4. 1. 1 :獲得定位節(jié)點(diǎn)的Split指針?biāo)赶虻墓?jié)點(diǎn); 步驟4. 1. 2 :若節(jié)點(diǎn)的Split指針為空,則將節(jié)點(diǎn)的pointer分量指向的拓?fù)湓胤湃?SplitEntityList(O)中;若節(jié)點(diǎn)的Next指針為空,貝U結(jié)束判斷;若Next指針指向節(jié)點(diǎn)不為 空,則根據(jù)步驟4. 1.2繼續(xù)判斷; 步驟4. 1. 3 :若節(jié)點(diǎn)的Split指針不空,則回轉(zhuǎn)執(zhí)行步驟4. 1. 1繼續(xù)判斷。
[0039] 其中獲得導(dǎo)致拓?fù)湓睾喜⒌挠绊懖僮骷疎0S (0),其具體實(shí)現(xiàn)過程分為如下子步 驟: 步驟4. 2. 1 :若節(jié)點(diǎn)的Merge_Prev指針不為空,則將Merge_Prev指針指向的節(jié)點(diǎn)設(shè)為 當(dāng)前節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)的Oplndex分量在造型操作歷史記錄中定位ARR_SEQ分量值與其相 等的造型操作放入E0S(0)中;若當(dāng)前節(jié)點(diǎn)的Merge_Prev指針指向?yàn)榭眨怳結(jié)束判斷;若不 為空,則回轉(zhuǎn)執(zhí)行步驟4. 2. 1繼續(xù)判斷; 步驟4. 2. 2 :若節(jié)點(diǎn)的Merge_Next指針不為空,則將Merge_Next指針指向的節(jié)點(diǎn)設(shè)為 當(dāng)前節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)的Oplndex分量在造型操作歷史記錄中定位ARR_SEQ分量值與其相 等的造型操作放入E0S (0)中;若當(dāng)前節(jié)點(diǎn)的Merge_Next指針指向?yàn)榭?則結(jié)束判斷;若不 為空,則回轉(zhuǎn)執(zhí)行步驟4. 2. 2繼續(xù)判斷。
[0040] 步驟5 :當(dāng)E0S(0)不為空時,交換造型操作0和影響操作集E0S(0)的執(zhí)行順序,并 將每一步的造型結(jié)果記錄到模型狀態(tài)流中,完成造型操作的執(zhí)行;當(dāng)SplitEntityList(O) 不為空時,對其中的每一個拓?fù)湓貓?zhí)行造型操作,并在針對最后一個拓?fù)湓氐脑煨筒?作執(zhí)行完畢后,將造型結(jié)果記錄到模型狀態(tài)流中,造型操作0執(zhí)行完畢。
[0041] 其中模型狀態(tài)流是一個記錄邊界模型進(jìn)化歷史的線性結(jié)構(gòu),模型狀態(tài)流由狀態(tài)節(jié) 點(diǎn)連接而成,節(jié)點(diǎn)和節(jié)點(diǎn)之間通過指針關(guān)聯(lián),每個普通狀態(tài)節(jié)點(diǎn)保存特定造型操作執(zhí)行完 畢以后的邊界模型狀態(tài),每一個狀態(tài)節(jié)點(diǎn)都被賦予一個狀態(tài)號,能夠根據(jù)狀態(tài)號直接獲得 任意時刻的邊界模型狀態(tài)。
[0042] 其中交換操作0和E0S (0)的執(zhí)行順序,其具體實(shí)現(xiàn)過程分為如下子步驟: 步驟5. 1 :根據(jù)E0S(0)中包含各操作的N0DE_SEQ分量的最小值N0DE_SEQmin,在模型狀 態(tài)流中定位狀態(tài)號為N0DE_SEQmin-l的狀態(tài)節(jié)點(diǎn),獲得狀態(tài)節(jié)點(diǎn)記錄的邊界模型狀態(tài); 步驟5. 2 :基于獲得的邊界模型狀態(tài)執(zhí)行造型操作0 ; 步驟5. 3 :對造型歷史記錄中的造型操作進(jìn)行判斷: 若存在節(jié)點(diǎn)N0DE_SEQ分量值與N0DE_SEQmin相等,則執(zhí)行該造型操作并結(jié)束; 步驟5. 4 :將N0DE_SEQmin的值增加 1,回轉(zhuǎn)執(zhí)行步驟5. 3繼續(xù)判斷。
[0043] 請見圖1,本實(shí)施例采用三個站點(diǎn)協(xié)同建模,以VC6. 0、ACIS 6. 0作為開發(fā)平臺進(jìn) 行實(shí)施,本實(shí)施例中,造型操作產(chǎn)生順序如下:0^0, 0,BaseBlock, 20, 30,40)由SiteO生成 創(chuàng)建基體特征。02,03 和 04 在 SiteO,Sitel 和 Site2 并發(fā)產(chǎn)生。02 : (0, 1,EXTRUSION, ON (E^ , ON ( E3), 10, 10, Sketch, ExtrusionPath)在基體特征上創(chuàng)建一個拉伸特征,特 征的定位需要引用拓?fù)溥匛i和E3的幾何信息,Skech表示創(chuàng)建的拉伸輪廓,ExtrusionPath 指定拉伸路徑。03:(1,0,ARRAY,ON(E1),ON( E3), HOLE, 3,35,0, 10, 20,35,20)在 基體特征上創(chuàng)建一個圓孔的陣列。這需要生成一個圓孔并以圓孔為操作對象完成陣列操 作,圓孔的定位需要引用民和^的幾何信息。陣列操作將生成另外3個圓孔。04(2,0, ROUNDEDGE, 0N(F1), 3)選擇基體特征的頂面Fi添加倒圓角特征,這實(shí)際上是選擇頂面的 4條邊界拓?fù)溥呑鳛椴僮鲗ο?。操作在其產(chǎn)生站點(diǎn)執(zhí)行后被發(fā)送至遠(yuǎn)端站點(diǎn)執(zhí)行。
[0044] 在SiteO上,并發(fā)操作的到達(dá)順序?yàn)椋?2,03,04。02的執(zhí)行并沒有引起邊界模型上 的拓?fù)湓匕l(fā)生變化。03執(zhí)行完畢后,基體特征頂面的拓?fù)溥匛i和E2分別被分裂稱為三條 新拓?fù)溥?。為保證04的正確執(zhí)行,分別獲得Ei和E2的分裂拓?fù)湓丶?,并針對集合中包?的分裂后拓?fù)湓赝瓿傻箞A角操作。
[0045] 在Sitel上,并發(fā)操作的到達(dá)順序?yàn)椋?3,02,04。03執(zhí)行結(jié)束后,頂面Fi的拓?fù)溥?Ei和E2被分裂。為保證02到達(dá)后的正確執(zhí)行,可以使用Ei分裂后的任一拓?fù)溥呑鳛槎ㄎ?信息。04到達(dá)后,分別獲得E1和E2的分裂拓?fù)湓丶?,并針對集合中包含的分裂后拓?fù)湓?素完成倒圓角操作。
[0046] 在Site2上,并發(fā)操作的到達(dá)順序?yàn)?04,03,02。04執(zhí)行結(jié)束后,基體頂面的4條 邊界邊{E1; E2,E3,E4}全部被刪除。操作03到達(dá)時,作為定位信息被引用的拓?fù)溥匛i和E 2 被刪除。因此需要交換03和04的執(zhí)行次序。同理,02到達(dá)時,作為定位信息被引用的拓?fù)?邊Ei和E2被刪除,則交換02和04的執(zhí)行次序。
[0047] 應(yīng)當(dāng)理解的是,本說明書未詳細(xì)闡述的部分均屬于現(xiàn)有技術(shù)。
[0048] 應(yīng)當(dāng)理解的是,上述針對較佳實(shí)施例的描述較為詳細(xì),并不能因此而認(rèn)為是對本 發(fā)明專利保護(hù)范圍的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明權(quán) 利要求所保護(hù)的范圍情況下,還可以做出替換或變形,均落入本發(fā)明的保護(hù)范圍之內(nèi),本發(fā) 明的請求保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
【權(quán)利要求】
1. 一種復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于,包括以下步驟: 步驟1:協(xié)同站ASi發(fā)出造型操作ο后,依據(jù)本地站點(diǎn)保存的拓?fù)湓亟Y(jié)構(gòu)樹獲得被引 用拓?fù)湓氐腎D信息,將造型操作0逐一發(fā)送到各個遠(yuǎn)端協(xié)同站點(diǎn); 步驟2 :協(xié)同站點(diǎn)S]接收到Si發(fā)出的造型操作0后,對造型操作0對應(yīng)的高級造型命 令文本進(jìn)行解析,分別獲得幾何引用的拓?fù)湓丶疓eoRefEntityList和拓?fù)湟玫耐負(fù)?兀素集 TopRefEntityList ; 步驟3 :在站點(diǎn)S]的拓?fù)湓亟Y(jié)構(gòu)樹中逐一定位被幾何引用的拓?fù)湓?,判斷被幾?引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上是否被分裂、合并或者刪除,獲得拓?fù)湓胤至押蟮娜我恍?拓?fù)湓丶昂喜⒑笸負(fù)湓?,獲得導(dǎo)致拓?fù)湓乇粍h除的造型操作,放入造型操作0的影 響操作集EOS (0)中; 步驟4 :在站點(diǎn)Sj的拓?fù)湓亟Y(jié)構(gòu)樹中逐一定位被拓?fù)湟玫耐負(fù)湓?,判斷被拓?fù)?引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上是否被分裂、合并或者刪除,獲得拓?fù)湓胤至押笊傻乃?有拓?fù)湓?,放入分裂拓?fù)湓丶疭plitEntityList (0)中,獲得導(dǎo)致拓?fù)湓乇粍h除或合 并的影響操作集E0S (0); 步驟5 :當(dāng)E0S (0)不為空時,交換造型操作0和影響操作集E0S (0)的執(zhí)行順序,并將 每一步的造型結(jié)果記錄到模型狀態(tài)流中,完成造型操作的執(zhí)行;當(dāng)SplitEntityList (0)不 為空時,對其中的每一個拓?fù)湓貓?zhí)行造型操作,并在針對最后一個拓?fù)湓氐脑煨筒僮?執(zhí)行完畢后,將造型結(jié)果記錄到模型狀態(tài)流中,造型操作0執(zhí)行完畢。
2.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟1 中所述的拓?fù)湓亟Y(jié)構(gòu)樹是一種記錄邊界模型上拓?fù)湓貭顟B(tài)及變化歷史的層次化結(jié)構(gòu), 拓?fù)湓亟Y(jié)構(gòu)樹的根節(jié)點(diǎn)為空,所有原始拓?fù)湓毓?jié)點(diǎn)都位于第二層,同一層的拓?fù)湓?節(jié)點(diǎn)為兄弟節(jié)點(diǎn)并通過NEXT指針連接,對任意節(jié)點(diǎn)P,若其Split指針不為空,則表示該節(jié) 點(diǎn)對應(yīng)的拓?fù)湓乇环至眩蝗羝錉顟B(tài)為INACTIVE且Merge_Next指針不為空,則節(jié)點(diǎn)P對 應(yīng)的拓?fù)湓睾喜⑷隡erge_Next指向節(jié)點(diǎn)對應(yīng)的拓?fù)湓兀蝗羝錉顟B(tài)為MERGED且Merge_ Next指針為空但Merge_Prev指針不為空,則節(jié)點(diǎn)P對應(yīng)于合并后拓?fù)湓兀S著各協(xié)同站 點(diǎn)對邊界模型的連續(xù)修改,拓?fù)湓氐臓顟B(tài)也在不斷發(fā)生變化。
3.根據(jù)權(quán)利要求1或2所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于: 步驟1中所述的依據(jù)本地站點(diǎn)保存的拓?fù)湓亟Y(jié)構(gòu)樹獲得被引用拓?fù)湓氐腎D信息,其具 體實(shí)現(xiàn)包括如下子步驟: 步驟1. 1 :根據(jù)用戶交互過程中獲得引用拓?fù)湓卦诒菊军c(diǎn)地址空間的指針信息,對 拓?fù)湓亟Y(jié)構(gòu)樹進(jìn)行遍歷,滿足節(jié)點(diǎn)的pointer分量值與指針值相等的節(jié)點(diǎn)即為拓?fù)湓?對應(yīng)節(jié)點(diǎn); 步驟1. 2 :對節(jié)點(diǎn)狀態(tài)進(jìn)行判斷; 若節(jié)點(diǎn)狀態(tài)為ACTIVE,且Merge_Prev指針為空,則被引用拓?fù)湓氐腎D信息即為節(jié)點(diǎn) 的ID分量值; 若節(jié)點(diǎn)狀態(tài)為ACTIVE,且Merge_Prev指針不為空,則執(zhí)行步驟1. 3被引用拓?fù)湓氐?ID /[目息; 步驟1. 3 :將節(jié)點(diǎn)的ID分量值放入被引用拓?fù)湓氐腎D信息中,Merge_Prev指針指向 節(jié)點(diǎn)為CurrentNode,并將其ID分量值放入被引用拓?fù)湓氐腎D信息中,若CurrentNode 的Merge_Prev指針不為空,則回轉(zhuǎn)執(zhí)行步驟1. 3繼續(xù)遍歷;若為空,則結(jié)束遍歷。
4.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟 1中所述的將造型操作0逐一發(fā)送到各個遠(yuǎn)端協(xié)同站點(diǎn),其具體實(shí)現(xiàn)是:將造型操作0的站 點(diǎn)標(biāo)識、操作在站點(diǎn)產(chǎn)生的順序號、以字符串的形式記錄造型操作名稱、被幾何引用的拓?fù)?兀素的ID信息列表、幾何引用參數(shù)列表、被拓?fù)湟玫耐負(fù)湄K氐腎D信息列表、拓?fù)湟?參數(shù)列表、造型操作到達(dá)任一協(xié)同站點(diǎn)的順序號以及造型操作在任一協(xié)同站點(diǎn)執(zhí)行的順序 號的造型操作發(fā)送至各遠(yuǎn)端站點(diǎn)。
5.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟3 中所述的在站點(diǎn)S]的拓?fù)湓亟Y(jié)構(gòu)樹中逐一定位被幾何引用的拓?fù)湓兀渚唧w實(shí)現(xiàn)過程 包括如下子步驟: 步驟3. 1. 1 :得到GeoRefEntityList中包含的第一個拓?fù)湓氐腎D信息; 步驟3. 1. 2 :對ID字符串進(jìn)行解析,并判斷 若ID長度為1,則直接根據(jù)ID信息直接在拓?fù)湓亟Y(jié)構(gòu)樹中定位對應(yīng)節(jié)點(diǎn); 若ID長度大于1,則根據(jù)ID信息中的第一個分量在拓?fù)湄K亟Y(jié)構(gòu)樹中定位節(jié)點(diǎn)。
6.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟 3中所述判斷被引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上是否被分裂、合并或者刪除,其具體實(shí)現(xiàn)過程 包括如下子步驟: 步驟3. 2. 1 :若定位節(jié)點(diǎn)的Split指針為空,則被引用拓?fù)湓卦趨f(xié)同站點(diǎn)S]上被分 裂; 步驟3. 2. 2 :若定位節(jié)點(diǎn)的Merge_Next指針不為空,則被引用拓?fù)湓卦趨f(xié)同站點(diǎn)S」 上與其它拓?fù)湓睾喜ⅲ? 步驟3. 2. 3 :若定位節(jié)點(diǎn)的狀態(tài)為INACTIVE且Merge_Next和Merge_Prev指針均不為 空,則被引用拓?fù)湓卦趨f(xié)同站點(diǎn)Sj上被刪除。
7.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟3 中所述獲得拓?fù)湓胤至押蟮娜我恍峦負(fù)湓?,其具體實(shí)現(xiàn)過程包括如下步驟: 步驟3. 3. 1 :獲得定位節(jié)點(diǎn)的Split指針?biāo)赶虻墓?jié)點(diǎn); 步驟3. 3. 2 :若節(jié)點(diǎn)狀態(tài)為INACTIVE,則獲得其當(dāng)前狀態(tài)為ACTIVE的兄弟節(jié)點(diǎn),并轉(zhuǎn)至 步驟3. 3. 3繼續(xù)判斷; 步驟3. 3. 3 :若節(jié)點(diǎn)的Split指針為空,則根據(jù)節(jié)點(diǎn)的pointer分量獲得分裂后的任一 拓?fù)湓兀? 步驟3. 3. 4 :若節(jié)點(diǎn)的Split指針不空,則回轉(zhuǎn)執(zhí)行步驟3. 3. 1繼續(xù)判斷。
8.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟3 中所述獲得拓?fù)湓睾喜⒑笊傻男峦負(fù)湓?,其具體實(shí)現(xiàn)過程為: 步驟3. 4. 1 :獲得節(jié)點(diǎn)的Merge_Next指向的節(jié)點(diǎn); 步驟3. 4. 2 :若節(jié)點(diǎn)的Merge_Next指針為空,則根據(jù)節(jié)點(diǎn)的Pointer分量獲得合并后 的拓?fù)湓?;若?jié)點(diǎn)的Merge_Next不為空,則回轉(zhuǎn)執(zhí)行步驟3. 4. 1繼續(xù)判斷。
9.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟3 中所述 獲得導(dǎo)致拓?fù)湓乇粍h除的造型操作,其具體實(shí)現(xiàn)過程為:根據(jù)節(jié)點(diǎn)的DelOpIndex在 造型操作歷史記錄中定位ARR_SEQ分量值與其相等的造型操作。
10.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟 4中所述獲得拓?fù)湓胤至押笊傻乃型負(fù)湓?,其具體實(shí)現(xiàn)過程分為如下子步驟: 步驟4. 1. 1 :獲得定位節(jié)點(diǎn)的Split指針?biāo)赶虻墓?jié)點(diǎn); 步驟4. 1. 2 :若節(jié)點(diǎn)的Split指針為空,則將節(jié)點(diǎn)的pointer分量指向的拓?fù)湓胤湃?SplitEntityList(O)中;若節(jié)點(diǎn)的Next指針為空,貝U結(jié)束判斷;若Next指針指向節(jié)點(diǎn)不為 空,則根據(jù)步驟4. 1.2繼續(xù)判斷; 步驟4. 1. 3 :若節(jié)點(diǎn)的Split指針不空,則回轉(zhuǎn)執(zhí)行步驟4. 1. 1繼續(xù)判斷。
11.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟 4中所述獲得導(dǎo)致拓?fù)湓睾喜⒌挠绊懖僮骷疎OS (0),其具體實(shí)現(xiàn)過程分為如下子步驟: 步驟4. 2. 1 :若節(jié)點(diǎn)的Merge_Prev指針不為空,則將Merge_Prev指針指向的節(jié)點(diǎn)設(shè)為 當(dāng)前節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)的Oplndex分量在造型操作歷史記錄中定位ARR_SEQ分量值與其相 等的造型操作放入E0S(0)中;若當(dāng)前節(jié)點(diǎn)的Merge_Prev指針指向?yàn)榭?,貝U結(jié)束判斷;若不 為空,則回轉(zhuǎn)執(zhí)行步驟4. 2. 1繼續(xù)判斷; 步驟4. 2. 2 :若節(jié)點(diǎn)的Merge_Next指針不為空,則將Merge_Next指針指向的節(jié)點(diǎn)設(shè)為 當(dāng)前節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)的Oplndex分量在造型操作歷史記錄中定位ARR_SEQ分量值與其相 等的造型操作放入E0S (0)中;若當(dāng)前節(jié)點(diǎn)的Merge_Next指針指向?yàn)榭?則結(jié)束判斷;若不 為空,則回轉(zhuǎn)執(zhí)行步驟4. 2. 2繼續(xù)判斷。
12.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟 5所述的模型狀態(tài)流是一個記錄邊界模型進(jìn)化歷史的線性結(jié)構(gòu),模型狀態(tài)流由狀態(tài)節(jié)點(diǎn)連 接而成,節(jié)點(diǎn)和節(jié)點(diǎn)之間通過指針關(guān)聯(lián),每個普通狀態(tài)節(jié)點(diǎn)保存特定造型操作執(zhí)行完畢以 后的邊界模型狀態(tài),每一個狀態(tài)節(jié)點(diǎn)都被賦予一個狀態(tài)號,能夠根據(jù)狀態(tài)號直接獲得任意 時刻的邊界模型狀態(tài)。
13.根據(jù)權(quán)利要求1所述的復(fù)制式協(xié)同CAD系統(tǒng)中的并發(fā)控制方法,其特征在于:步驟 5所述的交換操作0和E0S (0)的執(zhí)行順序,其具體實(shí)現(xiàn)過程分為如下子步驟: 步驟5. 1 :根據(jù)E0S(0)中包含各操作的N0DE_SEQ分量的最小值N0DE_SEQmin,在模型狀 態(tài)流中定位狀態(tài)號為N0DE_SEQmin-l的狀態(tài)節(jié)點(diǎn),獲得狀態(tài)節(jié)點(diǎn)記錄的邊界模型狀態(tài); 步驟5. 2 :基于獲得的邊界模型狀態(tài)執(zhí)行造型操作0 ; 步驟5. 3 :對造型歷史記錄中的造型操作進(jìn)行判斷: 若存在節(jié)點(diǎn)N0DE_SEQ分量值與N0DE_SEQmin相等,則執(zhí)行該造型操作并結(jié)束; 步驟5. 4 :將N0DE_SEQmin的值增加 1,回轉(zhuǎn)執(zhí)行步驟5. 3繼續(xù)判斷。
【文檔編號】G06F9/38GK104142813SQ201410383044
【公開日】2014年11月12日 申請日期:2014年8月6日 優(yōu)先權(quán)日:2014年8月6日
【發(fā)明者】何發(fā)智, 程媛, 吳亦奇, 蔡維緯 申請人:武漢大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1